diff --git a/.github/workflows/chef.yaml b/.github/workflows/chef.yaml index b403dffe758a52..70cb720eaa9d29 100644 --- a/.github/workflows/chef.yaml +++ b/.github/workflows/chef.yaml @@ -56,7 +56,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build-esp32:54 + image: ghcr.io/project-chip/chip-build-esp32:65 options: --user root steps: @@ -77,7 +77,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build-nrf-platform:54 + image: ghcr.io/project-chip/chip-build-nrf-platform:65 options: --user root steps: diff --git a/.github/workflows/examples-esp32.yaml b/.github/workflows/examples-esp32.yaml index 92415c0ce96930..2ac5757d6fee0d 100644 --- a/.github/workflows/examples-esp32.yaml +++ b/.github/workflows/examples-esp32.yaml @@ -36,7 +36,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build-esp32:54 + image: ghcr.io/project-chip/chip-build-esp32:65 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" @@ -126,7 +126,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build-esp32:54 + image: ghcr.io/project-chip/chip-build-esp32:65 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" diff --git a/.github/workflows/examples-nrfconnect.yaml b/.github/workflows/examples-nrfconnect.yaml index c8d997d5ca6631..591641c08e74eb 100644 --- a/.github/workflows/examples-nrfconnect.yaml +++ b/.github/workflows/examples-nrfconnect.yaml @@ -39,7 +39,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build-nrf-platform:54 + image: ghcr.io/project-chip/chip-build-nrf-platform:65 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" @@ -78,119 +78,119 @@ jobs: - name: Build example nRF Connect SDK Lock App on nRF52840 DK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh lock-app nrf52840dk_nrf52840 + scripts/examples/nrfconnect_example.sh lock-app nrf52840dk/nrf52840 .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf52840dk_nrf52840 lock-app \ - examples/lock-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/lock-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Lighting App on nRF52840 Dongle if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh lighting-app nrf52840dongle_nrf52840 -DCONF_FILE=prj_no_dfu.conf -DCONFIG_CHIP_ROTATING_DEVICE_ID=y + scripts/examples/nrfconnect_example.sh lighting-app nrf52840dongle/nrf52840 -DCONFIG_CHIP_ROTATING_DEVICE_ID=y .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf52840dongle_nrf52840 lighting-app \ - examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/lighting-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Lighting App on nRF52840 DK with RPC if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh lighting-app nrf52840dk_nrf52840 -DOVERLAY_CONFIG=rpc.overlay + scripts/examples/nrfconnect_example.sh lighting-app nrf52840dk/nrf52840 -DOVERLAY_CONFIG=rpc.overlay .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf52840dk_nrf52840+rpc lighting-app \ - examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/lighting-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Light Switch App on nRF52840 DK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh light-switch-app nrf52840dk_nrf52840 + scripts/examples/nrfconnect_example.sh light-switch-app nrf52840dk/nrf52840 .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf52840dk_nrf52840 light-switch-app \ - examples/light-switch-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/light-switch-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Shell on nRF52840 DK if: github.event_name == 'push' || steps.changed_paths.outputs.shell == 'true' run: | - scripts/examples/nrfconnect_example.sh shell nrf52840dk_nrf52840 + scripts/examples/nrfconnect_example.sh shell nrf52840dk/nrf52840 .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf52840dk_nrf52840 shell \ - examples/shell/nrfconnect/build/zephyr/zephyr.elf \ + examples/shell/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Pump App on nRF52840 DK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh pump-app nrf52840dk_nrf52840 + scripts/examples/nrfconnect_example.sh pump-app nrf52840dk/nrf52840 .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf52840dk_nrf52840 pump-app \ - examples/pump-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/pump-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Pump Controller App on nRF52840 DK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh pump-controller-app nrf52840dk_nrf52840 + scripts/examples/nrfconnect_example.sh pump-controller-app nrf52840dk/nrf52840 .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf52840dk_nrf52840 pump-controller-app \ - examples/pump-controller-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/pump-controller-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK All Clusters App on nRF52840 DK run: | - scripts/examples/nrfconnect_example.sh all-clusters-app nrf52840dk_nrf52840 + scripts/examples/nrfconnect_example.sh all-clusters-app nrf52840dk/nrf52840 .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf52840dk_nrf52840 all-clusters-app \ - examples/all-clusters-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/all-clusters-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK All Clusters Minimal App on nRF52840 DK run: | - scripts/examples/nrfconnect_example.sh all-clusters-minimal-app nrf52840dk_nrf52840 -DCONF_FILE=prj_dfu.conf + scripts/examples/nrfconnect_example.sh all-clusters-minimal-app nrf52840dk/nrf52840 -DFILE_SUFFIX=dfu .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf52840dk_nrf52840 all-clusters-minimal-app \ - examples/all-clusters-minimal-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/all-clusters-minimal-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Lock App on nRF5340 DK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh lock-app nrf5340dk_nrf5340_cpuapp + scripts/examples/nrfconnect_example.sh lock-app nrf5340dk/nrf5340/cpuapp .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf5340dk_nrf5340_cpuapp lock-app \ - examples/lock-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/lock-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Lighting App on nRF5340 DK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh lighting-app nrf5340dk_nrf5340_cpuapp + scripts/examples/nrfconnect_example.sh lighting-app nrf5340dk/nrf5340/cpuapp .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf5340dk_nrf5340_cpuapp lighting-app \ - examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/lighting-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Lock App on nRF7002 PDK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh lock-app nrf7002dk_nrf5340_cpuapp + scripts/examples/nrfconnect_example.sh lock-app nrf7002dk/nrf5340/cpuapp .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf7002dk_nrf5340_cpuapp lock-app \ - examples/lock-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/lock-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Light Switch App on nRF7002 PDK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh light-switch-app nrf7002dk_nrf5340_cpuapp + scripts/examples/nrfconnect_example.sh light-switch-app nrf7002dk/nrf5340/cpuapp .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf7002dk_nrf5340_cpuapp light-switch-app \ - examples/light-switch-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/light-switch-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK Lighting App on nRF7002 PDK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' run: | - scripts/examples/nrfconnect_example.sh lighting-app nrf7002dk_nrf5340_cpuapp + scripts/examples/nrfconnect_example.sh lighting-app nrf7002dk/nrf5340/cpuapp .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf7002dk_nrf5340_cpuapp lighting-app \ - examples/light-switch-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/light-switch-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Build example nRF Connect SDK All Clusters App on nRF7002 PDK run: | - scripts/examples/nrfconnect_example.sh all-clusters-app nrf7002dk_nrf5340_cpuapp -DCONF_FILE=prj_release.conf + scripts/examples/nrfconnect_example.sh all-clusters-app nrf7002dk/nrf5340/cpuapp -DFILE_SUFFIX=release .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ nrfconnect nrf7002dk_nrf5340_cpuapp all-clusters-app \ - examples/all-clusters-app/nrfconnect/build/zephyr/zephyr.elf \ + examples/all-clusters-app/nrfconnect/build/nrfconnect/zephyr/zephyr.elf \ /tmp/bloat_reports/ - name: Run unit tests for Zephyr native_posix_64 platform if: github.event_name == 'push' || steps.changed_paths.outputs.tests == 'true' || steps.changed_paths.outputs.nrfconnect == 'true' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 060556001e98c7..fb37a3cfec4f01 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -98,7 +98,6 @@ jobs: --known-failure controller/ExamplePersistentStorage.cpp \ --known-failure controller/ExamplePersistentStorage.h \ --known-failure app/AttributeAccessToken.h \ - --known-failure app/CommandHandlerInterface.h \ --known-failure app/CommandResponseSender.h \ --known-failure app/CommandSenderLegacyCallback.h \ --known-failure app/ReadHandler.h \ diff --git a/.github/workflows/qemu.yaml b/.github/workflows/qemu.yaml index bff12a5999586e..d5a03d2667dff7 100644 --- a/.github/workflows/qemu.yaml +++ b/.github/workflows/qemu.yaml @@ -40,7 +40,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build-esp32-qemu:54 + image: ghcr.io/project-chip/chip-build-esp32-qemu:65 volumes: - "/tmp/log_output:/tmp/test_logs" diff --git a/.github/workflows/release_artifacts.yaml b/.github/workflows/release_artifacts.yaml index be862403037423..efd9ea7c3deba8 100644 --- a/.github/workflows/release_artifacts.yaml +++ b/.github/workflows/release_artifacts.yaml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest container: - image: ghcr.io/project-chip/chip-build-esp32:54 + image: ghcr.io/project-chip/chip-build-esp32:65 steps: - name: Checkout diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index af4ba212a1bd26..35b1bc219c785c 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -577,6 +577,8 @@ jobs: scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_RVCOPSTATE_2_1.py' scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_RVCOPSTATE_2_3.py' scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_RVCOPSTATE_2_4.py' + scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_SC_7_1.py' + scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_SWTCH.py' scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TestConformanceSupport.py" --script-args "--trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"' scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TestMatterTestingSupport.py" --script-args "--trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"' scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TestSpecParsingSupport.py" --script-args "--trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"' @@ -586,6 +588,7 @@ jobs: scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestSpecParsingDeviceType.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestConformanceSupport.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/test_testing/test_IDM_10_4.py' + scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/test_testing/test_TC_SC_7_1.py' - name: Uploading core files uses: actions/upload-artifact@v4 diff --git a/.gitmodules b/.gitmodules index d23157baea4481..1f4129f9f2df9d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -97,11 +97,6 @@ path = third_party/infineon/psoc6/psoc6_sdk/libs/abstraction-rtos url = https://github.com/Infineon/abstraction-rtos platforms = infineon -[submodule "p6/bluetooth-freertos"] - path = third_party/infineon/psoc6/psoc6_sdk/libs/bluetooth-freertos - url = https://github.com/Infineon/bluetooth-freertos - branch = v2.X - platforms = infineon [submodule "p6/btstack"] path = third_party/infineon/psoc6/psoc6_sdk/libs/btstack url = https://github.com/Infineon/btstack @@ -134,10 +129,6 @@ path = third_party/infineon/psoc6/psoc6_sdk/libs/mtb-pdl-cat1 url = https://github.com/Infineon/mtb-pdl-cat1 platforms = infineon -[submodule "p6/psoc6cm0p"] - path = third_party/infineon/psoc6/psoc6_sdk/libs/psoc6cm0p - url = https://github.com/Infineon/psoc6cm0p - platforms = infineon [submodule "p6/whd-bsp-integration"] path = third_party/infineon/psoc6/psoc6_sdk/libs/whd-bsp-integration url = https://github.com/Infineon/whd-bsp-integration @@ -185,10 +176,6 @@ [submodule "third_party/jsoncpp/repo"] path = third_party/jsoncpp/repo url = https://github.com/open-source-parsers/jsoncpp.git -[submodule "third_party/p6/p6_sdk/libs/anycloud-ota"] - path = third_party/infineon/psoc6/psoc6_sdk/libs/anycloud-ota - url = https://github.com/Infineon/anycloud-ota - platforms = infineon [submodule "third_party/mbed-mcu-boot/repo"] path = third_party/mbed-mcu-boot/repo url = https://github.com/ATmobica/mcuboot.git @@ -312,10 +299,6 @@ url = https://github.com/STMicroelectronics/STM32CubeWB.git branch = v1.18.0 platforms = stm32 -[submodule "p6/lwip-network-interface-integration"] - path = third_party/infineon/psoc6/psoc6_sdk/libs/lwip-network-interface-integration - url = https://github.com/Infineon/lwip-network-interface-integration.git - platforms = infineon [submodule "third_party/infineon/trustm/optiga-trust-m"] path = third_party/infineon/trustm/optiga-trust-m url = https://github.com/Infineon/optiga-trust-m.git @@ -326,3 +309,27 @@ url = https://github.com/NXP/nxp_matter_support.git branch = master platforms = nxp +[submodule "third_party/infineon/psoc6/psoc6_sdk/libs/btstack-integration"] + path = third_party/infineon/psoc6/psoc6_sdk/libs/btstack-integration + url = https://github.com/Infineon/btstack-integration.git + platforms = infineon +[submodule "third_party/infineon/psoc6/psoc6_sdk/libs/cat1cm0p"] + path = third_party/infineon/psoc6/psoc6_sdk/libs/cat1cm0p + url = https://github.com/Infineon/cat1cm0p.git + platforms = infineon +[submodule "third_party/infineon/psoc6/psoc6_sdk/libs/cmsis"] + path = third_party/infineon/psoc6/psoc6_sdk/libs/cmsis + url = https://github.com/Infineon/cmsis.git + platforms = infineon +[submodule "third_party/infineon/psoc6/psoc6_sdk/libs/ota-bootloader-abstraction"] + path = third_party/infineon/psoc6/psoc6_sdk/libs/ota-bootloader-abstraction + url = https://github.com/Infineon/ota-bootloader-abstraction.git + platforms = infineon +[submodule "third_party/infineon/psoc6/psoc6_sdk/libs/ota-update"] + path = third_party/infineon/psoc6/psoc6_sdk/libs/ota-update + url = https://github.com/Infineon/ota-update.git + platforms = infineon +[submodule "third_party/infineon/psoc6/psoc6_sdk/libs/lwip-network-interface-integration"] + path = third_party/infineon/psoc6/psoc6_sdk/libs/lwip-network-interface-integration + url = https://github.com/Infineon/lwip-network-interface-integration.git + platforms = infineon diff --git a/config/nrfconnect/.nrfconnect-recommended-revision b/config/nrfconnect/.nrfconnect-recommended-revision index 8a965c116821a9..873ca0fa627c90 100644 --- a/config/nrfconnect/.nrfconnect-recommended-revision +++ b/config/nrfconnect/.nrfconnect-recommended-revision @@ -1 +1 @@ -v2.6.0 +v2.7.0 diff --git a/config/nrfconnect/app/check-sysbuild-use.cmake b/config/nrfconnect/app/check-sysbuild-use.cmake new file mode 100644 index 00000000000000..bd70da84a7479d --- /dev/null +++ b/config/nrfconnect/app/check-sysbuild-use.cmake @@ -0,0 +1,31 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# This script checks is sysbuild is used to build the target. If not, it prints the fatal error +# message, as the nRF Connect examples do not support deprecated child-image approach anymore. + +if (NOT SYSBUILD) + message(FATAL_ERROR " ###################################################################################\n" + " # This example does not support child-image approach anymore. #\n" + " # The nRF Connect SDK platform marked child-image approach as deprecated #\n" + " # from v2.7.0 and it is recommended to use the new sysbuild solution. #\n" + " # #\n" + " # To build this application with sysbuild support enabled, #\n" + " # you have to add --sysbuild flag to the build command, for example: #\n" + " # #\n" + " # west build -b --sysbuild #\n" + " ###################################################################################\n") +endif() diff --git a/config/nrfconnect/app/flashing.cmake b/config/nrfconnect/app/flashing.cmake index c6c90ef0270986..578d47a7765c49 100644 --- a/config/nrfconnect/app/flashing.cmake +++ b/config/nrfconnect/app/flashing.cmake @@ -40,9 +40,9 @@ add_custom_command(OUTPUT "${FLASHBUNDLE_FLASHER_PLATFORM}" VERBATIM) if (merged_hex_to_flash) - set(flashbundle_hex_to_copy "zephyr/${merged_hex_to_flash}") + set(flashbundle_hex_to_copy "${merged_hex_to_flash}") else() - set(flashbundle_hex_to_copy "zephyr/${KERNEL_HEX_NAME}") + set(flashbundle_hex_to_copy "../merged.hex") endif() add_custom_command(OUTPUT "${FLASHBUNDLE_FIRMWARE}" diff --git a/config/nrfconnect/chip-module/CMakeLists.txt b/config/nrfconnect/chip-module/CMakeLists.txt index 29560db74f38cc..bccd16b1416160 100644 --- a/config/nrfconnect/chip-module/CMakeLists.txt +++ b/config/nrfconnect/chip-module/CMakeLists.txt @@ -229,7 +229,7 @@ endif() # Define 'chip-ota-image' target for building CHIP OTA image # ============================================================================== -if (CONFIG_CHIP_OTA_IMAGE_BUILD) +if (CONFIG_CHIP_OTA_IMAGE_BUILD AND NOT SYSBUILD) chip_ota_image(chip-ota-image INPUT_FILES ${PROJECT_BINARY_DIR}/dfu_multi_image.bin OUTPUT_FILE ${PROJECT_BINARY_DIR}/${CONFIG_CHIP_OTA_IMAGE_FILE_NAME} @@ -240,7 +240,7 @@ endif() # Define 'factory_data' target for generating a factory data partition # ============================================================================== -if (CONFIG_CHIP_FACTORY_DATA_BUILD) +if(CONFIG_CHIP_FACTORY_DATA_BUILD AND (NOT SYSBUILD OR NOT CONFIG_PARTITION_MANAGER_ENABLED)) nrfconnect_generate_factory_data() endif() diff --git a/config/nrfconnect/chip-module/Kconfig b/config/nrfconnect/chip-module/Kconfig index d4ccccd983ed3f..2fd4f45de4b60c 100644 --- a/config/nrfconnect/chip-module/Kconfig +++ b/config/nrfconnect/chip-module/Kconfig @@ -34,15 +34,6 @@ config CHIP_NRF_PLATFORM config CHIP_DEVICE_VENDOR_NAME default "Nordic Semiconductor ASA" -config CHIP_APP_LOG_LEVEL - int "Logging level in application" - default LOG_DEFAULT_LEVEL - depends on LOG - help - Sets the logging level in the Matter application. Use this configuration - option only within the application. To set the logging level for the - Matter stack, use the MATTER_LOG_LEVEL configuration option. - config CHIP_NFC_COMMISSIONING bool "Share onboarding payload in NFC tag" default n @@ -306,4 +297,9 @@ config CHIP_PERSISTENT_SUBSCRIPTIONS # selecting experimental for this feature since there is an issue with multiple controllers. select EXPERIMENTAL +config CHIP_ENABLE_BDX_LOG_TRANSFER + bool "Enable BDX transfer for diagnostic logs" + help + Enables the BDX protocol for diagnostics log transfer purposes. + endif # CHIP diff --git a/config/nrfconnect/chip-module/Kconfig.defaults b/config/nrfconnect/chip-module/Kconfig.defaults index 218f39a3fa8f8a..a2e0a2ba5ee36a 100644 --- a/config/nrfconnect/chip-module/Kconfig.defaults +++ b/config/nrfconnect/chip-module/Kconfig.defaults @@ -40,9 +40,6 @@ config ASSERT_NO_MSG_INFO config HW_STACK_PROTECTION default y -config FPU - default y - config POSIX_MAX_FDS default 16 @@ -204,12 +201,12 @@ config CHIP_QSPI_NOR # nRF7002DK uses SPI NOR external flash -if BOARD_NRF7002DK_NRF5340_CPUAPP || BOARD_NRF7002DK_NRF7001_NRF5340_CPUAPP +if BOARD_NRF7002DK_NRF5340_CPUAPP || BOARD_NRF7002DK_NRF7001_NRF5340_CPUAPP || BOARD_NRF54L15PDK_NRF54L15_CPUAPP config CHIP_SPI_NOR default y -endif # BOARD_NRF7002DK_NRF5340_CPUAPP || BOARD_NRF7002DK_NRF7001_NRF5340_CPUAPP +endif # BOARD_NRF7002DK_NRF5340_CPUAPP || BOARD_NRF7002DK_NRF7001_NRF5340_CPUAPP || BOARD_NRF54L15PDK_NRF54L15_CPUAPP config BOOT_IMAGE_ACCESS_HOOKS default y if SOC_SERIES_NRF53X @@ -385,9 +382,6 @@ config MBEDTLS_ECP_DP_SECP256R1_ENABLED endif # !CHIP_CRYPTO_PSA -config MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG - default n if CHIP_WIFI - config MBEDTLS_SSL_OUT_CONTENT_LEN default 900 if CHIP_WIFI @@ -423,6 +417,9 @@ config MBEDTLS_SSL_SRV_C config MBEDTLS_SSL_COOKIE_C default n +config MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH + default y + # ============================================================================== # Logging configuration # ============================================================================== diff --git a/config/nrfconnect/chip-module/Kconfig.features b/config/nrfconnect/chip-module/Kconfig.features index 667894c7696d85..fbae62d28e1f24 100644 --- a/config/nrfconnect/chip-module/Kconfig.features +++ b/config/nrfconnect/chip-module/Kconfig.features @@ -60,6 +60,7 @@ config CHIP_SPI_NOR imply SPI_NOR imply MULTITHREADING imply PM_OVERRIDE_EXTERNAL_DRIVER_CHECK + imply MCUMGR_GRP_IMG_ALLOW_ERASE_PENDING help Enables SPI NOR flash with a set of options for configuring pages and buffer sizes. @@ -149,7 +150,7 @@ endif config CHIP_DFU_OVER_BT_SMP bool "Enable DFU over Bluetooth LE SMP feature set" imply CHIP_QSPI_NOR if BOARD_NRF5340DK_NRF5340_CPUAPP || BOARD_NRF52840DK_NRF52840 - imply CHIP_SPI_NOR if BOARD_NRF7002DK_NRF5340_CPUAPP || BOARD_NRF7002DK_NRF7001_NRF5340_CPUAPP + imply CHIP_SPI_NOR if BOARD_NRF7002DK_NRF5340_CPUAPP || BOARD_NRF7002DK_NRF7001_NRF5340_CPUAPP || BOARD_NRF54L15PDK_NRF54L15_CPUAPP imply BOOTLOADER_MCUBOOT select MCUMGR select MCUMGR_TRANSPORT_BT diff --git a/config/nrfconnect/chip-module/Kconfig.hci_ipc.defaults b/config/nrfconnect/chip-module/Kconfig.hci_ipc.defaults deleted file mode 100644 index bede85fd2541d3..00000000000000 --- a/config/nrfconnect/chip-module/Kconfig.hci_ipc.defaults +++ /dev/null @@ -1,83 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# The purpose of this file is to define new default values of settings used when building hci_ipc child image for Matter samples. - -config LOG - default n - -config HEAP_MEM_POOL_SIZE - default 8192 - -config MAIN_STACK_SIZE - default 2048 - -config SYSTEM_WORKQUEUE_STACK_SIZE - default 2048 - -config BT - default y - -config BT_HCI_RAW - default y - -config BT_MAX_CONN - default 1 - -config BT_PERIPHERAL - default y - -config BT_CENTRAL - default n - -config BT_BUF_ACL_RX_SIZE - default 502 - -config BT_BUF_ACL_TX_SIZE - default 251 - -config BT_CTLR_DATA_LENGTH_MAX - default 251 - -config BT_CTLR_ASSERT_HANDLER - default y - -config BT_HCI_RAW_RESERVE - default 1 - -# Disable 2M PHY due to interoperability issues. -config BT_CTLR_PHY_2M - default n - -# Workaround: Unable to allocate command buffer when using K_NO_WAIT since -# Host number of completed commands does not follow normal flow control. -config BT_BUF_CMD_TX_COUNT - default 10 - -config ASSERT - default y - -config DEBUG_INFO - default y - -config EXCEPTION_STACK_TRACE - default y - -config IPC_SERVICE - default y - -config MBOX - default y diff --git a/config/nrfconnect/chip-module/Kconfig.mcuboot.defaults b/config/nrfconnect/chip-module/Kconfig.mcuboot.defaults deleted file mode 100644 index 11c7dd0320f464..00000000000000 --- a/config/nrfconnect/chip-module/Kconfig.mcuboot.defaults +++ /dev/null @@ -1,138 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# The purpose of this file is to define new default values of settings used when building mcuboot child image for Matter samples. - -config MAIN_STACK_SIZE - default 10240 - -config BOOT_ENCRYPT_IMAGE - default n - -config BOOT_BOOTSTRAP - default n - -config PM - default n - -config FLASH - default y - -config FPROTECT - default y - -choice LIBC_IMPLEMENTATION - default MINIMAL_LIBC -endchoice - -# nRF7002DK uses SPI NOR external flash -if BOARD_NRF7002DK_NRF5340_CPUAPP || BOARD_NRF7002DK_NRF7001_NRF5340_CPUAPP - -config SPI - default y - -choice SPI_NOR_SFDP - default SPI_NOR_SFDP_DEVICETREE -endchoice - -config SPI_NOR_FLASH_LAYOUT_PAGE_SIZE - default 4096 - -config MULTITHREADING - default y - -config PM_OVERRIDE_EXTERNAL_DRIVER_CHECK - default y - -endif - -# All boards beside nRF7002DK use QSPI NOR external flash -if BOARD_NRF5340DK_NRF5340_CPUAPP || BOARD_NRF52840DK_NRF52840 - -config NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE - default 4096 - -config NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE - default 16 - -endif - -config BOOT_MAX_IMG_SECTORS - default 256 - -config LOG - default n - -config CONSOLE_HANDLER - default n - -config BOOT_BANNER - default n - -config TIMESLICING - default n - -config RESET_ON_FATAL_ERROR - default n - -config MULTITHREADING - default n - -config TICKLESS_KERNEL - default n - -config TIMEOUT_64BIT - default n - -config NRF_ENABLE_ICACHE - default n - -if SOC_SERIES_NRF53X - -# The following configurations are required to support simultaneous multi image update -config PCD_APP - default y - -config UPDATEABLE_IMAGE_NUMBER - default 2 - -# Multi-image updates do not support image swapping yet. -choice BOOT_IMAGE_UPGRADE_MODE - default BOOT_UPGRADE_ONLY -endchoice - -# The network core cannot access external flash directly. The flash simulator must be used to -# provide a memory region that is used to forward the new firmware to the network core. -config FLASH_SIMULATOR - default y - -config FLASH_SIMULATOR_DOUBLE_WRITES - default y - -config FLASH_SIMULATOR_STATS - default n - -# Enable custom command to erase settings partition. -config ENABLE_MGMT_PERUSER - default y - -config ZCBOR - default y - -config BOOT_MGMT_CUSTOM_STORAGE_ERASE - default y - -endif # SOC_SERIES_NRF53X diff --git a/config/nrfconnect/chip-module/Kconfig.mcuboot.root b/config/nrfconnect/chip-module/Kconfig.mcuboot.root deleted file mode 100644 index e8756636dfd66d..00000000000000 --- a/config/nrfconnect/chip-module/Kconfig.mcuboot.root +++ /dev/null @@ -1,21 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# The purpose of this file is to create a wrapper Kconfig file that will be set as -# mcuboot_KCONFIG_ROOT and processed before any other Kconfig for mcuboot child image. - -rsource "Kconfig.mcuboot.defaults" -source "${ZEPHYR_BASE}/../bootloader/mcuboot/boot/zephyr/Kconfig" diff --git a/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.defaults b/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.defaults deleted file mode 100644 index 3d40e47429a074..00000000000000 --- a/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.defaults +++ /dev/null @@ -1,83 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# The purpose of this file is to define new default values of settings used when building multiprotocol_rpmsg child image for Matter samples. - -config LOG - default n - -config HEAP_MEM_POOL_SIZE - default 8192 - -config MAIN_STACK_SIZE - default 2048 - -config SYSTEM_WORKQUEUE_STACK_SIZE - default 2048 - -config BT - default y - -config BT_HCI_RAW - default y - -config BT_MAX_CONN - default 1 - -config BT_PERIPHERAL - default y - -config BT_CENTRAL - default n - -config BT_BUF_ACL_RX_SIZE - default 502 - -config BT_BUF_ACL_TX_SIZE - default 251 - -config BT_CTLR_DATA_LENGTH_MAX - default 251 - -config BT_CTLR_ASSERT_HANDLER - default y - -config BT_HCI_RAW_RESERVE - default 1 - -# Disable 2M PHY due to interoperability issues. -config BT_CTLR_PHY_2M - default n - -# Workaround: Unable to allocate command buffer when using K_NO_WAIT since -# Host number of completed commands does not follow normal flow control. -config BT_BUF_CMD_TX_COUNT - default 10 - -config ASSERT - default y - -config DEBUG_INFO - default y - -config EXCEPTION_STACK_TRACE - default y - -config NRF_802154_SER_RADIO - default y - -config NRF_802154_ENCRYPTION - default y diff --git a/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root b/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root deleted file mode 100644 index b34c82243585b4..00000000000000 --- a/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root +++ /dev/null @@ -1,21 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# The purpose of this file is to create a wrapper Kconfig file that will be set as -# multiprotocol_rpmsg_KCONFIG_ROOT and processed before any other Kconfig for multiprotocol_rpmsg child image. - -rsource "Kconfig.multiprotocol_rpmsg.defaults" -source "Kconfig.zephyr" diff --git a/config/nrfconnect/chip-module/generate_factory_data_sysbuild.cmake b/config/nrfconnect/chip-module/generate_factory_data_sysbuild.cmake new file mode 100644 index 00000000000000..ff37a5f57e01a8 --- /dev/null +++ b/config/nrfconnect/chip-module/generate_factory_data_sysbuild.cmake @@ -0,0 +1,249 @@ +# +# Copyright (c) 2022-2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + +# Create a .hex file in CBOR format based on factory data given via kConfigs. +# +# This function creates a list of arguments for external script and then run it to write a JSON file. +# Created JSON file can be checked using JSON SCHEMA file if it is provided. +# Next, the resulting .hex file is generated based on previously created JSON file. +# +# This script can be manipulated using following kConfigs: +# - To merge generated factory data with final zephyr.hex file set kConfig SB_CONFIG_MATTER_FACTORY_DATA_MERGE_WITH_FIRMWARE=y +# - To use default certification paths set CONFIG_CHIP_FACTORY_DATA_USE_DEFAULTS_CERTS_PATH=y +# +# During generation process the following files will be created in zephyr's build directory: +# - .json a file containing all factory data written in JSON format. +# - .hex a file containing all factory data in CBOR format. +# - .bin a binary file containing all raw factory data in CBOR format. +# - .cbor a file containing all factory data in CBOR format. +# +# [Args]: +# factory_data_target - a name for target to generate factory_data. +# script_path - a path to script that makes a JSON factory data file from given arguments. +# schema_path - a path to JSON schema file which can be used to verify generated factory data JSON file. +# This argument is optional, if you don't want to verify the JSON file put it empty "". +# output_path - a path to output directory, where created hex and JSON files will be stored. +function(nrfconnect_create_factory_data factory_data_target script_path schema_path output_path image) + sysbuild_get(CONFIG_CHIP_DEVICE_SERIAL_NUMBER IMAGE ${image} VAR CONFIG_CHIP_DEVICE_SERIAL_NUMBER KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_MANUFACTURING_DATE IMAGE ${image} VAR CONFIG_CHIP_DEVICE_MANUFACTURING_DATE KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_VENDOR_ID IMAGE ${image} VAR CONFIG_CHIP_DEVICE_VENDOR_ID KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_PRODUCT_ID IMAGE ${image} VAR CONFIG_CHIP_DEVICE_PRODUCT_ID KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_VENDOR_NAME IMAGE ${image} VAR CONFIG_CHIP_DEVICE_VENDOR_NAME KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_PRODUCT_NAME IMAGE ${image} VAR CONFIG_CHIP_DEVICE_PRODUCT_NAME KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_HARDWARE_VERSION IMAGE ${image} VAR CONFIG_CHIP_DEVICE_HARDWARE_VERSION KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_HARDWARE_VERSION_STRING IMAGE ${image} VAR CONFIG_CHIP_DEVICE_HARDWARE_VERSION_STRING KCONFIG) + sysbuild_get(CONFIG_CHIP_ROTATING_DEVICE_ID IMAGE ${image} VAR CONFIG_CHIP_ROTATING_DEVICE_ID KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_GENERATE_ROTATING_DEVICE_UID IMAGE ${image} VAR CONFIG_CHIP_DEVICE_GENERATE_ROTATING_DEVICE_UID KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_ROTATING_DEVICE_UID IMAGE ${image} VAR CONFIG_CHIP_DEVICE_ROTATING_DEVICE_UID KCONFIG) + sysbuild_get(CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED IMAGE ${image} VAR CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED KCONFIG) + sysbuild_get(CONFIG_CHIP_FACTORY_DATA_GENERATE_CD IMAGE ${image} VAR CONFIG_CHIP_FACTORY_DATA_GENERATE_CD KCONFIG) + sysbuild_get(CONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS IMAGE ${image} VAR CONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS KCONFIG) + sysbuild_get(CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_USER IMAGE ${image} VAR CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_USER KCONFIG) + sysbuild_get(CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_CERT IMAGE ${image} VAR CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_CERT KCONFIG) + sysbuild_get(CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_KEY IMAGE ${image} VAR CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_KEY KCONFIG) + sysbuild_get(CONFIG_CHIP_FACTORY_DATA_USER_CERTS_PAI_CERT IMAGE ${image} VAR CONFIG_CHIP_FACTORY_DATA_USER_CERTS_PAI_CERT KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_SPAKE2_IT IMAGE ${image} VAR CONFIG_CHIP_DEVICE_SPAKE2_IT KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_SPAKE2_SALT IMAGE ${image} VAR CONFIG_CHIP_DEVICE_SPAKE2_SALT KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_DISCRIMINATOR IMAGE ${image} VAR CONFIG_CHIP_DEVICE_DISCRIMINATOR KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_SPAKE2_PASSCODE IMAGE ${image} VAR CONFIG_CHIP_DEVICE_SPAKE2_PASSCODE KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_SPAKE2_TEST_VERIFIER IMAGE ${image} VAR CONFIG_CHIP_DEVICE_SPAKE2_TEST_VERIFIER KCONFIG) + sysbuild_get(CONFIG_CHIP_FACTORY_DATA_GENERATE_SPAKE2_VERIFIER IMAGE ${image} VAR CONFIG_CHIP_FACTORY_DATA_GENERATE_SPAKE2_VERIFIER KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_PRODUCT_FINISH IMAGE ${image} VAR CONFIG_CHIP_DEVICE_PRODUCT_FINISH KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_PRODUCT_COLOR IMAGE ${image} VAR CONFIG_CHIP_DEVICE_PRODUCT_COLOR KCONFIG) + sysbuild_get(CONFIG_CHIP_FACTORY_DATA_GENERATE_ONBOARDING_CODES IMAGE ${image} VAR CONFIG_CHIP_FACTORY_DATA_GENERATE_ONBOARDING_CODES KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_ENABLE_KEY IMAGE ${image} VAR CONFIG_CHIP_DEVICE_ENABLE_KEY KCONFIG) + + # Set script args for future purpose + set(script_args) + + # Generate all script arguments + string(APPEND script_args "--sn \"${CONFIG_CHIP_DEVICE_SERIAL_NUMBER}\"\n") + string(APPEND script_args "--date \"${CONFIG_CHIP_DEVICE_MANUFACTURING_DATE}\"\n") + string(APPEND script_args "--vendor_id ${CONFIG_CHIP_DEVICE_VENDOR_ID}\n") + string(APPEND script_args "--product_id ${CONFIG_CHIP_DEVICE_PRODUCT_ID}\n") + string(APPEND script_args "--vendor_name \"${CONFIG_CHIP_DEVICE_VENDOR_NAME}\"\n") + string(APPEND script_args "--product_name \"${CONFIG_CHIP_DEVICE_PRODUCT_NAME}\"\n") + string(APPEND script_args "--hw_ver ${CONFIG_CHIP_DEVICE_HARDWARE_VERSION}\n") + string(APPEND script_args "--hw_ver_str \"${CONFIG_CHIP_DEVICE_HARDWARE_VERSION_STRING}\"\n") + + # Check if Rotating Device Id Unique Id should be generated + if(CONFIG_CHIP_ROTATING_DEVICE_ID) + if(NOT CONFIG_CHIP_DEVICE_GENERATE_ROTATING_DEVICE_UID) + if(NOT DEFINED CONFIG_CHIP_DEVICE_ROTATING_DEVICE_UID) + message(FATAL_ERROR "CHIP_DEVICE_ROTATING_DEVICE_UID was not provided. To generate it use CONFIG_CHIP_DEVICE_GENERATE_ROTATING_DEVICE_UID=y") + else() + string(APPEND script_args "--rd_uid \"${CONFIG_CHIP_DEVICE_ROTATING_DEVICE_UID}\"\n") + endif() + else() + string(APPEND script_args "--generate_rd_uid\n") + endif() + endif() + + if(CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED OR CONFIG_CHIP_FACTORY_DATA_GENERATE_CD) + find_program(chip_cert_exe NAMES chip-cert REQUIRED) + string(APPEND script_args "--chip_cert_path ${chip_cert_exe}\n") + endif() + + if(CONFIG_CHIP_FACTORY_DATA_GENERATE_CD) + string(APPEND script_args "--gen_cd\n") + endif() + + # For development purpose user can use default certs instead of generating or providing them + if(CONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS) + # Convert decimal VID to its hexadecimal representation to find out certification files in repository + math(EXPR LOCAL_VID "${CONFIG_CHIP_DEVICE_VENDOR_ID}" OUTPUT_FORMAT HEXADECIMAL) + string(SUBSTRING ${LOCAL_VID} 2 -1 raw_vid) + string(TOUPPER ${raw_vid} raw_vid_upper) + # Convert decimal PID to its hexadecimal representation to find out certification files in repository + math(EXPR LOCAL_PID "${CONFIG_CHIP_DEVICE_PRODUCT_ID}" OUTPUT_FORMAT HEXADECIMAL) + string(SUBSTRING ${LOCAL_PID} 2 -1 raw_pid) + string(TOUPPER ${raw_pid} raw_pid_upper) + # All certs are located in ${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/credentials/development/attestation + # it can be used during development without need to generate new certifications + string(APPEND script_args "--dac_cert \"${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/credentials/development/attestation/Matter-Development-DAC-${raw_vid_upper}-${raw_pid_upper}-Cert.der\"\n") + string(APPEND script_args "--dac_key \"${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/credentials/development/attestation/Matter-Development-DAC-${raw_vid_upper}-${raw_pid_upper}-Key.der\"\n") + string(APPEND script_args "--pai_cert \"${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/credentials/development/attestation/Matter-Development-PAI-${raw_vid_upper}-noPID-Cert.der\"\n") + elseif(CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_USER) + string(APPEND script_args "--dac_cert \"${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_CERT}\"\n") + string(APPEND script_args "--dac_key \"${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_DAC_KEY}\"\n") + string(APPEND script_args "--pai_cert \"${CONFIG_CHIP_FACTORY_DATA_USER_CERTS_PAI_CERT}\"\n") + elseif(CONFIG_CHIP_FACTORY_DATA_CERT_SOURCE_GENERATED) + string(APPEND script_args "--gen_certs\n") + endif() + + # Add Password-Authenticated Key Exchange parameters + string(APPEND script_args "--spake2_it \"${CONFIG_CHIP_DEVICE_SPAKE2_IT}\"\n") + string(APPEND script_args "--spake2_salt \"${CONFIG_CHIP_DEVICE_SPAKE2_SALT}\"\n") + string(APPEND script_args "--discriminator ${CONFIG_CHIP_DEVICE_DISCRIMINATOR}\n") + string(APPEND script_args "--passcode ${CONFIG_CHIP_DEVICE_SPAKE2_PASSCODE}\n") + string(APPEND script_args "--include_passcode\n") + string(APPEND script_args "--overwrite\n") + # Check if spake2 verifier should be generated using script + if(NOT CONFIG_CHIP_FACTORY_DATA_GENERATE_SPAKE2_VERIFIER) + # Spake2 verifier should be provided using kConfig + string(APPEND script_args "--spake2_verifier \"${CONFIG_CHIP_DEVICE_SPAKE2_TEST_VERIFIER}\"\n") + endif() + + # Product appearance + string(APPEND script_args "--product_finish ${CONFIG_CHIP_DEVICE_PRODUCT_FINISH}\n") + if(CONFIG_CHIP_DEVICE_PRODUCT_COLOR) + string(APPEND script_args "--product_color ${CONFIG_CHIP_DEVICE_PRODUCT_COLOR}\n") + endif() + + if(CONFIG_CHIP_FACTORY_DATA_GENERATE_ONBOARDING_CODES) + string(APPEND script_args "--generate_onboarding\n") + endif() + + if(CONFIG_CHIP_DEVICE_ENABLE_KEY) + # Add optional EnableKey that triggers user-specific action. + string(APPEND script_args "--enable_key \"${CONFIG_CHIP_DEVICE_ENABLE_KEY}\"\n") + endif() + + # Set output path and path to SCHEMA file to validate generated factory data + set(factory_data_output_path ${output_path}/${factory_data_target}) + string(APPEND script_args "-o \"${factory_data_output_path}\"\n") + string(APPEND script_args "-s \"${schema_path}\"\n") + + # Add optional offset and size arguments to generate .hex file as well as .json. + if(SB_CONFIG_PARTITION_MANAGER) + string(APPEND script_args "--offset $\n") + string(APPEND script_args "--size $\n") + else() + include(${CMAKE_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr/dts.cmake) + + get_target_property(factory_data_alias devicetree_target "DT_ALIAS|factory-data") + get_target_property(factory_data_address devicetree_target "DT_REG|${factory_data_alias}|ADDR") + get_target_property(factory_data_size devicetree_target "DT_REG|${factory_data_alias}|SIZE") + + # remove ; from address and size properties + string(SUBSTRING ${factory_data_address} 0 -1 factory_data_address) + string(SUBSTRING ${factory_data_size} 0 -1 factory_data_size) + if(NOT (DEFINED factory_data_alias AND DEFINED factory_data_address AND DEFINED factory_data_size)) + message(FATAL_ERROR "factory-data alias does not exist in DTS") + endif() + + string(APPEND script_args "--offset ${factory_data_address}\n") + string(APPEND script_args "--size ${factory_data_size}\n") + endif() + + # Execute first script to create a JSON file + separate_arguments(separated_script_args NATIVE_COMMAND ${script_args}) + add_custom_command( + OUTPUT ${factory_data_output_path}.hex + DEPENDS ${FACTORY_DATA_SCRIPT_PATH} + COMMAND ${Python3_EXECUTABLE} ${FACTORY_DATA_SCRIPT_PATH} ${separated_script_args} + COMMENT "Generating new Factory Data..." + ) + add_custom_target(${factory_data_target} ALL + DEPENDS ${factory_data_output_path}.hex + ) +endfunction() + +# Generate factory data partition using given args +# +# +# During generation process a some file will be created in zephyr's build directory: +# - merged.hex a file containing firmware and factory data merged to single file +# - factory_data.hex a file containing only a factory data partition including proper offset +# +function(nrfconnect_generate_factory_data) + if(NOT ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR) + message(FATAL_ERROR "ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR variable is not set, ensure the matter module is in your manifest") + endif() + + # Localize all scripts needed to generate factory data partition + set(FACTORY_DATA_SCRIPT_PATH ${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/scripts/tools/nrfconnect/generate_nrfconnect_chip_factory_data.py) + set(GENERATE_CBOR_SCRIPT_PATH ${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/scripts/tools/nrfconnect/nrfconnect_generate_partition.py) + set(FACTORY_DATA_SCHEMA_PATH ${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/scripts/tools/nrfconnect/nrfconnect_factory_data.schema) + set(OUTPUT_FILE_PATH ${APPLICATION_BINARY_DIR}/${DEFAULT_IMAGE}/zephyr) + + # Create a .hex file with factory data in CBOR format based on the JSON file created previously + nrfconnect_create_factory_data(factory_data + ${FACTORY_DATA_SCRIPT_PATH} + ${FACTORY_DATA_SCHEMA_PATH} + ${OUTPUT_FILE_PATH} + ${DEFAULT_IMAGE} + ) + + if(SB_CONFIG_MATTER_FACTORY_DATA_MERGE_WITH_FIRMWARE) + if(SB_CONFIG_PARTITION_MANAGER) + # Set custom target for merging factory_data hex file + set_property(GLOBAL PROPERTY factory_data_PM_HEX_FILE ${OUTPUT_FILE_PATH}/factory_data.hex) + set_property(GLOBAL PROPERTY factory_data_PM_TARGET factory_data) + else() + add_custom_command(OUTPUT ${OUTPUT_FILE_PATH}/merged.hex + COMMAND + ${PYTHON_EXECUTABLE} + ${ZEPHYR_BASE}/scripts/build/mergehex.py + -o ${OUTPUT_FILE_PATH}/merged.hex + ${OUTPUT_FILE_PATH}/factory_data.hex + ${OUTPUT_FILE_PATH}/zephyr.hex + DEPENDS + ${DEFAULT_IMAGE}_extra_byproducts + factory_data + ${OUTPUT_FILE_PATH}/factory_data.hex + ${OUTPUT_FILE_PATH}/zephyr.hex + ) + + # Wrapper target for the merge command. + add_custom_target(merged_hex + ALL DEPENDS + ${OUTPUT_FILE_PATH}/merged.hex + ) + endif() + endif() +endfunction() diff --git a/config/nxp/chip-module/Kconfig b/config/nxp/chip-module/Kconfig index ae95e1ce348f57..152d1161f9f435 100644 --- a/config/nxp/chip-module/Kconfig +++ b/config/nxp/chip-module/Kconfig @@ -30,15 +30,6 @@ config CHIP_NXP_PLATFORM config CHIP_DEVICE_VENDOR_NAME default "NXP Semiconductors" -config CHIP_APP_LOG_LEVEL - int "Logging level in application" - default LOG_DEFAULT_LEVEL - depends on LOG - help - Sets the logging level in the Matter application. Use this configuration - option only within the application. To set the logging level for the - Matter stack, use the MATTER_LOG_LEVEL configuration option. - config CHIP_EXAMPLE_DEVICE_INFO_PROVIDER bool "Include default device information provider build" default y diff --git a/config/telink/chip-module/Kconfig b/config/telink/chip-module/Kconfig index 46dc36b8973d77..d09f4534835ddf 100644 --- a/config/telink/chip-module/Kconfig +++ b/config/telink/chip-module/Kconfig @@ -22,15 +22,6 @@ if CHIP config CHIP_DEVICE_VENDOR_NAME default "Telink Semiconductor" -config CHIP_APP_LOG_LEVEL - int "Logging level in application" - default LOG_DEFAULT_LEVEL - depends on LOG - help - Sets the logging level in the Matter application. Use this configuration - option only within the application. To set the logging level for the - Matter stack, use the MATTER_LOG_LEVEL configuration option. - config CHIP_NFC_COMMISSIONING bool "Share onboarding payload in NFC tag" default n diff --git a/config/zephyr/Kconfig b/config/zephyr/Kconfig index 95cea7cec1a707..fb06e106e29a38 100644 --- a/config/zephyr/Kconfig +++ b/config/zephyr/Kconfig @@ -42,6 +42,15 @@ menuconfig CHIP if CHIP +config CHIP_APP_LOG_LEVEL + int "Logging level in application" + default LOG_DEFAULT_LEVEL + depends on LOG + help + Sets the logging level in the Matter application. Use this configuration + option only within the application. To set the logging level for the + Matter stack, use the MATTER_LOG_LEVEL configuration option. + # Device and firmware identifers config CHIP_DEVICE_VENDOR_ID diff --git a/config/nrfconnect/chip-module/Kconfig.hci_ipc.root b/config/zephyr/chip-module/Kconfig.logging similarity index 56% rename from config/nrfconnect/chip-module/Kconfig.hci_ipc.root rename to config/zephyr/chip-module/Kconfig.logging index 1fe8ff85f43ee8..85cf1847a49cce 100644 --- a/config/nrfconnect/chip-module/Kconfig.hci_ipc.root +++ b/config/zephyr/chip-module/Kconfig.logging @@ -1,5 +1,5 @@ # -# Copyright (c) 2022 Project CHIP Authors +# Copyright (c) 2021 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,8 +14,28 @@ # limitations under the License. # -# The purpose of this file is to create a wrapper Kconfig file that will be set as -# hci_ipc_KCONFIG_ROOT and processed before any other Kconfig for hci_ipc child image. +config LOG + default y -rsource "Kconfig.hci_ipc.defaults" -source "Kconfig.zephyr" +if LOG + +choice LOG_MODE + default LOG_MODE_MINIMAL +endchoice + +choice MATTER_LOG_LEVEL_CHOICE + default MATTER_LOG_LEVEL_DBG +endchoice + +config CHIP_APP_LOG_LEVEL + default 4 # debug + +config LOG_DEFAULT_LEVEL + default 1 # error + +# disable synchronous printk to avoid blocking IRQs which +# may affect time sensitive components +config PRINTK_SYNC + default n + +endif # LOG \ No newline at end of file diff --git a/config/zephyr/ota-image_sysbuild.cmake b/config/zephyr/ota-image_sysbuild.cmake new file mode 100644 index 00000000000000..2bd78ea6ee5afb --- /dev/null +++ b/config/zephyr/ota-image_sysbuild.cmake @@ -0,0 +1,102 @@ +# +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# +# Create CMake target for building Matter OTA (Over-the-air update) image. +# +# Required arguments: +# INPUT_FILES file1[, file2...] Binary files to be included in Matter OTA image +# OUTPUT_FILE file Location of generated Matter OTA image +# +function(chip_ota_image TARGET_NAME) + cmake_parse_arguments(ARG "" "OUTPUT_FILE" "INPUT_FILES" ${ARGN}) + + if(NOT ARG_INPUT_FILES OR NOT ARG_OUTPUT_FILE) + message(FATAL_ERROR "Both INPUT_FILES and OUTPUT_FILE arguments must be specified") + endif() + + sysbuild_get(CONFIG_CHIP_DEVICE_SOFTWARE_VERSION IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_SOFTWARE_VERSION KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_VENDOR_ID IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_VENDOR_ID KCONFIG) + sysbuild_get(CONFIG_CHIP_DEVICE_PRODUCT_ID IMAGE ${DEFAULT_IMAGE} VAR CONFIG_CHIP_DEVICE_PRODUCT_ID KCONFIG) + + # Prepare ota_image_tool.py argument list + if(EXISTS ${APP_DIR}/VERSION) + file(READ ${APP_DIR}/VERSION ver) + set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${APP_DIR}/VERSION) + string(REGEX MATCH "VERSION_MAJOR = ([0-9]*)" _ ${ver}) + set(app_version_major ${CMAKE_MATCH_1}) + string(REGEX MATCH "VERSION_MINOR = ([0-9]*)" _ ${ver}) + set(app_version_minor ${CMAKE_MATCH_1}) + string(REGEX MATCH "PATCHLEVEL = ([0-9]*)" _ ${ver}) + set(app_version_patchlevel ${CMAKE_MATCH_1}) + string(REGEX MATCH "VERSION_TWEAK = ([0-9]*)" _ ${ver}) + set(app_version_tweak ${CMAKE_MATCH_1}) + + set(APP_VERSION_STRING "${app_version_major}.${app_version_minor}.${app_version_patchlevel}+${app_version_tweak}") + math(EXPR APPVERSION "(${app_version_major} << 24) | (${app_version_minor} << 16) | (${app_version_patchlevel} << 8) | ${app_version_tweak}" OUTPUT_FORMAT HEXADECIMAL) + + set(OTA_ARGS + "--vendor-id" + ${CONFIG_CHIP_DEVICE_VENDOR_ID} + "--product-id" + ${CONFIG_CHIP_DEVICE_PRODUCT_ID} + "--version" + ${APPVERSION} + "--version-str" + ${APP_VERSION_STRING} + "--digest-algorithm" + "sha256" + ) + else() + set(OTA_ARGS + "--vendor-id" + ${CONFIG_CHIP_DEVICE_VENDOR_ID} + "--product-id" + ${CONFIG_CHIP_DEVICE_PRODUCT_ID} + "--version" + ${CONFIG_CHIP_DEVICE_SOFTWARE_VERSION} + "--version-str" + ${CONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING} + "--digest-algorithm" + "sha256" + ) + endif() + + separate_arguments(OTA_EXTRA_ARGS NATIVE_COMMAND "${CHIP_OTA_IMAGE_EXTRA_ARGS}") + + list(APPEND OTA_ARGS ${OTA_EXTRA_ARGS}) + list(APPEND OTA_ARGS ${ARG_INPUT_FILES}) + list(APPEND OTA_ARGS ${ARG_OUTPUT_FILE}) + + # Convert the argument list to multi-line string + string(REPLACE ";" "\n" OTA_ARGS "${OTA_ARGS}") + + # Pass the argument list via file to avoid hitting Windows command-line length limit + file(GENERATE + OUTPUT ${ARG_OUTPUT_FILE}.args + CONTENT ${OTA_ARGS} + ) + + add_custom_command(OUTPUT ${ARG_OUTPUT_FILE} + COMMAND ${Python3_EXECUTABLE} ${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/src/app/ota_image_tool.py create @${ARG_OUTPUT_FILE}.args + DEPENDS ${ARG_INPUT_FILES} ${ZEPHYR_CONNECTEDHOMEIP_MODULE_DIR}/src/app/ota_image_tool.py + ) + + add_custom_target(${TARGET_NAME} ALL + DEPENDS ${ARG_OUTPUT_FILE} + ) +endfunction() diff --git a/docs/guides/fabric_synchronization_guide.md b/docs/guides/fabric_synchronization_guide.md index 36107744a97930..1b545ce36ead27 100644 --- a/docs/guides/fabric_synchronization_guide.md +++ b/docs/guides/fabric_synchronization_guide.md @@ -19,6 +19,9 @@ Fabric-Bridge-App example app implements the Aggregator device type with Fabric Synchronization condition met and demonstrates the end-to-end Fabric Synchronization feature using dynamic endpoints. +The Fabric-Admin and Fabric-Bridge-App example applications must be executed on +the same physical device and communicate with each other using RPC. + Fabric Synchronization can be triggered from either side. The initiator of the Fabric Synchronization process, who shares their devices, takes on the Commissioner role. The recipient of the Fabric Synchronization request, who @@ -82,11 +85,29 @@ fabricsync enable-auto-sync 1 Pair the Fabric-Source bridge to Fabric-Sync with node ID 1: ``` -fabricsync add-bridge 1 +fabricsync add-bridge 1 ``` ### Pair Light Example to Fabric-Source +Since Fabric-Bridge also functions as a Matter server, running it alongside the +Light Example app on the same machine would cause conflicts. Therefore, you need +to run the Matter Light Example app on a separate physical machine from the one +hosting Fabric-Admin and Fabric-Bridge. You can then commission the Matter Light +Example app using Fabric-Admin on the source side. + +There is a workaround to avoid conflicts when running multiple Matter server +applications on the same machine, you can use different ports and unique +Key-Value Store (KVS) paths for each app. Here's an example of how to launch a +Light App with custom settings: + +Light App with yet another set of different discriminator/passcode, ports and +KVS + +``` +./out/linux-x64-light-clang/chip-lighting-app --discriminator 3843 --passcode 20202023 --secured-device-port 5543 --unsecured-commissioner-port 5553 --KVS /tmp/chip_kvs_lighting_app +``` + Pair the Light Example with node ID 3 using its payload number: ``` diff --git a/docs/guides/infineon_psoc6_software_update.md b/docs/guides/infineon_psoc6_software_update.md index 4367142b79e4d8..e7e4f535be4d6a 100644 --- a/docs/guides/infineon_psoc6_software_update.md +++ b/docs/guides/infineon_psoc6_software_update.md @@ -25,7 +25,7 @@ Infineon PSoC6 example applications by passing the ``` $ scripts/build/build_examples.py --enable-flashbundle --target infineon-psoc6-lock-ota build - $ third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh out/infineon-psoc6-lock-ota chip-psoc6-lock-example + $ third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh psoc6-lock chip-psoc6-lock-example ``` - Build the PSoC6 OTA Update application from the chip root dir and create OTA @@ -33,15 +33,22 @@ Infineon PSoC6 example applications by passing the ``` $ scripts/build/build_examples.py --enable-flashbundle --no-log-timestamps --target infineon-psoc6-lock-ota-updateimage build - $ third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh out/infineon-psoc6-lock-ota-updateimage chip-psoc6-lock-example + $ third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh psoc6-lock chip-psoc6-lock-example ``` -* Additionally a pre-compiled bootloader must be flashed to the board using +* Additionally a pre-compiled bootloader must be flashed to the board before + flashing the application using [Cypress Programmer](https://softwaretools.infineon.com/tools/com.ifx.tb.tool.cypressprogrammer). This image can be found at: $ ./third_party/infineon/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex +* Flash the application after putting the CY8CKIT-062S2-43012 board on + KitProg3 CMSIS-DAP Mode by pressing the `MODE SELECT` button. + + $ cd ~/connectedhomeip + $ python3 out/infineon-psoc6-lock-ota/chip-psoc6-lock-example.flash.py + * In a terminal start the Provider app passing to it the path to the Matter OTA file created in the previous step:(output of ota_update_build step) diff --git a/docs/guides/nrfconnect_examples_software_update.md b/docs/guides/nrfconnect_examples_software_update.md index ebaf08f46a587f..9fc1f6e6e5bd3e 100644 --- a/docs/guides/nrfconnect_examples_software_update.md +++ b/docs/guides/nrfconnect_examples_software_update.md @@ -49,8 +49,8 @@ To test the DFU over Matter, you need to complete the following steps: 4. Run OTA Provider application with _matter.ota_ replaced with the path to the Matter OTA image which you wish to provide to the Matter device. Note that - the Matter OTA image is, by default, generated at _zephyr/matter.ota_ in the - example's build directory: + the Matter OTA image is, by default, generated in the example's build + directory: ``` $ out/provider/chip-ota-provider-app -f matter.ota @@ -180,10 +180,11 @@ Complete the following steps to perform DFU using mcumgr: that the Bluetooth LE advertising has started. See the user interface section in the example documentation to check the LED number. 4. Upload the application firmware image to the device by running the following - command in your example directory: + command in your example directory with the replaced by + your application name, for example `lock`: ``` - sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image upload build/zephyr/app_update.bin -n 0 -w 1 + sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image upload build//zephyr/zephyr.signed.bin -n 0 -w 1 ``` The operation can take a few minutes. Wait until the progress bar reaches @@ -246,10 +247,11 @@ Complete the following steps to perform DFU using mcumgr: go straight to the step 8. a. Upload the network core firmware image to the device by running the - following command in your example directory: + following command in your example directory with the + replaced by your network image name, for example `ipc_radio`: ``` - sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image upload build/zephyr/net_core_app_update.bin -n 1 -w 1 + sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image upload build/signed_by_mcuboot_and_b0_.bin -n 1 -w 1 ``` The operation can take a few minutes. Wait until the progress bar reaches diff --git a/docs/guides/nrfconnect_factory_data_configuration.md b/docs/guides/nrfconnect_factory_data_configuration.md index 212963d5266b66..27595e2888d616 100644 --- a/docs/guides/nrfconnect_factory_data_configuration.md +++ b/docs/guides/nrfconnect_factory_data_configuration.md @@ -635,7 +635,7 @@ For example, the build command for the nRF52840 DK could look like this: ``` $ west build -b nrf52840dk_nrf52840 -- \ -DCONFIG_CHIP_FACTORY_DATA=y \ --DCONFIG_CHIP_FACTORY_DATA_BUILD=y \ +-DSB_CONFIG_MATTER_FACTORY_DATA_GENERATE=y \ -DCONFIG_CHIP_FACTORY_DATA_GENERATE_ONBOARDING_CODES=y ``` @@ -760,13 +760,13 @@ $ python scripts/tools/nrfconnect/nrfconnect_generate_partition.py -h **Example of the command for the nRF52840 DK:** ``` -$ python scripts/tools/nrfconnect/nrfconnect_generate_partition.py -i build/zephyr/factory_data.json -o build/zephyr/factory_data --offset 0xfb000 --size 0x1000 +$ python scripts/tools/nrfconnect/nrfconnect_generate_partition.py -i build/light_bulb/zephyr/factory_data.json -o build/light_bulb/zephyr/factory_data --offset 0xfb000 --size 0x1000 ``` As a result, `factory_data.hex` and `factory_data.bin` files are created in the -`/build/zephyr/` directory. The first file contains the memory offset. For this -reason, it can be programmed directly to the device using a programmer (for -example, `nrfjprog`). +`/build/light_bulb/zephyr/` directory. The first file contains the memory +offset. For this reason, it can be programmed directly to the device using a +programmer (for example, `nrfjprog`).
@@ -783,11 +783,11 @@ directory and build the example with the following option (replace `nrf52840dk_nrf52840` with your board name): ``` -$ west build -b nrf52840dk_nrf52840 -- -DCONFIG_CHIP_FACTORY_DATA=y -DCONFIG_CHIP_FACTORY_DATA_BUILD=y +$ west build -b nrf52840dk_nrf52840 -- -DCONFIG_CHIP_FACTORY_DATA=y -DSB_CONFIG_MATTER_FACTORY_DATA_GENERATE=y ``` -Alternatively, you can also add `CONFIG_CHIP_FACTORY_DATA_BUILD=y` Kconfig -setting to the example's `prj.conf` file. +Alternatively, you can also add `SB_CONFIG_MATTER_FACTORY_DATA_GENERATE=y` +Kconfig setting to the example's `sysbuild.conf` file. Each factory data parameter has a default value. These are described in the [Kconfig file](../../config/nrfconnect/chip-module/Kconfig). Setting a new value @@ -802,7 +802,7 @@ them as an additional option for the west command. For example (replace `nrf52840dk_nrf52840` with own board name): ``` -$ west build -b nrf52840dk_nrf52840 -- -DCONFIG_CHIP_FACTORY_DATA=y --DCONFIG_CHIP_FACTORY_DATA_BUILD=y --DCONFIG_CHIP_DEVICE_DISCRIMINATOR=0xF11 +$ west build -b nrf52840dk_nrf52840 -- -DCONFIG_CHIP_FACTORY_DATA=y --DSB_CONFIG_MATTER_FACTORY_DATA_GENERATE=y --DCONFIG_CHIP_DEVICE_DISCRIMINATOR=0xF11 ``` Alternatively, you can add the relevant Kconfig option lines to the example's @@ -916,32 +916,32 @@ $ nrfjprog --family NRF52 --program factory_data.hex ``` > Note: For more information about how to use the `nrfjprog` utility, visit -> [Nordic Semiconductor's Infocenter](https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrf_cltools%2FUG%2Fcltools%2Fnrf_nrfjprogexe.html). +> [Programming SoCs with nrfjprog](https://docs.nordicsemi.com/bundle/ug_nrf_cltools/page/UG/cltools/nrf_nrfjprogexe.html) Another way to program the factory data to a device is to use the nRF Connect platform build system described in [Building an example with factory data](#building-an-example-with-factory-data), and build an example with the additional option -`-DCONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE=y`: +`-DSB_CONFIG_MATTER_FACTORY_DATA_MERGE_WITH_FIRMWARE=y`: ``` $ west build -b nrf52840dk_nrf52840 -- \ -DCONFIG_CHIP_FACTORY_DATA=y \ --DCONFIG_CHIP_FACTORY_DATA_BUILD=y \ --DCONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE=y +-DSB_CONFIG_MATTER_FACTORY_DATA_GENERATE=y \ +-DSB_CONFIG_MATTER_FACTORY_DATA_MERGE_WITH_FIRMWARE=y ``` You can also build an example with auto-generation of new CD, DAC and PAI certificates. The newly generated certificates will be added to factory data set automatically. To generate new certificates disable using default certificates by building an example with the additional option -`-DCHIP_FACTORY_DATA_USE_DEFAULT_CERTS=n`: +`-DCONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS=n`: ``` $ west build -b nrf52840dk_nrf52840 -- \ -DCONFIG_CHIP_FACTORY_DATA=y \ --DCONFIG_CHIP_FACTORY_DATA_BUILD=y \ --DCONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE=y \ +-DSB_CONFIG_MATTER_FACTORY_DATA_GENERATE=y \ +-DSB_CONFIG_MATTER_FACTORY_DATA_MERGE_WITH_FIRMWARE=y \ -DCONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS=n ``` diff --git a/docs/upgrading.md b/docs/upgrading.md index cd18b533484279..9a8c68987bec3b 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -60,3 +60,19 @@ commandHandler->AddResponse(path, kReplyCommandId, replyEncoder); // so code does AddResponse rather than AddResponseData. ``` + +### `CommandHandlerInterface` in `chip::app::InteractionModelEngine` + +Command handler lists were placed in a separate registry class that is +independent of the InteractionModelEngine class. + +The following replacements exist: + +- `chip::app::InteractionModelEngine::RegisterCommandHandler` replaced by + `chip::app::CommandHandlerInterfaceRegistry::RegisterCommandHandler` +- `chip::app::InteractionModelEngine::UnregisterCommandHandler` replaced by + `chip::app::CommandHandlerInterfaceRegistry::UnregisterCommandHandler` +- `chip::app::InteractionModelEngine::FindCommandHandler` replaced by + `chip::app::CommandHandlerInterfaceRegistry::GetCommandHandler` +- `chip::app::InteractionModelEngine::UnregisterCommandHandlers` replaced by + `chip::app::CommandHandlerInterfaceRegistry::UnregisterAllCommandHandlersForEndpoint` diff --git a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter index 7dd6e1762ce1c7..4e9d31f7df3b8e 100644 --- a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter +++ b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter @@ -1344,7 +1344,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -1442,11 +1441,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -1521,7 +1515,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1559,7 +1552,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -1588,8 +1580,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index 7fb6f3293e9813..b8855227a52db1 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -288,7 +288,7 @@ deprecated cluster OnOffSwitchConfiguration = 7 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -5073,7 +5073,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -5171,11 +5170,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -5250,7 +5244,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -5288,7 +5281,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -5317,8 +5309,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } @@ -5441,7 +5431,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -7847,7 +7837,7 @@ endpoint 1 { ram attribute defaultMoveRate default = 50; persist attribute startUpCurrentLevel default = 255; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -8610,7 +8600,6 @@ endpoint 1 { ram attribute presetsSchedulesEditable; ram attribute temperatureSetpointHoldPolicy default = 0; ram attribute setpointHoldExpiryTimestamp; - callback attribute queuedPreset; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; @@ -8702,7 +8691,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; persist attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index 6542e3db599cd9..6491378c9e83d7 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -7303,7 +7303,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -17871,7 +17871,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/all-clusters-app/infineon/psoc6/BUILD.gn b/examples/all-clusters-app/infineon/psoc6/BUILD.gn index 64930593383bfe..aab6fdfd275986 100644 --- a/examples/all-clusters-app/infineon/psoc6/BUILD.gn +++ b/examples/all-clusters-app/infineon/psoc6/BUILD.gn @@ -45,32 +45,38 @@ config("psoc6_ota_config") { ldflags = [ "-T" + rebase_path(linker_script, root_build_dir) ] - ldflags += [ "-Wl,--defsym,MCUBOOT_HEADER_SIZE=0x400,--defsym,MCUBOOT_BOOTLOADER_SIZE=0x18000,--defsym,CY_BOOT_PRIMARY_1_SIZE=0x1C0000" ] + ldflags += [ "-Wl,--undefined=uxTopUsedPriority -Wl,--defsym,MCUBOOT_HEADER_SIZE=0x400,--defsym,FLASH_AREA_IMG_1_PRIMARY_START=0x028000,--defsym,FLASH_AREA_IMG_1_PRIMARY_SIZE=0x1c0000" ] defines = [ "P6_OTA", - "OTA_SUPPORT ", - "OTA_USE_EXTERNAL_FLASH", - "CY_BOOT_USE_EXTERNAL_FLASH", - "MCUBOOT_HEADER_SIZE=0x400", - "MCUBOOT_MAX_IMG_SECTORS=3584", - "CY_BOOT_SCRATCH_SIZE=0x00004000", - "MCUBOOT_BOOTLOADER_SIZE=0x00018000", - "CY_BOOT_BOOTLOADER_SIZE=0x00018000", - "CY_BOOT_PRIMARY_1_START=0x00018000", - "CY_BOOT_PRIMARY_1_SIZE=0x1C0000", - "CY_BOOT_SECONDARY_1_START=0x00000000", - "CY_BOOT_SECONDARY_1_SIZE=0x001C0000", - "CY_FLASH_ERASE_VALUE=0xFF", + "COMPONENT_MCUBOOT", + "CY_BOOTLOADER=MCUBOOT", + "OTA_SUPPORT=1", + "COMPONENT_OTA_PSOC_062", + "PSOC_062_2M", + "OTA_USE_EXTERNAL_FLASH=1", + "ENABLE_OTA_LOGS", + "ENABLE_OTA_BOOTLOADER_ABSTRACTION_LOGS", "MCUBOOT_IMAGE_NUMBER=1", - "MCUBOOT_SLOT_SIZE=0x1C0000", - "MCUBOOT_SCRATCH_SIZE=0x4000", - "MCUBOOT_SECTOR_SIZE = 512", + "MCUBOOT_MAX_IMG_SECTORS=3584", + "FLASH_AREA_BOOTLOADER_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_BOOTLOADER_SIZE=0x028000", + "FLASH_AREA_BOOTLOADER_START=0x000000", + "FLASH_AREA_IMAGE_SCRATCH_DEV_ID='FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX)'", + "FLASH_AREA_IMAGE_SCRATCH_SIZE=0x080000", + "FLASH_AREA_IMAGE_SCRATCH_START=0x440000", + "FLASH_AREA_IMAGE_SWAP_STATUS_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_IMAGE_SWAP_STATUS_SIZE=0x006c00", + "FLASH_AREA_IMAGE_SWAP_STATUS_START=0x1e8000", + "FLASH_AREA_IMG_1_PRIMARY_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_IMG_1_PRIMARY_SIZE=0x1c0000", + "FLASH_AREA_IMG_1_PRIMARY_START=0x028000", + "FLASH_AREA_IMG_1_SECONDARY_DEV_ID='FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX)'", + "FLASH_AREA_IMG_1_SECONDARY_SIZE=0x1c0000", + "FLASH_AREA_IMG_1_SECONDARY_START=0x000200", "APP_VERSION_MAJOR=1", "APP_VERSION_MINOR=0", "APP_VERSION_BUILD=0", - "MCUBOOT_OVERWRITE_ONLY", - "CY_ENABLE_XIP_PROGRAM", ] if (build_update_image) { @@ -87,7 +93,7 @@ psoc6_sdk_sources("all_clusters_app_sdk_sources") { defines = [ "BOARD_ID=${psoc6_board}", - "P6_LOG_ENABLED=1", + "PSOC6_LOG_ENABLED=1", "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setup_pin_code}", ] diff --git a/examples/all-clusters-app/infineon/psoc6/include/AppConfig.h b/examples/all-clusters-app/infineon/psoc6/include/AppConfig.h index 35e45a8aef4223..cad1a523bfa188 100644 --- a/examples/all-clusters-app/infineon/psoc6/include/AppConfig.h +++ b/examples/all-clusters-app/infineon/psoc6/include/AppConfig.h @@ -48,14 +48,14 @@ #define THREAD_ACTIVE_POLLING_INTERVAL_MS 100 #define THREAD_INACTIVE_POLLING_INTERVAL_MS 1000 -// P6 Logging +// PSOC6 Logging #ifdef __cplusplus extern "C" { #endif void appError(int err); -void P6Log(const char * aFormat, ...); -#define P6_LOG(...) P6Log(__VA_ARGS__) +void PSOC6Log(const char * aFormat, ...); +#define PSOC6_LOG(...) PSOC6Log(__VA_ARGS__) #ifdef __cplusplus } diff --git a/examples/all-clusters-app/infineon/psoc6/include/AppTask.h b/examples/all-clusters-app/infineon/psoc6/include/AppTask.h index aa031fe3ba4b52..a80d8db688fc2d 100644 --- a/examples/all-clusters-app/infineon/psoc6/include/AppTask.h +++ b/examples/all-clusters-app/infineon/psoc6/include/AppTask.h @@ -29,6 +29,10 @@ #include #include +extern "C" { +#include "flash_map_backend.h" +} + // Application-defined error codes in the CHIP_ERROR space. #define APP_ERROR_EVENT_QUEUE_FAILED CHIP_APPLICATION_ERROR(0x01) #define APP_ERROR_CREATE_TASK_FAILED CHIP_APPLICATION_ERROR(0x02) diff --git a/examples/all-clusters-app/infineon/psoc6/include/CHIPProjectConfig.h b/examples/all-clusters-app/infineon/psoc6/include/CHIPProjectConfig.h index f7bb585960ec3c..1b6f96ee03405f 100644 --- a/examples/all-clusters-app/infineon/psoc6/include/CHIPProjectConfig.h +++ b/examples/all-clusters-app/infineon/psoc6/include/CHIPProjectConfig.h @@ -42,10 +42,10 @@ #define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8003 /* The ProductName attribute of the Basic cluster. */ -#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "P6-CYW43012 All Clusters" +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "PSOC6-CYW43012 All Clusters" /* The HardwareVersionString attribute of the Basic cluster. */ -#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "P6-43012" +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "PSOC6-43012" /* The HardwareVersion attribute of the Basic cluster. */ #define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION 43012 diff --git a/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp b/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp index 0d0ba0f5b25663..143e25e87e0114 100644 --- a/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp +++ b/examples/all-clusters-app/infineon/psoc6/src/AppTask.cpp @@ -148,7 +148,7 @@ CHIP_ERROR AppTask::StartAppTask() sAppEventQueue = xQueueCreateStatic(APP_EVENT_QUEUE_SIZE, sizeof(AppEvent), sAppEventQueueBuffer, &sAppEventQueueStruct); if (sAppEventQueue == NULL) { - P6_LOG("Failed to allocate app event queue"); + PSOC6_LOG("Failed to allocate app event queue"); appError(APP_ERROR_EVENT_QUEUE_FAILED); } // Start App task. @@ -160,10 +160,10 @@ CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR - int rc = boot_set_confirmed(); + int rc = flash_area_boot_set_confirmed(); if (rc != 0) { - P6_LOG("boot_set_confirmed failed"); + PSOC6_LOG("flash_area_boot_set_confirmed failed"); appError(CHIP_ERROR_UNINITIALIZED); } #endif @@ -196,11 +196,11 @@ CHIP_ERROR AppTask::Init() ); if (sFunctionTimer == NULL) { - P6_LOG("funct timer create failed"); + PSOC6_LOG("funct timer create failed"); appError(APP_ERROR_CREATE_TIMER_FAILED); } NetWorkCommissioningInstInit(); - P6_LOG("Current Software Version: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); + PSOC6_LOG("Current Software Version: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); // Initialize LEDs sStatusLED.Init(SYSTEM_STATE_LED); @@ -221,11 +221,11 @@ void AppTask::AppTaskMain(void * pvParameter) CHIP_ERROR err = sAppTask.Init(); if (err != CHIP_NO_ERROR) { - P6_LOG("AppTask.Init() failed"); + PSOC6_LOG("AppTask.Init() failed"); appError(err); } - P6_LOG("App Task started"); + PSOC6_LOG("App Task started"); while (true) { @@ -301,7 +301,8 @@ void AppTask::FunctionHandler(AppEvent * event) { if (!sAppTask.mFunctionTimerActive && sAppTask.mFunction == Function::kNoneSelected) { - P6_LOG("Factory Reset Triggered. Press button again within %us to cancel.", FACTORY_RESET_CANCEL_WINDOW_TIMEOUT / 1000); + PSOC6_LOG("Factory Reset Triggered. Press button again within %us to cancel.", + FACTORY_RESET_CANCEL_WINDOW_TIMEOUT / 1000); // Start timer for FACTORY_RESET_CANCEL_WINDOW_TIMEOUT to allow user to // cancel, if required. sAppTask.StartTimer(FACTORY_RESET_CANCEL_WINDOW_TIMEOUT); @@ -325,7 +326,7 @@ void AppTask::FunctionHandler(AppEvent * event) // canceled. sAppTask.mFunction = Function::kNoneSelected; - P6_LOG("Factory Reset has been Canceled"); + PSOC6_LOG("Factory Reset has been Canceled"); } } } @@ -334,7 +335,7 @@ void AppTask::CancelTimer() { if (xTimerStop(sFunctionTimer, 0) == pdFAIL) { - P6_LOG("app timer stop() failed"); + PSOC6_LOG("app timer stop() failed"); appError(APP_ERROR_STOP_TIMER_FAILED); } @@ -345,7 +346,7 @@ void AppTask::StartTimer(uint32_t aTimeoutInMs) { if (xTimerIsTimerActive(sFunctionTimer)) { - P6_LOG("app timer already started!"); + PSOC6_LOG("app timer already started!"); CancelTimer(); } @@ -354,7 +355,7 @@ void AppTask::StartTimer(uint32_t aTimeoutInMs) // cannot immediately be sent to the timer command queue. if (xTimerChangePeriod(sFunctionTimer, aTimeoutInMs / portTICK_PERIOD_MS, 100) != pdPASS) { - P6_LOG("app timer start() failed"); + PSOC6_LOG("app timer start() failed"); appError(APP_ERROR_START_TIMER_FAILED); } @@ -385,11 +386,11 @@ void AppTask::PostEvent(const AppEvent * event) } if (!status) - P6_LOG("Failed to post event to app task event queue"); + PSOC6_LOG("Failed to post event to app task event queue"); } else { - P6_LOG("Event Queue is NULL should never happen"); + PSOC6_LOG("Event Queue is NULL should never happen"); } } @@ -401,7 +402,7 @@ void AppTask::DispatchEvent(AppEvent * event) } else { - P6_LOG("Event received with no handler. Dropping event."); + PSOC6_LOG("Event received with no handler. Dropping event."); } } @@ -414,7 +415,7 @@ void AppTask::OnOffUpdateClusterState(intptr_t context) if (status != Protocols::InteractionModel::Status::Success) { - P6_LOG("ERR: updating on/off %x", to_underlying(status)); + PSOC6_LOG("ERR: updating on/off %x", to_underlying(status)); } } @@ -435,7 +436,7 @@ void AppTask::InitOTARequestor() gRequestorUser.Init(&gRequestorCore, &gImageProcessor); - P6_LOG("Current Software Version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); - P6_LOG("Current Software Version String: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); + PSOC6_LOG("Current Software Version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + PSOC6_LOG("Current Software Version String: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); } #endif diff --git a/examples/all-clusters-app/infineon/psoc6/src/ButtonHandler.cpp b/examples/all-clusters-app/infineon/psoc6/src/ButtonHandler.cpp index 7d65fc4134625e..3fbd1c13796fd1 100644 --- a/examples/all-clusters-app/infineon/psoc6/src/ButtonHandler.cpp +++ b/examples/all-clusters-app/infineon/psoc6/src/ButtonHandler.cpp @@ -102,7 +102,7 @@ void ButtonHandler::TimerCallback(TimerHandle_t xTimer) buttonevent = cyhal_gpio_read(APP_FUNCTION_BUTTON); break; default: - P6_LOG("Unhandled TimerID: %d", timerId); + PSOC6_LOG("Unhandled TimerID: %d", timerId); break; } diff --git a/examples/all-clusters-app/infineon/psoc6/src/ClusterManager.cpp b/examples/all-clusters-app/infineon/psoc6/src/ClusterManager.cpp index 6659131ea8b9ab..caf1ac85dabc9e 100644 --- a/examples/all-clusters-app/infineon/psoc6/src/ClusterManager.cpp +++ b/examples/all-clusters-app/infineon/psoc6/src/ClusterManager.cpp @@ -50,9 +50,9 @@ ClusterManager ClusterManager::sCluster; void ClusterManager::OnOnOffPostAttributeChangeCallback(EndpointId endpointId, AttributeId attributeId, uint8_t * value) { VerifyOrExit(attributeId == OnOff::Attributes::OnOff::Id, - P6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); + PSOC6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX || endpointId == ENDPOINT_SECOND_IDX, - P6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); + PSOC6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); // At this point we can assume that value points to a bool value. mEndpointOnOffState[endpointId - 1] = *value; @@ -70,9 +70,9 @@ void ClusterManager::OnLevelControlAttributeChangeCallback(EndpointId endpointId uint8_t brightness = onOffState ? *value : 0; VerifyOrExit(attributeId == LevelControl::Attributes::CurrentLevel::Id, - P6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); + PSOC6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX || endpointId == ENDPOINT_SECOND_IDX, - P6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); + PSOC6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); endpointId == ENDPOINT_FIRST_IDX ? sClusterLED.SetBrightness(brightness) : sLightLED.SetBrightness(brightness); @@ -84,9 +84,9 @@ void ClusterManager::OnColorControlAttributeChangeCallback(EndpointId endpointId { VerifyOrExit(attributeId == ColorControl::Attributes::CurrentHue::Id || attributeId == ColorControl::Attributes::CurrentSaturation::Id, - P6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); + PSOC6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX || endpointId == ENDPOINT_SECOND_IDX, - P6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); + PSOC6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); if (endpointId == 1) { uint8_t hue, saturation; @@ -136,8 +136,8 @@ void IdentifyTimerHandler(Layer * systemLayer, void * appState) void ClusterManager::OnIdentifyPostAttributeChangeCallback(EndpointId endpointId, AttributeId attributeId, uint8_t * value) { VerifyOrExit(attributeId == Identify::Attributes::IdentifyTime::Id, - P6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); - VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX, P6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); + PSOC6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); + VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX, PSOC6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); /* IdentifyTime Attribute Spec mentions "flashing a light with a period of 0.5 seconds" */ sStatusLED.Blink(kIdentifyTimerDelayMS * 2); diff --git a/examples/all-clusters-app/infineon/psoc6/src/ZclCallbacks.cpp b/examples/all-clusters-app/infineon/psoc6/src/ZclCallbacks.cpp index 9a439771026736..2e805ac61367ee 100644 --- a/examples/all-clusters-app/infineon/psoc6/src/ZclCallbacks.cpp +++ b/examples/all-clusters-app/infineon/psoc6/src/ZclCallbacks.cpp @@ -39,9 +39,9 @@ void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & EndpointId endpoint = attributePath.mEndpointId; ClusterId clusterId = attributePath.mClusterId; AttributeId attributeId = attributePath.mAttributeId; - P6_LOG("MatterPostAttributeChangeCallback - Cluster ID: " ChipLogFormatMEI - ", EndPoint ID: '0x%02x', Attribute ID: " ChipLogFormatMEI, - ChipLogValueMEI(clusterId), endpoint, ChipLogValueMEI(attributeId)); + PSOC6_LOG("MatterPostAttributeChangeCallback - Cluster ID: " ChipLogFormatMEI + ", EndPoint ID: '0x%02x', Attribute ID: " ChipLogFormatMEI, + ChipLogValueMEI(clusterId), endpoint, ChipLogValueMEI(attributeId)); switch (clusterId) { @@ -61,7 +61,7 @@ void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & ClusterMgr().OnColorControlAttributeChangeCallback(endpoint, attributeId, value); break; default: - P6_LOG("Unhandled cluster ID: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); + PSOC6_LOG("Unhandled cluster ID: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); break; } } diff --git a/examples/all-clusters-app/infineon/psoc6/src/main.cpp b/examples/all-clusters-app/infineon/psoc6/src/main.cpp index 2dc8d6353cc62c..2344f380f802fc 100644 --- a/examples/all-clusters-app/infineon/psoc6/src/main.cpp +++ b/examples/all-clusters-app/infineon/psoc6/src/main.cpp @@ -57,7 +57,7 @@ static void main_task(void * pvParameters); //================================================================================= void appError(int err) { - P6_LOG("!!!!!!!!!!!! App Critical Error: %d !!!!!!!!!!!", err); + PSOC6_LOG("!!!!!!!!!!!! App Critical Error: %d !!!!!!!!!!!", err); portDISABLE_INTERRUPTS(); while (true) ; @@ -90,35 +90,35 @@ static void main_task(void * pvParameters) CHIP_ERROR ret = chip::DeviceLayer::PersistedStorage::KeyValueStoreMgrImpl().Init(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); + PSOC6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); appError(ret); } ret = PlatformMgr().InitChipStack(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PlatformMgr().InitChipStack() failed"); + PSOC6_LOG("PlatformMgr().InitChipStack() failed"); appError(ret); } - ret = chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName("P6_CLUSTERS"); + ret = chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName("PSOC6_CLUSTERS"); if (ret != CHIP_NO_ERROR) { - P6_LOG("ConnectivityMgr().SetBLEDeviceName() failed"); + PSOC6_LOG("ConnectivityMgr().SetBLEDeviceName() failed"); appError(ret); } - P6_LOG("Starting Platform Manager Event Loop"); + PSOC6_LOG("Starting Platform Manager Event Loop"); ret = PlatformMgr().StartEventLoopTask(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PlatformMgr().StartEventLoopTask() failed"); + PSOC6_LOG("PlatformMgr().StartEventLoopTask() failed"); appError(ret); } ret = GetAppTask().StartAppTask(); if (ret != CHIP_NO_ERROR) { - P6_LOG("GetAppTask().Init() failed"); + PSOC6_LOG("GetAppTask().Init() failed"); appError(ret); } @@ -131,7 +131,7 @@ static void main_task(void * pvParameters) // ================================================================================ int main(void) { - init_p6Platform(); + init_psoc6Platform(); #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR // Clear watchdog timer (started by bootloader) so that it doesn't trigger a reset cyhal_wdt_t wdt_obj; @@ -142,9 +142,9 @@ int main(void) MemMonitoring::startHeapMonitoring(); #endif - P6_LOG("==================================================\r\n"); - P6_LOG("chip-p6-all-clusters-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); - P6_LOG("==================================================\r\n"); + PSOC6_LOG("==================================================\r\n"); + PSOC6_LOG("chip-psoc6-all-clusters-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + PSOC6_LOG("==================================================\r\n"); /* Start the FreeRTOS scheduler */ vTaskStartScheduler(); @@ -154,5 +154,5 @@ int main(void) PlatformMgr().Shutdown(); // Should never get here. - P6_LOG("vTaskStartScheduler() failed"); + PSOC6_LOG("vTaskStartScheduler() failed"); } diff --git a/examples/all-clusters-app/linux/AllClustersCommandDelegate.cpp b/examples/all-clusters-app/linux/AllClustersCommandDelegate.cpp index 8effe6426cc49d..3c42eb1dd6a32e 100644 --- a/examples/all-clusters-app/linux/AllClustersCommandDelegate.cpp +++ b/examples/all-clusters-app/linux/AllClustersCommandDelegate.cpp @@ -28,6 +28,7 @@ #include #include +#include "ButtonEventsSimulator.h" #include #include #include @@ -36,13 +37,155 @@ #include #include +#include #include +#include using namespace chip; using namespace chip::app; using namespace chip::app::Clusters; using namespace chip::DeviceLayer; +namespace { + +std::unique_ptr sButtonSimulatorInstance{ nullptr }; + +bool HasNumericField(Json::Value & jsonValue, const std::string & field) +{ + return jsonValue.isMember(field) && jsonValue[field].isNumeric(); +} + +/** + * Named pipe handler for simulated long press on an action switch. + * + * Usage example: + * echo '{"Name": "SimulateActionSwitchLongPress", "EndpointId": 3, "ButtonId": 1, "LongPressDelayMillis": 800, + * "LongPressDurationMillis": 1000}' > /tmp/chip_all_clusters_fifo_1146610 + * + * JSON Arguments: + * - "Name": Must be "SimulateActionSwitchLongPress" + * - "EndpointId": number of endpoint having a switch cluster + * - "ButtonId": switch position in the switch cluster for "down" button (not idle) + * - "LongPressDelayMillis": Time in milliseconds before the LongPress + * - "LongPressDurationMillis": Total duration in milliseconds from start of the press to LongRelease + * + * @param jsonValue - JSON payload from named pipe + */ +void HandleSimulateActionSwitchLongPress(Json::Value & jsonValue) +{ + if (sButtonSimulatorInstance != nullptr) + { + ChipLogError(NotSpecified, "Button simulation already in progress! Ignoring request."); + return; + } + + bool hasEndpointId = HasNumericField(jsonValue, "EndpointId"); + bool hasButtonId = HasNumericField(jsonValue, "ButtonId"); + bool hasLongPressDelayMillis = HasNumericField(jsonValue, "LongPressDelayMillis"); + bool hasLongPressDurationMillis = HasNumericField(jsonValue, "LongPressDurationMillis"); + if (!hasEndpointId || !hasButtonId || !hasLongPressDelayMillis || !hasLongPressDurationMillis) + { + std::string inputJson = jsonValue.toStyledString(); + ChipLogError( + NotSpecified, + "Missing or invalid value for one of EndpointId, ButtonId, LongPressDelayMillis or LongPressDurationMillis in %s", + inputJson.c_str()); + return; + } + + EndpointId endpointId = static_cast(jsonValue["EndpointId"].asUInt()); + uint8_t buttonId = static_cast(jsonValue["ButtonId"].asUInt()); + System::Clock::Milliseconds32 longPressDelayMillis{ static_cast(jsonValue["LongPressDelayMillis"].asUInt()) }; + System::Clock::Milliseconds32 longPressDurationMillis{ static_cast(jsonValue["LongPressDurationMillis"].asUInt()) }; + auto buttonSimulator = std::make_unique(); + + bool success = buttonSimulator->SetMode(ButtonEventsSimulator::Mode::kModeLongPress) + .SetLongPressDelayMillis(longPressDelayMillis) + .SetLongPressDurationMillis(longPressDurationMillis) + .SetIdleButtonId(0) + .SetPressedButtonId(buttonId) + .SetEndpointId(endpointId) + .Execute([]() { sButtonSimulatorInstance.reset(); }); + + if (!success) + { + ChipLogError(NotSpecified, "Failed to start execution of button simulator!"); + return; + } + + sButtonSimulatorInstance = std::move(buttonSimulator); +} + +/** + * Named pipe handler for simulated multi-press on an action switch. + * + * Usage example: + * echo '{"Name": "SimulateActionSwitchMultiPress", "EndpointId": 3, "ButtonId": 1, "MultiPressPressedTimeMillis": 100, + * "MultiPressReleasedTimeMillis": 350, "MultiPressNumPresses": 2}' > /tmp/chip_all_clusters_fifo_1146610 + * + * JSON Arguments: + * - "Name": Must be "SimulateActionSwitchMultiPress" + * - "EndpointId": number of endpoint having a switch cluster + * - "ButtonId": switch position in the switch cluster for "down" button (not idle) + * - "MultiPressPressedTimeMillis": Pressed time in milliseconds for each press + * - "MultiPressReleasedTimeMillis": Released time in milliseconds after each press + * - "MultiPressNumPresses": Number of presses to simulate + * + * @param jsonValue - JSON payload from named pipe + */ +void HandleSimulateActionSwitchMultiPress(Json::Value & jsonValue) +{ + if (sButtonSimulatorInstance != nullptr) + { + ChipLogError(NotSpecified, "Button simulation already in progress! Ignoring request."); + return; + } + + bool hasEndpointId = HasNumericField(jsonValue, "EndpointId"); + bool hasButtonId = HasNumericField(jsonValue, "ButtonId"); + bool hasMultiPressPressedTimeMillis = HasNumericField(jsonValue, "MultiPressPressedTimeMillis"); + bool hasMultiPressReleasedTimeMillis = HasNumericField(jsonValue, "MultiPressReleasedTimeMillis"); + bool hasMultiPressNumPresses = HasNumericField(jsonValue, "MultiPressNumPresses"); + if (!hasEndpointId || !hasButtonId || !hasMultiPressPressedTimeMillis || !hasMultiPressReleasedTimeMillis || + !hasMultiPressNumPresses) + { + std::string inputJson = jsonValue.toStyledString(); + ChipLogError(NotSpecified, + "Missing or invalid value for one of EndpointId, ButtonId, MultiPressPressedTimeMillis, " + "MultiPressReleasedTimeMillis or MultiPressNumPresses in %s", + inputJson.c_str()); + return; + } + + EndpointId endpointId = static_cast(jsonValue["EndpointId"].asUInt()); + uint8_t buttonId = static_cast(jsonValue["ButtonId"].asUInt()); + System::Clock::Milliseconds32 multiPressPressedTimeMillis{ static_cast( + jsonValue["MultiPressPressedTimeMillis"].asUInt()) }; + System::Clock::Milliseconds32 multiPressReleasedTimeMillis{ static_cast( + jsonValue["MultiPressReleasedTimeMillis"].asUInt()) }; + uint8_t multiPressNumPresses = static_cast(jsonValue["MultiPressNumPresses"].asUInt()); + auto buttonSimulator = std::make_unique(); + + bool success = buttonSimulator->SetMode(ButtonEventsSimulator::Mode::kModeMultiPress) + .SetMultiPressPressedTimeMillis(multiPressPressedTimeMillis) + .SetMultiPressReleasedTimeMillis(multiPressReleasedTimeMillis) + .SetMultiPressNumPresses(multiPressNumPresses) + .SetIdleButtonId(0) + .SetPressedButtonId(buttonId) + .SetEndpointId(endpointId) + .Execute([]() { sButtonSimulatorInstance.reset(); }); + + if (!success) + { + ChipLogError(NotSpecified, "Failed to start execution of button simulator!"); + return; + } + + sButtonSimulatorInstance = std::move(buttonSimulator); +} + +} // namespace + AllClustersAppCommandHandler * AllClustersAppCommandHandler::FromJSON(const char * json) { Json::Reader reader; @@ -190,6 +333,14 @@ void AllClustersAppCommandHandler::HandleCommand(intptr_t context) std::string operation = self->mJsonValue["Operation"].asString(); self->OnOperationalStateChange(device, operation, self->mJsonValue["Param"]); } + else if (name == "SimulateActionSwitchLongPress") + { + HandleSimulateActionSwitchLongPress(self->mJsonValue); + } + else if (name == "SimulateActionSwitchMultiPress") + { + HandleSimulateActionSwitchMultiPress(self->mJsonValue); + } else { ChipLogError(NotSpecified, "Unhandled command: Should never happens"); diff --git a/examples/all-clusters-app/linux/BUILD.gn b/examples/all-clusters-app/linux/BUILD.gn index 3d52ef748de90d..a2f4ff0ab1f781 100644 --- a/examples/all-clusters-app/linux/BUILD.gn +++ b/examples/all-clusters-app/linux/BUILD.gn @@ -66,7 +66,10 @@ source_set("chip-all-clusters-common") { "${chip_root}/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp", "${chip_root}/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp", "AllClustersCommandDelegate.cpp", + "AllClustersCommandDelegate.h", "AppOptions.cpp", + "ButtonEventsSimulator.cpp", + "ButtonEventsSimulator.h", "ValveControlDelegate.cpp", "WindowCoveringManager.cpp", "include/tv-callbacks.cpp", diff --git a/examples/all-clusters-app/linux/ButtonEventsSimulator.cpp b/examples/all-clusters-app/linux/ButtonEventsSimulator.cpp new file mode 100644 index 00000000000000..44bf5657f5c2f6 --- /dev/null +++ b/examples/all-clusters-app/linux/ButtonEventsSimulator.cpp @@ -0,0 +1,210 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ButtonEventsSimulator.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace chip { +namespace app { + +namespace { + +void SetButtonPosition(EndpointId endpointId, uint8_t position) +{ + Clusters::Switch::Attributes::CurrentPosition::Set(endpointId, position); +} + +void EmitInitialPress(EndpointId endpointId, uint8_t newPosition) +{ + Clusters::Switch::Events::InitialPress::Type event{ newPosition }; + EventNumber eventNumber = 0; + + CHIP_ERROR err = LogEvent(event, endpointId, eventNumber); + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "Failed to log InitialPress event: %" CHIP_ERROR_FORMAT, err.Format()); + } + else + { + ChipLogProgress(NotSpecified, "Logged InitialPress(%u) on Endpoint %u", static_cast(newPosition), + static_cast(endpointId)); + } +} + +void EmitLongPress(EndpointId endpointId, uint8_t newPosition) +{ + Clusters::Switch::Events::LongPress::Type event{ newPosition }; + EventNumber eventNumber = 0; + + CHIP_ERROR err = LogEvent(event, endpointId, eventNumber); + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "Failed to log LongPress event: %" CHIP_ERROR_FORMAT, err.Format()); + } + else + { + ChipLogProgress(NotSpecified, "Logged LongPress(%u) on Endpoint %u", static_cast(newPosition), + static_cast(endpointId)); + } +} + +void EmitLongRelease(EndpointId endpointId, uint8_t previousPosition) +{ + Clusters::Switch::Events::LongRelease::Type event{}; + event.previousPosition = previousPosition; + EventNumber eventNumber = 0; + + CHIP_ERROR err = LogEvent(event, endpointId, eventNumber); + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "Failed to log LongRelease event: %" CHIP_ERROR_FORMAT, err.Format()); + } + else + { + ChipLogProgress(NotSpecified, "Logged LongRelease on Endpoint %u", static_cast(endpointId)); + } +} + +void EmitMultiPressComplete(EndpointId endpointId, uint8_t previousPosition, uint8_t count) +{ + Clusters::Switch::Events::MultiPressComplete::Type event{}; + event.previousPosition = previousPosition; + event.totalNumberOfPressesCounted = count; + EventNumber eventNumber = 0; + + CHIP_ERROR err = LogEvent(event, endpointId, eventNumber); + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "Failed to log MultiPressComplete event: %" CHIP_ERROR_FORMAT, err.Format()); + } + else + { + ChipLogProgress(NotSpecified, "Logged MultiPressComplete(count=%u) on Endpoint %u", static_cast(count), + static_cast(endpointId)); + } +} + +} // namespace + +void ButtonEventsSimulator::OnTimerDone(System::Layer * layer, void * appState) +{ + ButtonEventsSimulator * that = reinterpret_cast(appState); + that->Next(); +} + +bool ButtonEventsSimulator::Execute(DoneCallback && doneCallback) +{ + VerifyOrReturnValue(mIdleButtonId != mPressedButtonId, false); + + switch (mMode) + { + case Mode::kModeLongPress: + VerifyOrReturnValue(mLongPressDurationMillis > mLongPressDelayMillis, false); + SetState(State::kEmitStartOfLongPress); + break; + case Mode::kModeMultiPress: + VerifyOrReturnValue(mMultiPressPressedTimeMillis.count() > 0, false); + VerifyOrReturnValue(mMultiPressReleasedTimeMillis.count() > 0, false); + VerifyOrReturnValue(mMultiPressNumPresses > 0, false); + SetState(State::kEmitStartOfMultiPress); + break; + default: + return false; + } + mDoneCallback = std::move(doneCallback); + Next(); + return true; +} + +void ButtonEventsSimulator::SetState(ButtonEventsSimulator::State newState) +{ + ButtonEventsSimulator::State oldState = mState; + if (oldState != newState) + { + ChipLogProgress(NotSpecified, "ButtonEventsSimulator state change %u -> %u", static_cast(oldState), + static_cast(newState)); + } + + mState = newState; +} + +void ButtonEventsSimulator::StartTimer(System::Clock::Timeout duration) +{ + chip::DeviceLayer::SystemLayer().StartTimer(duration, &ButtonEventsSimulator::OnTimerDone, this); +} + +void ButtonEventsSimulator::Next() +{ + switch (mState) + { + case ButtonEventsSimulator::State::kIdle: { + ChipLogError(NotSpecified, "Found idle state where not expected!"); + break; + } + case ButtonEventsSimulator::State::kEmitStartOfLongPress: { + SetButtonPosition(mEndpointId, mPressedButtonId); + EmitInitialPress(mEndpointId, mPressedButtonId); + SetState(ButtonEventsSimulator::State::kEmitLongPress); + StartTimer(mLongPressDelayMillis); + break; + } + case ButtonEventsSimulator::State::kEmitLongPress: { + EmitLongPress(mEndpointId, mPressedButtonId); + SetState(ButtonEventsSimulator::State::kEmitLongRelease); + StartTimer(mLongPressDurationMillis - mLongPressDelayMillis); + break; + } + case ButtonEventsSimulator::State::kEmitLongRelease: { + SetButtonPosition(mEndpointId, mIdleButtonId); + EmitLongRelease(mEndpointId, mPressedButtonId); + SetState(ButtonEventsSimulator::State::kIdle); + mDoneCallback(); + break; + } + case ButtonEventsSimulator::State::kEmitStartOfMultiPress: { + EmitInitialPress(mEndpointId, mPressedButtonId); + StartTimer(mMultiPressNumPresses * (mMultiPressPressedTimeMillis + mMultiPressReleasedTimeMillis)); + SetState(ButtonEventsSimulator::State::kEmitEndOfMultiPress); + break; + } + case ButtonEventsSimulator::State::kEmitEndOfMultiPress: { + EmitMultiPressComplete(mEndpointId, mPressedButtonId, mMultiPressNumPresses); + SetState(ButtonEventsSimulator::State::kIdle); + mDoneCallback(); + break; + } + } +} + +} // namespace app +} // namespace chip diff --git a/examples/all-clusters-app/linux/ButtonEventsSimulator.h b/examples/all-clusters-app/linux/ButtonEventsSimulator.h new file mode 100644 index 00000000000000..658da98f14fefd --- /dev/null +++ b/examples/all-clusters-app/linux/ButtonEventsSimulator.h @@ -0,0 +1,143 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include + +#include +#include +#include + +namespace chip { +namespace app { + +/** + * State machine to emit button sequences. Configure with `SetXxx()` methods + * and then call `Execute()` with a functor to be called when done. + * + * The implementation has dependencies on SystemLayer (to start timers) and on + * EventLogging. + * + */ +class ButtonEventsSimulator +{ +public: + enum class Mode + { + kModeLongPress, + kModeMultiPress + }; + + using DoneCallback = std::function; + + ButtonEventsSimulator() = default; + + // Returns true on success to start execution, false on something going awry. + // `doneCallback` is called only if execution got started. + bool Execute(DoneCallback && doneCallback); + + ButtonEventsSimulator & SetLongPressDelayMillis(System::Clock::Milliseconds32 longPressDelayMillis) + { + mLongPressDelayMillis = longPressDelayMillis; + return *this; + } + + ButtonEventsSimulator & SetLongPressDurationMillis(System::Clock::Milliseconds32 longPressDurationMillis) + { + mLongPressDurationMillis = longPressDurationMillis; + return *this; + } + + ButtonEventsSimulator & SetMultiPressPressedTimeMillis(System::Clock::Milliseconds32 multiPressPressedTimeMillis) + { + mMultiPressPressedTimeMillis = multiPressPressedTimeMillis; + return *this; + } + + ButtonEventsSimulator & SetMultiPressReleasedTimeMillis(System::Clock::Milliseconds32 multiPressReleasedTimeMillis) + { + mMultiPressReleasedTimeMillis = multiPressReleasedTimeMillis; + return *this; + } + + ButtonEventsSimulator & SetMultiPressNumPresses(uint8_t multiPressNumPresses) + { + mMultiPressNumPresses = multiPressNumPresses; + return *this; + } + + ButtonEventsSimulator & SetIdleButtonId(uint8_t idleButtonId) + { + mIdleButtonId = idleButtonId; + return *this; + } + + ButtonEventsSimulator & SetPressedButtonId(uint8_t pressedButtonId) + { + mPressedButtonId = pressedButtonId; + return *this; + } + + ButtonEventsSimulator & SetMode(Mode mode) + { + mMode = mode; + return *this; + } + + ButtonEventsSimulator & SetEndpointId(EndpointId endpointId) + { + mEndpointId = endpointId; + return *this; + } + +private: + enum class State + { + kIdle = 0, + + kEmitStartOfLongPress = 1, + kEmitLongPress = 2, + kEmitLongRelease = 3, + + kEmitStartOfMultiPress = 4, + kEmitEndOfMultiPress = 5, + }; + + static void OnTimerDone(System::Layer * layer, void * appState); + void SetState(State newState); + void Next(); + void StartTimer(System::Clock::Timeout duration); + + DoneCallback mDoneCallback; + System::Clock::Milliseconds32 mLongPressDelayMillis{}; + System::Clock::Milliseconds32 mLongPressDurationMillis{}; + System::Clock::Milliseconds32 mMultiPressPressedTimeMillis{}; + System::Clock::Milliseconds32 mMultiPressReleasedTimeMillis{}; + uint8_t mMultiPressNumPresses{ 1 }; + uint8_t mIdleButtonId{ 0 }; + uint8_t mPressedButtonId{ 1 }; + EndpointId mEndpointId{ 1 }; + + Mode mMode{ Mode::kModeLongPress }; + State mState{ State::kIdle }; +}; + +} // namespace app +} // namespace chip diff --git a/examples/all-clusters-app/nrfconnect/CMakeLists.txt b/examples/all-clusters-app/nrfconnect/CMakeLists.txt index 563295e059b46c..8b5c3c1c9e72fd 100644 --- a/examples/all-clusters-app/nrfconnect/CMakeLists.txt +++ b/examples/all-clusters-app/nrfconnect/CMakeLists.txt @@ -23,15 +23,6 @@ get_filename_component(ENERGY_MANAGEMENT_COMMON_DIR ${CHIP_ROOT}/examples/energy include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) -set(hci_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.root) - -if(DEFINED CONF_FILE AND NOT CONF_FILE STREQUAL "prj.conf") - set(PM_STATIC_YML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/configuration/${BOARD}/pm_static_dfu.yml) -endif() - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) @@ -43,6 +34,7 @@ target_compile_options(app PRIVATE -Werror -Wno-error=maybe-uninitialized) project(chip-nrfconnect-all-clusters-app-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) diff --git a/examples/all-clusters-app/nrfconnect/Kconfig.sysbuild b/examples/all-clusters-app/nrfconnect/Kconfig.sysbuild new file mode 100644 index 00000000000000..6d6f1d811109a9 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/Kconfig.sysbuild @@ -0,0 +1,67 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y + +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if (SOC_SERIES_NRF53X) && !WIFI_NRF700X + +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +if BOOTLOADER_MCUBOOT + +#### DFU multi-image support +config DFU_MULTI_IMAGE_PACKAGE_BUILD + default y + +config DFU_MULTI_IMAGE_PACKAGE_APP + default y + +config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY + default y + +#### DFU network core configuration +if SOC_SERIES_NRF53X + +config MCUBOOT_UPDATEABLE_IMAGES + default 2 + +choice MCUBOOT_MODE + default MCUBOOT_MODE_OVERWRITE_ONLY +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_RSA +endchoice + +config SECURE_BOOT_NETCORE + default y + +config NETCORE_APP_UPDATE + default y + +config DFU_MULTI_IMAGE_PACKAGE_NET + default y + +endif # SOC_SERIES_NRF53X +endif # BOOTLOADER_MCUBOOT + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/all-clusters-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf b/examples/all-clusters-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf index 4da8bbcd8ac81b..78bdefbd4452da 100644 --- a/examples/all-clusters-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf +++ b/examples/all-clusters-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf @@ -38,6 +38,3 @@ CONFIG_MATTER_LOG_LEVEL_INF=y # Use partition manager to configure the settings partition not to overlap with Open Bootloader CONFIG_PM_SINGLE_IMAGE=y - -# Enable CHIP pairing automatically on application start. -CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y diff --git a/examples/all-clusters-app/nrfconnect/child_image/hci_rpmsg/prj.conf b/examples/all-clusters-app/nrfconnect/child_image/hci_rpmsg/prj.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/hci_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/all-clusters-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf b/examples/all-clusters-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/all-clusters-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf b/examples/all-clusters-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay b/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay deleted file mode 100644 index f18e3e0cc16434..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay b/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay b/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay b/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/prj_dfu.conf b/examples/all-clusters-app/nrfconnect/child_image/mcuboot/prj_dfu.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/prj_dfu.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/prj_release.conf b/examples/all-clusters-app/nrfconnect/child_image/mcuboot/prj_release.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/prj_release.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/all-clusters-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf b/examples/all-clusters-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/all-clusters-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_dfu.conf b/examples/all-clusters-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_dfu.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/all-clusters-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf b/examples/all-clusters-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/all-clusters-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/all-clusters-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/all-clusters-app/nrfconnect/pm_static_nrf52840dk_nrf52840_dfu.yml similarity index 100% rename from examples/all-clusters-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/all-clusters-app/nrfconnect/pm_static_nrf52840dk_nrf52840_dfu.yml diff --git a/examples/all-clusters-minimal-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/all-clusters-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml similarity index 100% rename from examples/all-clusters-minimal-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/all-clusters-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml diff --git a/examples/light-switch-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/all-clusters-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_dfu.yml similarity index 100% rename from examples/light-switch-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/all-clusters-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_dfu.yml diff --git a/examples/lighting-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/all-clusters-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml similarity index 100% rename from examples/lighting-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/all-clusters-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml diff --git a/examples/all-clusters-app/nrfconnect/configuration/nrf7002dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/all-clusters-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_dfu.yml similarity index 100% rename from examples/all-clusters-app/nrfconnect/configuration/nrf7002dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/all-clusters-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_dfu.yml diff --git a/examples/light-switch-app/nrfconnect/configuration/nrf7002dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/all-clusters-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml similarity index 100% rename from examples/light-switch-app/nrfconnect/configuration/nrf7002dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/all-clusters-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml diff --git a/examples/all-clusters-app/nrfconnect/prj.conf b/examples/all-clusters-app/nrfconnect/prj.conf index dfb604a06349c1..5917c3a9c7a17e 100644 --- a/examples/all-clusters-app/nrfconnect/prj.conf +++ b/examples/all-clusters-app/nrfconnect/prj.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32769 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/all-clusters-app/nrfconnect/prj_dfu.conf b/examples/all-clusters-app/nrfconnect/prj_dfu.conf index 3b5937b4073d9a..1925502dcad410 100644 --- a/examples/all-clusters-app/nrfconnect/prj_dfu.conf +++ b/examples/all-clusters-app/nrfconnect/prj_dfu.conf @@ -24,6 +24,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32769 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/all-clusters-app/nrfconnect/prj_release.conf b/examples/all-clusters-app/nrfconnect/prj_release.conf index 714fa9dd4ab740..b98004283b64b9 100644 --- a/examples/all-clusters-app/nrfconnect/prj_release.conf +++ b/examples/all-clusters-app/nrfconnect/prj_release.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32769 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/all-clusters-app/nrfconnect/sysbuild.conf b/examples/all-clusters-app/nrfconnect/sysbuild.conf new file mode 100644 index 00000000000000..e63a92c6b2bbab --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild.conf @@ -0,0 +1,18 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y +SB_CONFIG_MATTER_OTA=n diff --git a/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..694c3b08242f29 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf @@ -0,0 +1,52 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y diff --git a/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/prj_dfu.conf b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/prj_dfu.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/prj_dfu.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/app.overlay b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/app.overlay new file mode 100644 index 00000000000000..74d3dfbfd22f30 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/app.overlay @@ -0,0 +1,5 @@ +/ { + chosen { + zephyr,code-partition = &boot_partition; + }; +}; diff --git a/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf new file mode 100644 index 00000000000000..50610217c762b5 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf @@ -0,0 +1,19 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 diff --git a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay similarity index 90% rename from examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay rename to examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay index 9f9128c6beff60..054f04712058a3 100644 --- a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay +++ b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay @@ -1,5 +1,7 @@ /* + * * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +18,7 @@ / { chosen { + zephyr,code-partition = &boot_partition; nordic,pm-ext-flash = &mx25r64; }; }; diff --git a/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..2d86fe6442dd39 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +CONFIG_BOOT_SWAP_USING_MOVE=n +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay similarity index 90% rename from examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay rename to examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay index 9f9128c6beff60..054f04712058a3 100644 --- a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay +++ b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -1,5 +1,7 @@ /* + * * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +18,7 @@ / { chosen { + zephyr,code-partition = &boot_partition; nordic,pm-ext-flash = &mx25r64; }; }; diff --git a/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..81701b7eb63f70 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf @@ -0,0 +1,40 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# nRF7002DK uses SPI NOR external flash +CONFIG_GPIO=y +CONFIG_SPI=y +CONFIG_SPI_NOR=y +CONFIG_SPI_NOR_SFDP_DEVICETREE=y +CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 + +CONFIG_MULTITHREADING=y +CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay similarity index 90% rename from examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay rename to examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay index 9f9128c6beff60..054f04712058a3 100644 --- a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay +++ b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay @@ -1,5 +1,7 @@ /* + * * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +18,7 @@ / { chosen { + zephyr,code-partition = &boot_partition; nordic,pm-ext-flash = &mx25r64; }; }; diff --git a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/prj.conf b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/prj.conf similarity index 62% rename from examples/lit-icd-app/nrfconnect/child_image/mcuboot/prj.conf rename to examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/prj.conf index 3f43b733b4bb96..3bcb12fe7b8d25 100644 --- a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/prj.conf +++ b/examples/all-clusters-app/nrfconnect/sysbuild/mcuboot/prj.conf @@ -14,17 +14,36 @@ # limitations under the License. # -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. +CONFIG_MAIN_STACK_SIZE=10240 + +CONFIG_BOOT_SWAP_SAVE_ENCTLV=n +CONFIG_BOOT_BOOTSTRAP=n +CONFIG_PM=n + +CONFIG_FLASH=y +CONFIG_FPROTECT=y CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" +# Use minimal C library instead of the Picolib +CONFIG_MINIMAL_LIBC=y + # Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. CONFIG_CONSOLE=n CONFIG_SERIAL=n CONFIG_UART_CONSOLE=n CONFIG_USE_SEGGER_RTT=n CONFIG_GPIO=n + +CONFIG_BOOT_MAX_IMG_SECTORS=256 + +CONFIG_LOG=n +CONFIG_CONSOLE_HANDLER=n +CONFIG_BOOT_BANNER=n +CONFIG_NCS_BOOT_BANNER=n +CONFIG_TIMESLICING=n +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_MULTITHREADING=n +CONFIG_TICKLESS_KERNEL=n +CONFIG_TIMEOUT_64BIT=n +CONFIG_NRF_ENABLE_ICACHE=n diff --git a/examples/all-clusters-app/nrfconnect/sysbuild_dfu.conf b/examples/all-clusters-app/nrfconnect/sysbuild_dfu.conf new file mode 100644 index 00000000000000..edaaa8394e0155 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild_dfu.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y +SB_CONFIG_MATTER_OTA=y +SB_CONFIG_BOOTLOADER_MCUBOOT=y +SB_CONFIG_MATTER_FACTORY_DATA_GENERATE=y diff --git a/examples/all-clusters-app/nrfconnect/sysbuild_release.conf b/examples/all-clusters-app/nrfconnect/sysbuild_release.conf new file mode 100644 index 00000000000000..edaaa8394e0155 --- /dev/null +++ b/examples/all-clusters-app/nrfconnect/sysbuild_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y +SB_CONFIG_MATTER_OTA=y +SB_CONFIG_BOOTLOADER_MCUBOOT=y +SB_CONFIG_MATTER_FACTORY_DATA_GENERATE=y diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter index f7b4645e04f3a8..80fd60040a9142 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -3618,7 +3618,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -3716,11 +3715,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -3795,7 +3789,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -3833,7 +3826,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -3862,8 +3854,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } @@ -3986,7 +3976,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -6340,7 +6330,7 @@ endpoint 1 { ram attribute onLevel default = 0xFF; persist attribute startUpCurrentLevel default = 255; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -6550,7 +6540,7 @@ endpoint 1 { ram attribute enhancedColorMode default = 0x01; ram attribute colorCapabilities default = 0x1F; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; } server cluster BallastConfiguration { diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap index a5e9bdd3164ee2..8afff9a3507a3c 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap @@ -5047,7 +5047,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -7303,7 +7303,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/BUILD.gn b/examples/all-clusters-minimal-app/infineon/psoc6/BUILD.gn index c70c282db2ac17..c1bbd2b34aa130 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/BUILD.gn +++ b/examples/all-clusters-minimal-app/infineon/psoc6/BUILD.gn @@ -46,32 +46,38 @@ config("psoc6_ota_config") { ldflags = [ "-T" + rebase_path(linker_script, root_build_dir) ] - ldflags += [ "-Wl,--defsym,MCUBOOT_HEADER_SIZE=0x400,--defsym,MCUBOOT_BOOTLOADER_SIZE=0x18000,--defsym,CY_BOOT_PRIMARY_1_SIZE=0x1C0000" ] + ldflags += [ "-Wl,--undefined=uxTopUsedPriority -Wl,--defsym,MCUBOOT_HEADER_SIZE=0x400,--defsym,FLASH_AREA_IMG_1_PRIMARY_START=0x028000,--defsym,FLASH_AREA_IMG_1_PRIMARY_SIZE=0x1c0000" ] defines = [ "P6_OTA", - "OTA_SUPPORT ", - "OTA_USE_EXTERNAL_FLASH", - "CY_BOOT_USE_EXTERNAL_FLASH", - "MCUBOOT_HEADER_SIZE=0x400", - "MCUBOOT_MAX_IMG_SECTORS=3584", - "CY_BOOT_SCRATCH_SIZE=0x00004000", - "MCUBOOT_BOOTLOADER_SIZE=0x00018000", - "CY_BOOT_BOOTLOADER_SIZE=0x00018000", - "CY_BOOT_PRIMARY_1_START=0x00018000", - "CY_BOOT_PRIMARY_1_SIZE=0x1C0000", - "CY_BOOT_SECONDARY_1_START=0x00000000", - "CY_BOOT_SECONDARY_1_SIZE=0x001C0000", - "CY_FLASH_ERASE_VALUE=0xFF", + "COMPONENT_MCUBOOT", + "CY_BOOTLOADER=MCUBOOT", + "OTA_SUPPORT=1", + "COMPONENT_OTA_PSOC_062", + "PSOC_062_2M", + "OTA_USE_EXTERNAL_FLASH=1", + "ENABLE_OTA_LOGS", + "ENABLE_OTA_BOOTLOADER_ABSTRACTION_LOGS", "MCUBOOT_IMAGE_NUMBER=1", - "MCUBOOT_SLOT_SIZE=0x1C0000", - "MCUBOOT_SCRATCH_SIZE=0x4000", - "MCUBOOT_SECTOR_SIZE = 512", + "MCUBOOT_MAX_IMG_SECTORS=3584", + "FLASH_AREA_BOOTLOADER_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_BOOTLOADER_SIZE=0x028000", + "FLASH_AREA_BOOTLOADER_START=0x000000", + "FLASH_AREA_IMAGE_SCRATCH_DEV_ID='FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX)'", + "FLASH_AREA_IMAGE_SCRATCH_SIZE=0x080000", + "FLASH_AREA_IMAGE_SCRATCH_START=0x440000", + "FLASH_AREA_IMAGE_SWAP_STATUS_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_IMAGE_SWAP_STATUS_SIZE=0x006c00", + "FLASH_AREA_IMAGE_SWAP_STATUS_START=0x1e8000", + "FLASH_AREA_IMG_1_PRIMARY_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_IMG_1_PRIMARY_SIZE=0x1c0000", + "FLASH_AREA_IMG_1_PRIMARY_START=0x028000", + "FLASH_AREA_IMG_1_SECONDARY_DEV_ID='FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX)'", + "FLASH_AREA_IMG_1_SECONDARY_SIZE=0x1c0000", + "FLASH_AREA_IMG_1_SECONDARY_START=0x000200", "APP_VERSION_MAJOR=1", "APP_VERSION_MINOR=0", "APP_VERSION_BUILD=0", - "MCUBOOT_OVERWRITE_ONLY", - "CY_ENABLE_XIP_PROGRAM", ] if (build_update_image) { @@ -88,7 +94,7 @@ psoc6_sdk_sources("all_clusters_app_sdk_sources") { defines = [ "BOARD_ID=${psoc6_board}", - "P6_LOG_ENABLED=1", + "PSOC6_LOG_ENABLED=1", "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setup_pin_code}", ] diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/include/AppConfig.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/AppConfig.h index 35e45a8aef4223..cad1a523bfa188 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/include/AppConfig.h +++ b/examples/all-clusters-minimal-app/infineon/psoc6/include/AppConfig.h @@ -48,14 +48,14 @@ #define THREAD_ACTIVE_POLLING_INTERVAL_MS 100 #define THREAD_INACTIVE_POLLING_INTERVAL_MS 1000 -// P6 Logging +// PSOC6 Logging #ifdef __cplusplus extern "C" { #endif void appError(int err); -void P6Log(const char * aFormat, ...); -#define P6_LOG(...) P6Log(__VA_ARGS__) +void PSOC6Log(const char * aFormat, ...); +#define PSOC6_LOG(...) PSOC6Log(__VA_ARGS__) #ifdef __cplusplus } diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h index b5102a153e25e1..82a9537df4b6cc 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h +++ b/examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h @@ -29,6 +29,10 @@ #include #include +extern "C" { +#include "flash_map_backend.h" +} + // Application-defined error codes in the CHIP_ERROR space. #define APP_ERROR_EVENT_QUEUE_FAILED CHIP_APPLICATION_ERROR(0x01) #define APP_ERROR_CREATE_TASK_FAILED CHIP_APPLICATION_ERROR(0x02) diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/include/CHIPProjectConfig.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/CHIPProjectConfig.h index a371e16de2d7c0..e072cc6f2c4c0f 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/include/CHIPProjectConfig.h +++ b/examples/all-clusters-minimal-app/infineon/psoc6/include/CHIPProjectConfig.h @@ -42,10 +42,10 @@ #define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8004 /* The ProductName attribute of the Basic cluster. */ -#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "P6-CYW43012 Clusters Minimal" +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "PSOC6-CYW43012 Clusters Minimal" /* The HardwareVersionString attribute of the Basic cluster. */ -#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "P6-43012" +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "PSOC6-43012" /* The HardwareVersion attribute of the Basic cluster. */ #define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION 43012 diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp index ccc271dd7a2d06..169b2f88acb7ab 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp +++ b/examples/all-clusters-minimal-app/infineon/psoc6/src/AppTask.cpp @@ -145,7 +145,7 @@ CHIP_ERROR AppTask::StartAppTask() sAppEventQueue = xQueueCreateStatic(APP_EVENT_QUEUE_SIZE, sizeof(AppEvent), sAppEventQueueBuffer, &sAppEventQueueStruct); if (sAppEventQueue == NULL) { - P6_LOG("Failed to allocate app event queue"); + PSOC6_LOG("Failed to allocate app event queue"); appError(APP_ERROR_EVENT_QUEUE_FAILED); } // Start App task. @@ -157,10 +157,10 @@ CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR - int rc = boot_set_confirmed(); + int rc = flash_area_boot_set_confirmed(); if (rc != 0) { - P6_LOG("boot_set_confirmed failed"); + PSOC6_LOG("flash_area_boot_set_confirmed failed"); appError(CHIP_ERROR_UNINITIALIZED); } #endif @@ -193,11 +193,11 @@ CHIP_ERROR AppTask::Init() ); if (sFunctionTimer == NULL) { - P6_LOG("funct timer create failed"); + PSOC6_LOG("funct timer create failed"); appError(APP_ERROR_CREATE_TIMER_FAILED); } NetWorkCommissioningInstInit(); - P6_LOG("Current Software Version: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); + PSOC6_LOG("Current Software Version: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); // Initialize LEDs sStatusLED.Init(SYSTEM_STATE_LED); @@ -218,11 +218,11 @@ void AppTask::AppTaskMain(void * pvParameter) CHIP_ERROR err = sAppTask.Init(); if (err != CHIP_NO_ERROR) { - P6_LOG("AppTask.Init() failed"); + PSOC6_LOG("AppTask.Init() failed"); appError(err); } - P6_LOG("App Task started"); + PSOC6_LOG("App Task started"); while (true) { @@ -298,7 +298,8 @@ void AppTask::FunctionHandler(AppEvent * event) { if (!sAppTask.mFunctionTimerActive && sAppTask.mFunction == Function::kNoneSelected) { - P6_LOG("Factory Reset Triggered. Press button again within %us to cancel.", FACTORY_RESET_CANCEL_WINDOW_TIMEOUT / 1000); + PSOC6_LOG("Factory Reset Triggered. Press button again within %us to cancel.", + FACTORY_RESET_CANCEL_WINDOW_TIMEOUT / 1000); // Start timer for FACTORY_RESET_CANCEL_WINDOW_TIMEOUT to allow user to // cancel, if required. sAppTask.StartTimer(FACTORY_RESET_CANCEL_WINDOW_TIMEOUT); @@ -322,7 +323,7 @@ void AppTask::FunctionHandler(AppEvent * event) // canceled. sAppTask.mFunction = Function::kNoneSelected; - P6_LOG("Factory Reset has been Canceled"); + PSOC6_LOG("Factory Reset has been Canceled"); } } } @@ -331,7 +332,7 @@ void AppTask::CancelTimer() { if (xTimerStop(sFunctionTimer, 0) == pdFAIL) { - P6_LOG("app timer stop() failed"); + PSOC6_LOG("app timer stop() failed"); appError(APP_ERROR_STOP_TIMER_FAILED); } @@ -342,7 +343,7 @@ void AppTask::StartTimer(uint32_t aTimeoutInMs) { if (xTimerIsTimerActive(sFunctionTimer)) { - P6_LOG("app timer already started!"); + PSOC6_LOG("app timer already started!"); CancelTimer(); } @@ -351,7 +352,7 @@ void AppTask::StartTimer(uint32_t aTimeoutInMs) // cannot immediately be sent to the timer command queue. if (xTimerChangePeriod(sFunctionTimer, aTimeoutInMs / portTICK_PERIOD_MS, 100) != pdPASS) { - P6_LOG("app timer start() failed"); + PSOC6_LOG("app timer start() failed"); appError(APP_ERROR_START_TIMER_FAILED); } @@ -382,11 +383,11 @@ void AppTask::PostEvent(const AppEvent * aEvent) } if (!status) - P6_LOG("Failed to post event to app task event queue"); + PSOC6_LOG("Failed to post event to app task event queue"); } else { - P6_LOG("Event Queue is NULL should never happen"); + PSOC6_LOG("Event Queue is NULL should never happen"); } } @@ -398,7 +399,7 @@ void AppTask::DispatchEvent(AppEvent * aEvent) } else { - P6_LOG("Event received with no handler. Dropping event."); + PSOC6_LOG("Event received with no handler. Dropping event."); } } @@ -411,7 +412,7 @@ void AppTask::OnOffUpdateClusterState(intptr_t context) if (status != Protocols::InteractionModel::Status::Success) { - P6_LOG("ERR: updating on/off %x", to_underlying(status)); + PSOC6_LOG("ERR: updating on/off %x", to_underlying(status)); } } @@ -432,7 +433,7 @@ void AppTask::InitOTARequestor() gRequestorUser.Init(&gRequestorCore, &gImageProcessor); - P6_LOG("Current Software Version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); - P6_LOG("Current Software Version String: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); + PSOC6_LOG("Current Software Version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + PSOC6_LOG("Current Software Version String: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); } #endif diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/src/ButtonHandler.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/ButtonHandler.cpp index 7d65fc4134625e..3fbd1c13796fd1 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/src/ButtonHandler.cpp +++ b/examples/all-clusters-minimal-app/infineon/psoc6/src/ButtonHandler.cpp @@ -102,7 +102,7 @@ void ButtonHandler::TimerCallback(TimerHandle_t xTimer) buttonevent = cyhal_gpio_read(APP_FUNCTION_BUTTON); break; default: - P6_LOG("Unhandled TimerID: %d", timerId); + PSOC6_LOG("Unhandled TimerID: %d", timerId); break; } diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/src/ClusterManager.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/ClusterManager.cpp index 38d009a53f8fc7..32428177bbd247 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/src/ClusterManager.cpp +++ b/examples/all-clusters-minimal-app/infineon/psoc6/src/ClusterManager.cpp @@ -50,9 +50,9 @@ ClusterManager ClusterManager::sCluster; void ClusterManager::OnOnOffPostAttributeChangeCallback(EndpointId endpointId, AttributeId attributeId, uint8_t * value) { VerifyOrExit(attributeId == OnOff::Attributes::OnOff::Id, - P6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); + PSOC6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX || endpointId == ENDPOINT_SECOND_IDX, - P6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); + PSOC6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); // At this point we can assume that value points to a bool value. mEndpointOnOffState[endpointId - 1] = *value; @@ -70,9 +70,9 @@ void ClusterManager::OnLevelControlAttributeChangeCallback(EndpointId endpointId uint8_t brightness = onOffState ? *value : 0; VerifyOrExit(attributeId == LevelControl::Attributes::CurrentLevel::Id, - P6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); + PSOC6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX || endpointId == ENDPOINT_SECOND_IDX, - P6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); + PSOC6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); endpointId == ENDPOINT_FIRST_IDX ? sClusterLED.SetBrightness(brightness) : sLightLED.SetBrightness(brightness); @@ -85,9 +85,9 @@ void ClusterManager::OnColorControlAttributeChangeCallback(EndpointId endpointId using namespace ColorControl::Attributes; VerifyOrExit(attributeId == CurrentHue::Id || attributeId == CurrentSaturation::Id, - P6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); + PSOC6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX || endpointId == ENDPOINT_SECOND_IDX, - P6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); + PSOC6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); if (endpointId == 1) { uint8_t hue, saturation; @@ -137,8 +137,8 @@ void IdentifyTimerHandler(Layer * systemLayer, void * appState) void ClusterManager::OnIdentifyPostAttributeChangeCallback(EndpointId endpointId, AttributeId attributeId, uint8_t * value) { VerifyOrExit(attributeId == Identify::Attributes::IdentifyTime::Id, - P6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); - VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX, P6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); + PSOC6_LOG("Unhandled Attribute ID: '" ChipLogFormatMEI "'", ChipLogValueMEI(attributeId))); + VerifyOrExit(endpointId == ENDPOINT_FIRST_IDX, PSOC6_LOG("Unexpected EndPoint ID: `0x%02x'", endpointId)); /* IdentifyTime Attribute Spec mentions "flashing a light with a period of 0.5 seconds" */ sStatusLED.Blink(kIdentifyTimerDelayMS * 2); diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/src/ZclCallbacks.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/ZclCallbacks.cpp index 9a439771026736..2e805ac61367ee 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/src/ZclCallbacks.cpp +++ b/examples/all-clusters-minimal-app/infineon/psoc6/src/ZclCallbacks.cpp @@ -39,9 +39,9 @@ void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & EndpointId endpoint = attributePath.mEndpointId; ClusterId clusterId = attributePath.mClusterId; AttributeId attributeId = attributePath.mAttributeId; - P6_LOG("MatterPostAttributeChangeCallback - Cluster ID: " ChipLogFormatMEI - ", EndPoint ID: '0x%02x', Attribute ID: " ChipLogFormatMEI, - ChipLogValueMEI(clusterId), endpoint, ChipLogValueMEI(attributeId)); + PSOC6_LOG("MatterPostAttributeChangeCallback - Cluster ID: " ChipLogFormatMEI + ", EndPoint ID: '0x%02x', Attribute ID: " ChipLogFormatMEI, + ChipLogValueMEI(clusterId), endpoint, ChipLogValueMEI(attributeId)); switch (clusterId) { @@ -61,7 +61,7 @@ void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & ClusterMgr().OnColorControlAttributeChangeCallback(endpoint, attributeId, value); break; default: - P6_LOG("Unhandled cluster ID: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); + PSOC6_LOG("Unhandled cluster ID: " ChipLogFormatMEI, ChipLogValueMEI(clusterId)); break; } } diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/src/main.cpp b/examples/all-clusters-minimal-app/infineon/psoc6/src/main.cpp index 5ac891ae1816f2..72a10004f39a3a 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/src/main.cpp +++ b/examples/all-clusters-minimal-app/infineon/psoc6/src/main.cpp @@ -57,7 +57,7 @@ static void main_task(void * pvParameters); //================================================================================= void appError(int err) { - P6_LOG("!!!!!!!!!!!! App Critical Error: %d !!!!!!!!!!!", err); + PSOC6_LOG("!!!!!!!!!!!! App Critical Error: %d !!!!!!!!!!!", err); portDISABLE_INTERRUPTS(); while (true) ; @@ -90,35 +90,35 @@ static void main_task(void * pvParameters) CHIP_ERROR ret = chip::DeviceLayer::PersistedStorage::KeyValueStoreMgrImpl().Init(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); + PSOC6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); appError(ret); } ret = PlatformMgr().InitChipStack(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PlatformMgr().InitChipStack() failed"); + PSOC6_LOG("PlatformMgr().InitChipStack() failed"); appError(ret); } - ret = chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName("P6_CLUSTERS"); + ret = chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName("PSOC6_CLUSTERS"); if (ret != CHIP_NO_ERROR) { - P6_LOG("ConnectivityMgr().SetBLEDeviceName() failed"); + PSOC6_LOG("ConnectivityMgr().SetBLEDeviceName() failed"); appError(ret); } - P6_LOG("Starting Platform Manager Event Loop"); + PSOC6_LOG("Starting Platform Manager Event Loop"); ret = PlatformMgr().StartEventLoopTask(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PlatformMgr().StartEventLoopTask() failed"); + PSOC6_LOG("PlatformMgr().StartEventLoopTask() failed"); appError(ret); } ret = GetAppTask().StartAppTask(); if (ret != CHIP_NO_ERROR) { - P6_LOG("GetAppTask().Init() failed"); + PSOC6_LOG("GetAppTask().Init() failed"); appError(ret); } @@ -131,7 +131,7 @@ static void main_task(void * pvParameters) // ================================================================================ int main(void) { - init_p6Platform(); + init_psoc6Platform(); #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR // Clear watchdog timer (started by bootloader) so that it doesn't trigger a reset cyhal_wdt_t wdt_obj; @@ -142,9 +142,9 @@ int main(void) MemMonitoring::startHeapMonitoring(); #endif - P6_LOG("==================================================\r\n"); - P6_LOG("chip-p6-all-clusters-minimal-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); - P6_LOG("==================================================\r\n"); + PSOC6_LOG("==================================================\r\n"); + PSOC6_LOG("chip-psoc6-all-clusters-minimal-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + PSOC6_LOG("==================================================\r\n"); /* Start the FreeRTOS scheduler */ vTaskStartScheduler(); @@ -154,5 +154,5 @@ int main(void) PlatformMgr().Shutdown(); // Should never get here. - P6_LOG("vTaskStartScheduler() failed"); + PSOC6_LOG("vTaskStartScheduler() failed"); } diff --git a/examples/all-clusters-minimal-app/nrfconnect/CMakeLists.txt b/examples/all-clusters-minimal-app/nrfconnect/CMakeLists.txt index 2e5c3fbbf1102f..08feb83a62a40b 100644 --- a/examples/all-clusters-minimal-app/nrfconnect/CMakeLists.txt +++ b/examples/all-clusters-minimal-app/nrfconnect/CMakeLists.txt @@ -22,14 +22,6 @@ get_filename_component(ALL_CLUSTERS_COMMON_DIR ${CHIP_ROOT}/examples/all-cluster include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) - -if(DEFINED CONF_FILE AND NOT CONF_FILE STREQUAL "prj.conf") - set(PM_STATIC_YML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/configuration/${BOARD}/pm_static_dfu.yml) -endif() - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) @@ -41,6 +33,7 @@ target_compile_options(app PRIVATE -Werror -Wno-error=maybe-uninitialized) project(chip-nrfconnect-all-clusters-minimal-app-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) diff --git a/examples/all-clusters-minimal-app/nrfconnect/Kconfig.sysbuild b/examples/all-clusters-minimal-app/nrfconnect/Kconfig.sysbuild new file mode 100644 index 00000000000000..6d6f1d811109a9 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/Kconfig.sysbuild @@ -0,0 +1,67 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y + +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if (SOC_SERIES_NRF53X) && !WIFI_NRF700X + +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +if BOOTLOADER_MCUBOOT + +#### DFU multi-image support +config DFU_MULTI_IMAGE_PACKAGE_BUILD + default y + +config DFU_MULTI_IMAGE_PACKAGE_APP + default y + +config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY + default y + +#### DFU network core configuration +if SOC_SERIES_NRF53X + +config MCUBOOT_UPDATEABLE_IMAGES + default 2 + +choice MCUBOOT_MODE + default MCUBOOT_MODE_OVERWRITE_ONLY +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_RSA +endchoice + +config SECURE_BOOT_NETCORE + default y + +config NETCORE_APP_UPDATE + default y + +config DFU_MULTI_IMAGE_PACKAGE_NET + default y + +endif # SOC_SERIES_NRF53X +endif # BOOTLOADER_MCUBOOT + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/all-clusters-minimal-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf b/examples/all-clusters-minimal-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf index 4da8bbcd8ac81b..78bdefbd4452da 100644 --- a/examples/all-clusters-minimal-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf +++ b/examples/all-clusters-minimal-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf @@ -38,6 +38,3 @@ CONFIG_MATTER_LOG_LEVEL_INF=y # Use partition manager to configure the settings partition not to overlap with Open Bootloader CONFIG_PM_SINGLE_IMAGE=y - -# Enable CHIP pairing automatically on application start. -CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y diff --git a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay b/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay deleted file mode 100644 index f18e3e0cc16434..00000000000000 --- a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay b/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/prj_dfu.conf b/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/prj_dfu.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/prj_dfu.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/prj_release.conf b/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/prj_release.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/all-clusters-minimal-app/nrfconnect/child_image/mcuboot/prj_release.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/all-clusters-minimal-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf b/examples/all-clusters-minimal-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/all-clusters-minimal-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/all-clusters-minimal-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_dfu.conf b/examples/all-clusters-minimal-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_dfu.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/all-clusters-minimal-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/all-clusters-minimal-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf b/examples/all-clusters-minimal-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/all-clusters-minimal-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/all-clusters-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml b/examples/all-clusters-minimal-app/nrfconnect/pm_static_nrf52840dk_nrf52840_dfu.yml similarity index 100% rename from examples/all-clusters-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml rename to examples/all-clusters-minimal-app/nrfconnect/pm_static_nrf52840dk_nrf52840_dfu.yml diff --git a/examples/all-clusters-minimal-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml b/examples/all-clusters-minimal-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml similarity index 100% rename from examples/all-clusters-minimal-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml rename to examples/all-clusters-minimal-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml diff --git a/examples/lit-icd-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/all-clusters-minimal-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_dfu.yml similarity index 100% rename from examples/lit-icd-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/all-clusters-minimal-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_dfu.yml diff --git a/examples/lock-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/all-clusters-minimal-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml similarity index 100% rename from examples/lock-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/all-clusters-minimal-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml diff --git a/examples/all-clusters-minimal-app/nrfconnect/prj.conf b/examples/all-clusters-minimal-app/nrfconnect/prj.conf index 0491fbb825666f..58dae15804fe81 100644 --- a/examples/all-clusters-minimal-app/nrfconnect/prj.conf +++ b/examples/all-clusters-minimal-app/nrfconnect/prj.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32769 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/all-clusters-minimal-app/nrfconnect/prj_dfu.conf b/examples/all-clusters-minimal-app/nrfconnect/prj_dfu.conf index a96c97d2517580..46535f44bd21e4 100644 --- a/examples/all-clusters-minimal-app/nrfconnect/prj_dfu.conf +++ b/examples/all-clusters-minimal-app/nrfconnect/prj_dfu.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32769 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/all-clusters-minimal-app/nrfconnect/prj_release.conf b/examples/all-clusters-minimal-app/nrfconnect/prj_release.conf index e885563a98618f..4d81894306b6ca 100644 --- a/examples/all-clusters-minimal-app/nrfconnect/prj_release.conf +++ b/examples/all-clusters-minimal-app/nrfconnect/prj_release.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32769 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild.conf new file mode 100644 index 00000000000000..e63a92c6b2bbab --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild.conf @@ -0,0 +1,18 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y +SB_CONFIG_MATTER_OTA=n diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..694c3b08242f29 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf @@ -0,0 +1,52 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/prj_dfu.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/prj_dfu.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/prj_dfu.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/app.overlay b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/app.overlay new file mode 100644 index 00000000000000..74d3dfbfd22f30 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/app.overlay @@ -0,0 +1,5 @@ +/ { + chosen { + zephyr,code-partition = &boot_partition; + }; +}; diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf new file mode 100644 index 00000000000000..50610217c762b5 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf @@ -0,0 +1,19 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..2d86fe6442dd39 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +CONFIG_BOOT_SWAP_USING_MOVE=n +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay similarity index 90% rename from examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay rename to examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay index 50069180506973..054f04712058a3 100644 --- a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -1,5 +1,7 @@ /* + * * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,8 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + / { chosen { + zephyr,code-partition = &boot_partition; nordic,pm-ext-flash = &mx25r64; }; }; diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..81701b7eb63f70 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf @@ -0,0 +1,40 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# nRF7002DK uses SPI NOR external flash +CONFIG_GPIO=y +CONFIG_SPI=y +CONFIG_SPI_NOR=y +CONFIG_SPI_NOR_SFDP_DEVICETREE=y +CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 + +CONFIG_MULTITHREADING=y +CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/prj_release.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/prj.conf similarity index 62% rename from examples/lit-icd-app/nrfconnect/child_image/mcuboot/prj_release.conf rename to examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/prj.conf index 3f43b733b4bb96..3bcb12fe7b8d25 100644 --- a/examples/lit-icd-app/nrfconnect/child_image/mcuboot/prj_release.conf +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild/mcuboot/prj.conf @@ -14,17 +14,36 @@ # limitations under the License. # -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. +CONFIG_MAIN_STACK_SIZE=10240 + +CONFIG_BOOT_SWAP_SAVE_ENCTLV=n +CONFIG_BOOT_BOOTSTRAP=n +CONFIG_PM=n + +CONFIG_FLASH=y +CONFIG_FPROTECT=y CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" +# Use minimal C library instead of the Picolib +CONFIG_MINIMAL_LIBC=y + # Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. CONFIG_CONSOLE=n CONFIG_SERIAL=n CONFIG_UART_CONSOLE=n CONFIG_USE_SEGGER_RTT=n CONFIG_GPIO=n + +CONFIG_BOOT_MAX_IMG_SECTORS=256 + +CONFIG_LOG=n +CONFIG_CONSOLE_HANDLER=n +CONFIG_BOOT_BANNER=n +CONFIG_NCS_BOOT_BANNER=n +CONFIG_TIMESLICING=n +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_MULTITHREADING=n +CONFIG_TICKLESS_KERNEL=n +CONFIG_TIMEOUT_64BIT=n +CONFIG_NRF_ENABLE_ICACHE=n diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild_dfu.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild_dfu.conf new file mode 100644 index 00000000000000..7151539bc715fc --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild_dfu.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y +SB_CONFIG_MATTER_OTA=y +SB_CONFIG_BOOTLOADER_MCUBOOT=y + diff --git a/examples/all-clusters-minimal-app/nrfconnect/sysbuild_release.conf b/examples/all-clusters-minimal-app/nrfconnect/sysbuild_release.conf new file mode 100644 index 00000000000000..edaaa8394e0155 --- /dev/null +++ b/examples/all-clusters-minimal-app/nrfconnect/sysbuild_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y +SB_CONFIG_MATTER_OTA=y +SB_CONFIG_BOOTLOADER_MCUBOOT=y +SB_CONFIG_MATTER_FACTORY_DATA_GENERATE=y diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index 3600cfdcc740cb..8f91a116cb0bb1 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -125,7 +125,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -2330,7 +2330,7 @@ endpoint 2 { ram attribute defaultMoveRate; persist attribute startUpCurrentLevel default = 255; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/bridge-app/bridge-common/bridge-app.zap b/examples/bridge-app/bridge-common/bridge-app.zap index 9e79b7848a4dda..1b6b16be94d51a 100644 --- a/examples/bridge-app/bridge-common/bridge-app.zap +++ b/examples/bridge-app/bridge-common/bridge-app.zap @@ -5387,7 +5387,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/chef/chef.py b/examples/chef/chef.py index c4b7aa8aca162b..cecbf646ffeedf 100755 --- a/examples/chef/chef.py +++ b/examples/chef/chef.py @@ -199,6 +199,7 @@ def bundle_nrfconnect(device_name: str) -> None: nrf_root = os.path.join(_CHEF_SCRIPT_PATH, "nrfconnect", "build", + "nrfconnect", "zephyr") scripts_root = os.path.join(_REPO_BASE_PATH, "scripts", @@ -723,9 +724,10 @@ def main() -> int: f"cp build/$(git rev-parse HEAD)-{options.sample_device_type_name}.tar.xz {_CHEF_SCRIPT_PATH}") elif options.build_target == "nrfconnect": shell.run_cmd(f"cd {_CHEF_SCRIPT_PATH}/nrfconnect") - nrf_build_cmds = ["west build -b nrf52840dk_nrf52840"] + nrf_build_cmds = ["west build -b nrf52840dk/nrf52840"] if options.do_clean: nrf_build_cmds.append("-p always") + nrf_build_cmds.append("--sysbuild") nrf_build_cmds.append("--") if options.do_rpc: nrf_build_cmds.append("-DOVERLAY_CONFIG=rpc.overlay") @@ -736,7 +738,7 @@ def main() -> int: nrf_build_cmds.append( f"-DCONFIG_CHIP_DEVICE_PRODUCT_NAME='\"{options.pname}\"'") nrf_build_cmds.append( - f"-DSAMPLE_NAME={options.sample_device_type_name}") + f"-DCONFIG_CHEF_DEVICE_TYPE='\"{options.sample_device_type_name}\"'") nrf_build_cmds.append( f"-DCONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING='\"{sw_ver_string}\"'") diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index b5922f3082632b..83413127c088db 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -2041,7 +2041,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x03; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap index 1fe8c97a3cda61..444408ac97d1ac 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap @@ -4564,7 +4564,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter index d85bd9fa866873..d56dff0afcf204 100644 --- a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter +++ b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter @@ -1267,7 +1267,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -1365,11 +1364,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -1444,7 +1438,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1482,7 +1475,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -1511,8 +1503,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } diff --git a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter index 319b6b25104be0..9621d615447e40 100644 --- a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter +++ b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter @@ -125,7 +125,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -2407,7 +2407,7 @@ endpoint 2 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.zap b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.zap index 3935c80b5b62d8..6a4517c2962607 100644 --- a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.zap +++ b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.zap @@ -4666,7 +4666,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter index 66aa1eabaab2c8..c5059bc7a07bad 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1404,7 +1404,7 @@ cluster GroupKeyManagement = 63 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -1988,7 +1988,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -2047,7 +2047,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x0010; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap index f3a2c9649d7356..d9ba9c9926b329 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap @@ -3047,7 +3047,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3925,7 +3925,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter index dcc7f2724d5b03..da3fb96aae5575 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1852,7 +1852,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x03; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap index 29e4889ffbe438..3feb19881c6a29 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap @@ -3301,7 +3301,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter index 013752d2fdbf8a..2cc78bab075179 100644 --- a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter +++ b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter index 4f81dc1f1a4580..48c250ea3fd4b5 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1505,7 +1505,7 @@ cluster FixedLabel = 64 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2109,7 +2109,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x03; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -2159,7 +2159,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x1f; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap index b72d455419f8a7..f0fc3c6c264c20 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap @@ -3269,7 +3269,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4029,7 +4029,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter index 8bf334f5d7c66d..45bdce794448c0 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1624,7 +1624,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -1722,11 +1721,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -1801,7 +1795,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1839,7 +1832,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -1868,8 +1860,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } @@ -2237,7 +2227,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 1; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap index cc2e7ef77d2186..88f0e7a0408646 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap @@ -19,18 +19,18 @@ "package": [ { "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/zcl/zcl.json", - "type": "zcl-properties", + "path": "../../../src/app/zap-templates/app-templates.json", + "type": "gen-templates-json", "category": "matter", - "version": 1, - "description": "Matter SDK ZCL data" + "version": "chip-v1" }, { "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/app-templates.json", - "type": "gen-templates-json", + "path": "../../../src/app/zap-templates/zcl/zcl.json", + "type": "zcl-properties", "category": "matter", - "version": "chip-v1" + "version": 1, + "description": "Matter SDK ZCL data" } ], "endpointTypes": [ @@ -3173,7 +3173,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter index 68956182340faf..b5a953cb331994 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1789,7 +1789,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap index c9ecb1d30b494c..e8625f2f612caf 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap @@ -3269,7 +3269,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_onofflight_samplemei.matter b/examples/chef/devices/rootnode_onofflight_samplemei.matter index 242a210ecf0f4c..201ad01c70d944 100644 --- a/examples/chef/devices/rootnode_onofflight_samplemei.matter +++ b/examples/chef/devices/rootnode_onofflight_samplemei.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1821,7 +1821,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/chef/devices/rootnode_onofflight_samplemei.zap b/examples/chef/devices/rootnode_onofflight_samplemei.zap index c7e4698ff78641..6670453d47603e 100644 --- a/examples/chef/devices/rootnode_onofflight_samplemei.zap +++ b/examples/chef/devices/rootnode_onofflight_samplemei.zap @@ -3269,7 +3269,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter index 3d730b7474395e..81770335f21b94 100644 --- a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter +++ b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter @@ -1207,7 +1207,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -1305,11 +1304,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -1384,7 +1378,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1422,7 +1415,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -1451,8 +1443,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } diff --git a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.zap b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.zap index a784ab5723b85f..f831de4d5d9a7c 100644 --- a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.zap +++ b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.zap @@ -24,13 +24,6 @@ "category": "matter", "version": 1, "description": "Matter SDK ZCL data" - }, - { - "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/app-templates.json", - "type": "gen-templates-json", - "category": "matter", - "version": "chip-v1" } ], "endpointTypes": [ diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter index b1e4870d7ccffb..8cbcd9852df88f 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter @@ -125,7 +125,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1686,7 +1686,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x1; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap index 03f05dae9248db..b766b72f319f87 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap @@ -2985,7 +2985,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter index 2ee66aec3362e1..6ae0a08d75721a 100644 --- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter +++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter @@ -1427,7 +1427,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -1525,11 +1524,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -1604,7 +1598,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1642,7 +1635,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -1671,8 +1663,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } diff --git a/examples/chef/nrfconnect/CMakeLists.txt b/examples/chef/nrfconnect/CMakeLists.txt index 98f5cdeafdca75..081c510435c1e6 100644 --- a/examples/chef/nrfconnect/CMakeLists.txt +++ b/examples/chef/nrfconnect/CMakeLists.txt @@ -21,8 +21,6 @@ get_filename_component(CHEF ${CMAKE_CURRENT_SOURCE_DIR}/../ REALPATH) include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -get_filename_component(GEN_DIR ${CHEF}/out/${SAMPLE_NAME}/zap-generated REALPATH) - set(CONF_FILE prj.conf) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) @@ -31,10 +29,6 @@ message(STATUS "Product ID " ${CONFIG_CHIP_DEVICE_PRODUCT_ID}) message(STATUS "Product Name " ${CONFIG_CHIP_DEVICE_PRODUCT_NAME}) message(STATUS "SW Version String" ${CONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING}) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}.conf) @@ -43,8 +37,11 @@ endif() find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) +get_filename_component(GEN_DIR ${CHEF}/out/${CONFIG_CHEF_DEVICE_TYPE}/zap-generated REALPATH) + project(chip-nrfconnect-chef-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) @@ -107,10 +104,10 @@ target_sources(app PRIVATE ${CHEF}/nrfconnect/main.cpp ) -message(STATUS ${CHEF}/devices/${SAMPLE_NAME}.zap) +message(STATUS ${CHEF}/devices/${CONFIG_CHEF_DEVICE_TYPE}.zap) chip_configure_data_model(app INCLUDE_SERVER - ZAP_FILE ${CHEF}/devices/${SAMPLE_NAME}.zap + ZAP_FILE ${CHEF}/devices/${CONFIG_CHEF_DEVICE_TYPE}.zap ) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) diff --git a/examples/chef/nrfconnect/Kconfig b/examples/chef/nrfconnect/Kconfig index 2b1125e68bbef6..f5ef9cd1aa1e2c 100644 --- a/examples/chef/nrfconnect/Kconfig +++ b/examples/chef/nrfconnect/Kconfig @@ -15,6 +15,12 @@ # mainmenu "Matter nRF Connect Chef Example Application" +config CHEF_DEVICE_TYPE + string "Chef app device type" + default "" + help + Specifies the device type used to generate data model for the chef app. It should be the string literal matching one of the file names located in the chef's devices directory. + rsource "../../../config/nrfconnect/chip-module/Kconfig.defaults" rsource "../../../config/nrfconnect/chip-module/Kconfig.features" source "Kconfig.zephyr" diff --git a/examples/lit-icd-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf b/examples/chef/nrfconnect/Kconfig.sysbuild similarity index 60% rename from examples/lit-icd-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf rename to examples/chef/nrfconnect/Kconfig.sysbuild index 48deaa9fa18135..b3e964a82b5439 100644 --- a/examples/lit-icd-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf +++ b/examples/chef/nrfconnect/Kconfig.sysbuild @@ -14,12 +14,16 @@ # limitations under the License. # -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if SOC_SERIES_NRF53X -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/chef/nrfconnect/prj.conf b/examples/chef/nrfconnect/prj.conf index 03c7e188675c95..2f310436a50202 100644 --- a/examples/chef/nrfconnect/prj.conf +++ b/examples/chef/nrfconnect/prj.conf @@ -47,9 +47,13 @@ CONFIG_CHIP_PROJECT_CONFIG="CHIPProjectConfig.h" # 32773 == 0x8005 (example lighting-app) CONFIG_CHIP_DEVICE_PRODUCT_ID=32773 -# Enable CHIP pairing automatically on application start. +# Enable Matter pairing automatically on application start. CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Configure CHIP shell CONFIG_CHIP_LIB_SHELL=y CONFIG_OPENTHREAD_SHELL=y diff --git a/examples/chef/nrfconnect/sysbuild.conf b/examples/chef/nrfconnect/sysbuild.conf new file mode 100644 index 00000000000000..e63a92c6b2bbab --- /dev/null +++ b/examples/chef/nrfconnect/sysbuild.conf @@ -0,0 +1,18 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y +SB_CONFIG_MATTER_OTA=n diff --git a/examples/chef/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/chef/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/chef/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/chef/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/chef/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/chef/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/chef/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/chef/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/chef/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/chef/sample_app_util/test_files/sample_zap_file.zap b/examples/chef/sample_app_util/test_files/sample_zap_file.zap index 5dfd0fb28a9427..420eaa37ef5615 100644 --- a/examples/chef/sample_app_util/test_files/sample_zap_file.zap +++ b/examples/chef/sample_app_util/test_files/sample_zap_file.zap @@ -1,6 +1,6 @@ { "fileFormat": 2, - "featureLevel": 100, + "featureLevel": 102, "creator": "zap", "keyValuePairs": [ { @@ -29,6 +29,7 @@ "pathRelativity": "relativeToZap", "path": "../../../../src/app/zap-templates/app-templates.json", "type": "gen-templates-json", + "category": "matter", "version": "chip-v1" } ], @@ -4925,7 +4926,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/chip-tool/commands/clusters/CustomArgument.h b/examples/chip-tool/commands/clusters/CustomArgument.h index c7d81414659755..05da3a37936119 100644 --- a/examples/chip-tool/commands/clusters/CustomArgument.h +++ b/examples/chip-tool/commands/clusters/CustomArgument.h @@ -230,13 +230,7 @@ class CustomArgumentParser class CustomArgument { public: - ~CustomArgument() - { - if (mData != nullptr) - { - chip::Platform::MemoryFree(mData); - } - } + ~CustomArgument() { Reset(); } CHIP_ERROR Parse(const char * label, const char * json) { @@ -286,6 +280,15 @@ class CustomArgument return writer.CopyElement(tag, reader); } + void Reset() + { + if (mData != nullptr) + { + chip::Platform::MemoryFree(mData); + mData = nullptr; + } + } + // We trust our consumers to do the encoding of our data correctly, so don't // need to know whether we are being encoded for a write. static constexpr bool kIsFabricScoped = false; diff --git a/examples/chip-tool/commands/common/Command.cpp b/examples/chip-tool/commands/common/Command.cpp index 2c4f1eb3540e9f..82e9eedc461dd5 100644 --- a/examples/chip-tool/commands/common/Command.cpp +++ b/examples/chip-tool/commands/common/Command.cpp @@ -1069,6 +1069,11 @@ void Command::ResetArguments() auto vectorArgument = static_cast *>(arg.value); vectorArgument->clear(); } + else if (type == ArgumentType::Custom) + { + auto argument = static_cast(arg.value); + argument->Reset(); + } else if (type == ArgumentType::VectorCustom) { auto vectorArgument = static_cast *>(arg.value); diff --git a/examples/chip-tool/commands/pairing/OpenCommissioningWindowCommand.cpp b/examples/chip-tool/commands/pairing/OpenCommissioningWindowCommand.cpp index 3d4c296e7864fb..bc80e568b2bd7f 100644 --- a/examples/chip-tool/commands/pairing/OpenCommissioningWindowCommand.cpp +++ b/examples/chip-tool/commands/pairing/OpenCommissioningWindowCommand.cpp @@ -34,10 +34,14 @@ CHIP_ERROR OpenCommissioningWindowCommand::RunCommand() if (mCommissioningWindowOption == Controller::CommissioningWindowOpener::CommissioningWindowOption::kTokenWithRandomPIN) { SetupPayload ignored; - return mWindowOpener->OpenCommissioningWindow(mNodeId, System::Clock::Seconds16(mCommissioningWindowTimeout), mIteration, - mDiscriminator, NullOptional, NullOptional, - &mOnOpenCommissioningWindowCallback, ignored, - /* readVIDPIDAttributes */ true); + return mWindowOpener->OpenCommissioningWindow(Controller::CommissioningWindowPasscodeParams() + .SetNodeId(mNodeId) + .SetTimeout(mCommissioningWindowTimeout) + .SetIteration(mIteration) + .SetDiscriminator(mDiscriminator) + .SetReadVIDPIDAttributes(true) + .SetCallback(&mOnOpenCommissioningWindowCallback), + ignored); } ChipLogError(chipTool, "Unknown commissioning window option: %d", to_underlying(mCommissioningWindowOption)); diff --git a/examples/common/pigweed/BUILD.gn b/examples/common/pigweed/BUILD.gn index e523bea380c03f..6252f86e637890 100644 --- a/examples/common/pigweed/BUILD.gn +++ b/examples/common/pigweed/BUILD.gn @@ -82,6 +82,7 @@ pw_proto_library("button_service") { pw_proto_library("fabric_admin_service") { sources = [ "protos/fabric_admin_service.proto" ] + inputs = [ "protos/fabric_admin_service.options" ] deps = [ "$dir_pw_protobuf:common_protos" ] strip_prefix = "protos" prefix = "fabric_admin_service" diff --git a/examples/common/pigweed/protos/fabric_admin_service.options b/examples/common/pigweed/protos/fabric_admin_service.options new file mode 100644 index 00000000000000..9a65ae8a2b61d1 --- /dev/null +++ b/examples/common/pigweed/protos/fabric_admin_service.options @@ -0,0 +1,2 @@ +chip.rpc.DeviceCommissioningWindowInfo.verifier max_size:97 // kSpake2p_VerifierSerialized_Length +chip.rpc.DeviceCommissioningWindowInfo.salt max_size:32 // kSpake2p_Max_PBKDF_Salt_Length diff --git a/examples/common/pigweed/protos/fabric_admin_service.proto b/examples/common/pigweed/protos/fabric_admin_service.proto index e52fd2951ac0d7..7f6ec4f4995b12 100644 --- a/examples/common/pigweed/protos/fabric_admin_service.proto +++ b/examples/common/pigweed/protos/fabric_admin_service.proto @@ -5,8 +5,13 @@ import 'pw_protobuf_protos/common.proto'; package chip.rpc; // Define the message for a synchronized end device with necessary fields -message DeviceInfo { +message DeviceCommissioningWindowInfo { uint64 node_id = 1; + uint32 commissioning_timeout = 2; + uint32 discriminator = 3; + uint32 iterations = 4; + bytes salt = 5; + bytes verifier = 6; } // Define the response message to convey the status of the operation @@ -15,6 +20,5 @@ message OperationStatus { } service FabricAdmin { - rpc OpenCommissioningWindow(DeviceInfo) returns (OperationStatus){} + rpc OpenCommissioningWindow(DeviceCommissioningWindowInfo) returns (OperationStatus){} } - diff --git a/examples/common/pigweed/rpc_services/FabricAdmin.h b/examples/common/pigweed/rpc_services/FabricAdmin.h index 5254b9e9054a0c..14de9d50f60673 100644 --- a/examples/common/pigweed/rpc_services/FabricAdmin.h +++ b/examples/common/pigweed/rpc_services/FabricAdmin.h @@ -34,7 +34,8 @@ class FabricAdmin : public pw_rpc::nanopb::FabricAdmin::Service public: virtual ~FabricAdmin() = default; - virtual pw::Status OpenCommissioningWindow(const chip_rpc_DeviceInfo & request, chip_rpc_OperationStatus & response) + virtual pw::Status OpenCommissioningWindow(const chip_rpc_DeviceCommissioningWindowInfo & request, + chip_rpc_OperationStatus & response) { return pw::Status::Unimplemented(); } diff --git a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter index 47f4845661fd74..dcfae7fdb2cbc5 100644 --- a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter +++ b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter @@ -1313,7 +1313,7 @@ cluster BooleanState = 69 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -1329,6 +1329,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -1367,6 +1368,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1706,7 +1708,7 @@ endpoint 0 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x0007; - ram attribute clusterRevision default = 2; + ram attribute clusterRevision default = 3; handle command RegisterClient; handle command RegisterClientResponse; diff --git a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.zap b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.zap index 64c948a5c8c233..83c1526403104e 100644 --- a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.zap +++ b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.zap @@ -3834,7 +3834,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter index d44ca7ddd07d4b..0fb89660b37975 100644 --- a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter +++ b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter @@ -1313,7 +1313,7 @@ cluster BooleanState = 69 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -1329,6 +1329,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -1367,6 +1368,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1700,7 +1702,7 @@ endpoint 0 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x0000; - ram attribute clusterRevision default = 2; + ram attribute clusterRevision default = 3; } } endpoint 1 { diff --git a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.zap b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.zap index 0b05af158f1bde..ae00575abd3592 100644 --- a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.zap +++ b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.zap @@ -3696,7 +3696,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/fabric-admin/commands/pairing/OpenCommissioningWindowCommand.cpp b/examples/fabric-admin/commands/pairing/OpenCommissioningWindowCommand.cpp index 93d1f6f51002f8..b2d811fdc8b114 100644 --- a/examples/fabric-admin/commands/pairing/OpenCommissioningWindowCommand.cpp +++ b/examples/fabric-admin/commands/pairing/OpenCommissioningWindowCommand.cpp @@ -33,11 +33,33 @@ CHIP_ERROR OpenCommissioningWindowCommand::RunCommand() if (mCommissioningWindowOption == Controller::CommissioningWindowOpener::CommissioningWindowOption::kTokenWithRandomPIN) { - SetupPayload ignored; - return mWindowOpener->OpenCommissioningWindow(mNodeId, System::Clock::Seconds16(mCommissioningWindowTimeout), mIteration, - mDiscriminator, NullOptional, NullOptional, - &mOnOpenCommissioningWindowCallback, ignored, - /* readVIDPIDAttributes */ true); + if (mVerifier.HasValue()) + { + VerifyOrReturnError(mSalt.HasValue(), CHIP_ERROR_INVALID_ARGUMENT); + return mWindowOpener->OpenCommissioningWindow(Controller::CommissioningWindowVerifierParams() + .SetNodeId(mNodeId) + .SetEndpointId(mEndpointId) + .SetTimeout(mCommissioningWindowTimeout) + .SetIteration(mIteration) + .SetDiscriminator(mDiscriminator) + .SetVerifier(mVerifier.Value()) + .SetSalt(mSalt.Value()) + .SetCallback(&mOnOpenCommissioningWindowVerifierCallback)); + } + else + { + SetupPayload ignored; + return mWindowOpener->OpenCommissioningWindow(Controller::CommissioningWindowPasscodeParams() + .SetNodeId(mNodeId) + .SetEndpointId(mEndpointId) + .SetTimeout(mCommissioningWindowTimeout) + .SetIteration(mIteration) + .SetDiscriminator(mDiscriminator) + .SetSalt(mSalt) + .SetReadVIDPIDAttributes(true) + .SetCallback(&mOnOpenCommissioningWindowCallback), + ignored); + } } ChipLogError(NotSpecified, "Unknown commissioning window option: %d", to_underlying(mCommissioningWindowOption)); @@ -58,6 +80,11 @@ void OpenCommissioningWindowCommand::OnOpenCommissioningWindowResponse(void * co OnOpenBasicCommissioningWindowResponse(context, remoteId, err); } +void OpenCommissioningWindowCommand::OnOpenCommissioningWindowVerifierResponse(void * context, NodeId remoteId, CHIP_ERROR err) +{ + OnOpenBasicCommissioningWindowResponse(context, remoteId, err); +} + void OpenCommissioningWindowCommand::OnOpenBasicCommissioningWindowResponse(void * context, NodeId remoteId, CHIP_ERROR err) { LogErrorOnFailure(err); diff --git a/examples/fabric-admin/commands/pairing/OpenCommissioningWindowCommand.h b/examples/fabric-admin/commands/pairing/OpenCommissioningWindowCommand.h index 86e1b68c3d5f3f..09788507210aaf 100644 --- a/examples/fabric-admin/commands/pairing/OpenCommissioningWindowCommand.h +++ b/examples/fabric-admin/commands/pairing/OpenCommissioningWindowCommand.h @@ -35,6 +35,7 @@ class OpenCommissioningWindowCommand : public CHIPCommand OpenCommissioningWindowCommand(CredentialIssuerCommands * credIssuerCommands) : CHIPCommand("open-commissioning-window", credIssuerCommands), mOnOpenCommissioningWindowCallback(OnOpenCommissioningWindowResponse, this), + mOnOpenCommissioningWindowVerifierCallback(OnOpenCommissioningWindowVerifierResponse, this), mOnOpenBasicCommissioningWindowCallback(OnOpenBasicCommissioningWindowResponse, this) { AddArgument("node-id", 0, UINT64_MAX, &mNodeId, "Node to send command to."); @@ -47,6 +48,12 @@ class OpenCommissioningWindowCommand : public CHIPCommand &mIteration, "Number of PBKDF iterations to use to derive the verifier. Ignored if 'option' is 0."); AddArgument("discriminator", 0, 4096, &mDiscriminator, "Discriminator to use for advertising. Ignored if 'option' is 0."); AddArgument("timeout", 0, UINT16_MAX, &mTimeout, "Time, in seconds, before this command is considered to have timed out."); + AddArgument("salt", &mSalt, + "Salt payload encoded in hexadecimal. Random salt will be generated if absent. " + "This needs to be present if verifier is provided, corresponding to salt used for generating verifier"); + AddArgument("verifier", &mVerifier, + "PAKE Passcode verifier encoded in hexadecimal format. Will be generated from random setup pin and other " + "params if absent"); } void RegisterDelegate(CommissioningWindowDelegate * delegate) { mDelegate = delegate; } @@ -69,12 +76,16 @@ class OpenCommissioningWindowCommand : public CHIPCommand uint16_t mDiscriminator; chip::Optional mTimeout; + chip::Optional mSalt; + chip::Optional mVerifier; chip::Platform::UniquePtr mWindowOpener; static void OnOpenCommissioningWindowResponse(void * context, NodeId deviceId, CHIP_ERROR status, chip::SetupPayload payload); + static void OnOpenCommissioningWindowVerifierResponse(void * context, NodeId deviceId, CHIP_ERROR status); static void OnOpenBasicCommissioningWindowResponse(void * context, NodeId deviceId, CHIP_ERROR status); chip::Callback::Callback mOnOpenCommissioningWindowCallback; + chip::Callback::Callback mOnOpenCommissioningWindowVerifierCallback; chip::Callback::Callback mOnOpenBasicCommissioningWindowCallback; }; diff --git a/examples/fabric-admin/rpc/RpcServer.cpp b/examples/fabric-admin/rpc/RpcServer.cpp index 51ecb1ff6c13c5..d4979e5a27c427 100644 --- a/examples/fabric-admin/rpc/RpcServer.cpp +++ b/examples/fabric-admin/rpc/RpcServer.cpp @@ -37,14 +37,27 @@ namespace { class FabricAdmin final : public rpc::FabricAdmin { public: - pw::Status OpenCommissioningWindow(const chip_rpc_DeviceInfo & request, chip_rpc_OperationStatus & response) override + pw::Status OpenCommissioningWindow(const chip_rpc_DeviceCommissioningWindowInfo & request, + chip_rpc_OperationStatus & response) override { - NodeId nodeId = request.node_id; + NodeId nodeId = request.node_id; + uint32_t commissioningTimeout = request.commissioning_timeout; + uint32_t iterations = request.iterations; + uint32_t discriminator = request.discriminator; + + char saltHex[Crypto::kSpake2p_Max_PBKDF_Salt_Length * 2 + 1]; + Encoding::BytesToHex(request.salt.bytes, request.salt.size, saltHex, sizeof(saltHex), Encoding::HexFlags::kNullTerminate); + + char verifierHex[Crypto::kSpake2p_VerifierSerialized_Length * 2 + 1]; + Encoding::BytesToHex(request.verifier.bytes, request.verifier.size, verifierHex, sizeof(verifierHex), + Encoding::HexFlags::kNullTerminate); + ChipLogProgress(NotSpecified, "Received OpenCommissioningWindow request: 0x%lx", nodeId); - char command[64]; - snprintf(command, sizeof(command), "pairing open-commissioning-window %ld %d %d %d %d %d", nodeId, kRootEndpointId, - kEnhancedCommissioningMethod, kWindowTimeout, kIteration, kDiscriminator); + char command[512]; + snprintf(command, sizeof(command), "pairing open-commissioning-window %ld %d %d %d %d %d --salt hex:%s --verifier hex:%s", + nodeId, kRootEndpointId, kEnhancedCommissioningMethod, commissioningTimeout, iterations, discriminator, saltHex, + verifierHex); PushCommand(command); diff --git a/examples/fabric-bridge-app/linux/RpcClient.cpp b/examples/fabric-bridge-app/linux/RpcClient.cpp index 02916b87aaa06a..d2aef5d1d82e5e 100644 --- a/examples/fabric-bridge-app/linux/RpcClient.cpp +++ b/examples/fabric-bridge-app/linux/RpcClient.cpp @@ -95,12 +95,9 @@ CHIP_ERROR InitRpcClient(uint16_t rpcServerPort) return rpc::client::StartPacketProcessing(); } -CHIP_ERROR OpenCommissioningWindow(NodeId nodeId) +CHIP_ERROR OpenCommissioningWindow(chip_rpc_DeviceCommissioningWindowInfo device) { - ChipLogProgress(NotSpecified, "OpenCommissioningWindow with Node Id 0x:" ChipLogFormatX64, ChipLogValueX64(nodeId)); - - chip_rpc_DeviceInfo device; - device.node_id = nodeId; + ChipLogProgress(NotSpecified, "OpenCommissioningWindow with Node Id 0x" ChipLogFormatX64, ChipLogValueX64(device.node_id)); // The RPC call is kept alive until it completes. When a response is received, it will be logged by the handler // function and the call will complete. @@ -114,3 +111,35 @@ CHIP_ERROR OpenCommissioningWindow(NodeId nodeId) return WaitForResponse(call); } + +CHIP_ERROR +OpenCommissioningWindow(chip::Controller::CommissioningWindowPasscodeParams params) +{ + chip_rpc_DeviceCommissioningWindowInfo device; + device.node_id = params.GetNodeId(); + device.commissioning_timeout = params.GetTimeout().count(); + device.discriminator = params.GetDiscriminator(); + device.iterations = params.GetIteration(); + + return OpenCommissioningWindow(device); +} + +CHIP_ERROR +OpenCommissioningWindow(chip::Controller::CommissioningWindowVerifierParams params) +{ + chip_rpc_DeviceCommissioningWindowInfo device; + device.node_id = params.GetNodeId(); + device.commissioning_timeout = params.GetTimeout().count(); + device.discriminator = params.GetDiscriminator(); + device.iterations = params.GetIteration(); + + VerifyOrReturnError(params.GetSalt().size() <= sizeof(device.salt.bytes), CHIP_ERROR_BUFFER_TOO_SMALL); + memcpy(device.salt.bytes, params.GetSalt().data(), params.GetSalt().size()); + device.salt.size = static_cast(params.GetSalt().size()); + + VerifyOrReturnError(params.GetVerifier().size() <= sizeof(device.verifier.bytes), CHIP_ERROR_BUFFER_TOO_SMALL); + memcpy(device.verifier.bytes, params.GetVerifier().data(), params.GetVerifier().size()); + device.verifier.size = static_cast(params.GetVerifier().size()); + + return OpenCommissioningWindow(device); +} diff --git a/examples/fabric-bridge-app/linux/include/RpcClient.h b/examples/fabric-bridge-app/linux/include/RpcClient.h index 34fa5c19de9349..e7e2cc5b48505c 100644 --- a/examples/fabric-bridge-app/linux/include/RpcClient.h +++ b/examples/fabric-bridge-app/linux/include/RpcClient.h @@ -18,6 +18,7 @@ #pragma once +#include #include constexpr uint16_t kFabricAdminServerPort = 33001; @@ -33,12 +34,25 @@ constexpr uint16_t kFabricAdminServerPort = 33001; CHIP_ERROR InitRpcClient(uint16_t rpcServerPort); /** - * Opens a commissioning window for a specified node. + * Opens a commissioning window for a specified node using setup PIN (passcode). * - * @param nodeId The identifier of the node for which the commissioning window should be opened. + * @param params Params for opening the commissioning window using passcode. * @return CHIP_ERROR An error code indicating the success or failure of the operation. * - CHIP_NO_ERROR: The RPC command was successfully processed. * - CHIP_ERROR_BUSY: Another commissioning window is currently in progress. * - CHIP_ERROR_INTERNAL: An internal error occurred. */ -CHIP_ERROR OpenCommissioningWindow(chip::NodeId nodeId); +CHIP_ERROR +OpenCommissioningWindow(chip::Controller::CommissioningWindowPasscodeParams params); + +/** + * Opens a commissioning window for a specified node using pre-computed PAKE passcode verifier. + * + * @param params Params for opening the commissioning window using verifier. + * @return CHIP_ERROR An error code indicating the success or failure of the operation. + * - CHIP_NO_ERROR: The RPC command was successfully sent. + * - CHIP_ERROR_BUSY: Another commissioning window is currently in progress. + * - CHIP_ERROR_INTERNAL: An internal error occurred. + */ +CHIP_ERROR +OpenCommissioningWindow(chip::Controller::CommissioningWindowVerifierParams params); diff --git a/examples/fabric-bridge-app/linux/main.cpp b/examples/fabric-bridge-app/linux/main.cpp index 0aa22b8445ee56..d8fb45dea08a02 100644 --- a/examples/fabric-bridge-app/linux/main.cpp +++ b/examples/fabric-bridge-app/linux/main.cpp @@ -23,6 +23,7 @@ #include "DeviceManager.h" #include +#include #if defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE #include "RpcClient.h" @@ -69,7 +70,11 @@ void BridgePollingThread() #if defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE else if (ch == 'o') { - CHIP_ERROR err = OpenCommissioningWindow(0x1234); + CHIP_ERROR err = OpenCommissioningWindow(chip::Controller::CommissioningWindowPasscodeParams() + .SetNodeId(0x1234) + .SetTimeout(300) + .SetDiscriminator(3840) + .SetIteration(1000)); if (err != CHIP_NO_ERROR) { ChipLogError(NotSpecified, "Failed to call OpenCommissioningWindow RPC: %" CHIP_ERROR_FORMAT, err.Format()); @@ -115,7 +120,7 @@ void AdministratorCommissioningCommandHandler::InvokeCommand(HandlerContext & ha using Protocols::InteractionModel::Status; EndpointId endpointId = handlerContext.mRequestPath.mEndpointId; - ChipLogProgress(NotSpecified, "Received command to open commissioning window on Endpoind: %d", endpointId); + ChipLogProgress(NotSpecified, "Received command to open commissioning window on Endpoint: %d", endpointId); if (handlerContext.mRequestPath.mCommandId != Commands::OpenCommissioningWindow::Id || endpointId == kRootEndpointId) { @@ -124,23 +129,37 @@ void AdministratorCommissioningCommandHandler::InvokeCommand(HandlerContext & ha } handlerContext.SetCommandHandled(); - Status status = Status::Success; + + Commands::OpenCommissioningWindow::DecodableType commandData; + if (DataModel::Decode(handlerContext.mPayload, commandData) != CHIP_NO_ERROR) + { + handlerContext.mCommandHandler.AddStatus(handlerContext.mRequestPath, Status::InvalidCommand); + return; + } + + Status status = Status::Failure; #if defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE Device * device = DeviceMgr().GetDevice(endpointId); // TODO: issues:#33784, need to make OpenCommissioningWindow synchronous - if (device != nullptr && OpenCommissioningWindow(device->GetNodeId()) == CHIP_NO_ERROR) + if (device != nullptr && + OpenCommissioningWindow(chip::Controller::CommissioningWindowVerifierParams() + .SetNodeId(device->GetNodeId()) + .SetTimeout(commandData.commissioningTimeout) + .SetDiscriminator(commandData.discriminator) + .SetIteration(commandData.iterations) + .SetSalt(commandData.salt) + .SetVerifier(commandData.PAKEPasscodeVerifier)) == CHIP_NO_ERROR) { ChipLogProgress(NotSpecified, "Commissioning window is now open"); + status = Status::Success; } else { - status = Status::Failure; ChipLogProgress(NotSpecified, "Commissioning window is failed to open"); } #else - status = Status::Failure; ChipLogProgress(NotSpecified, "Commissioning window failed to open: PW_RPC_FABRIC_BRIDGE_SERVICE not defined"); #endif // defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE @@ -155,7 +174,7 @@ void ApplicationInit() { ChipLogDetail(NotSpecified, "Fabric-Bridge: ApplicationInit()"); - InteractionModelEngine::GetInstance()->RegisterCommandHandler(&gAdministratorCommissioningCommandHandler); + CommandHandlerInterfaceRegistry::RegisterCommandHandler(&gAdministratorCommissioningCommandHandler); #if defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE InitRpcServer(kFabricBridgeServerPort); diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter index a0d6dfe2d3a781..b437fbdb633d2e 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.matter +++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter @@ -1937,7 +1937,7 @@ cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -1953,6 +1953,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -1991,6 +1992,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2189,7 +2191,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2885,7 +2887,7 @@ endpoint 0 { callback attribute activeModeDuration; callback attribute activeModeThreshold; ram attribute featureMap default = 0x0000; - ram attribute clusterRevision default = 2; + ram attribute clusterRevision default = 3; } } endpoint 1 { diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.zap b/examples/light-switch-app/light-switch-common/light-switch-app.zap index c181f1ffae1120..ad7f46df3bc97d 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.zap +++ b/examples/light-switch-app/light-switch-common/light-switch-app.zap @@ -19,18 +19,18 @@ "package": [ { "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/zcl/zcl.json", - "type": "zcl-properties", + "path": "../../../src/app/zap-templates/app-templates.json", + "type": "gen-templates-json", "category": "matter", - "version": 1, - "description": "Matter SDK ZCL data" + "version": "chip-v1" }, { "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/app-templates.json", - "type": "gen-templates-json", + "path": "../../../src/app/zap-templates/zcl/zcl.json", + "type": "zcl-properties", "category": "matter", - "version": "chip-v1" + "version": 1, + "description": "Matter SDK ZCL data" } ], "endpointTypes": [ @@ -4570,7 +4570,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5412,7 +5412,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/light-switch-app/nrfconnect/CMakeLists.txt b/examples/light-switch-app/nrfconnect/CMakeLists.txt index abd1a0c6d1a2b0..48329e053be562 100644 --- a/examples/light-switch-app/nrfconnect/CMakeLists.txt +++ b/examples/light-switch-app/nrfconnect/CMakeLists.txt @@ -22,15 +22,6 @@ get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH) include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) -set(hci_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.root) - -if(NOT CONF_FILE STREQUAL "prj_no_dfu.conf") - set(PM_STATIC_YML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/configuration/${BOARD}/pm_static_dfu.yml) -endif() - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) @@ -42,6 +33,7 @@ target_compile_options(app PRIVATE -Werror -Wno-error=maybe-uninitialized) project(chip-nrfconnect-light-switch-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) diff --git a/examples/light-switch-app/nrfconnect/Kconfig.sysbuild b/examples/light-switch-app/nrfconnect/Kconfig.sysbuild new file mode 100644 index 00000000000000..4a0b8f3656b1eb --- /dev/null +++ b/examples/light-switch-app/nrfconnect/Kconfig.sysbuild @@ -0,0 +1,76 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y + +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if (SOC_SERIES_NRF53X) && !WIFI_NRF700X + +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +#### Bootloader +choice BOOTLOADER + default BOOTLOADER_MCUBOOT +endchoice + +if BOOTLOADER_MCUBOOT + +#### DFU multi-image support +config DFU_MULTI_IMAGE_PACKAGE_BUILD + default y + +config DFU_MULTI_IMAGE_PACKAGE_APP + default y + +config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY + default y + +#### DFU network core configuration +if SOC_SERIES_NRF53X + +config MCUBOOT_UPDATEABLE_IMAGES + default 2 + +choice MCUBOOT_MODE + default MCUBOOT_MODE_OVERWRITE_ONLY +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_RSA +endchoice + +config SECURE_BOOT_NETCORE + default y + +config NETCORE_APP_UPDATE + default y + +config DFU_MULTI_IMAGE_PACKAGE_NET + default y + +endif # SOC_SERIES_NRF53X +endif # BOOTLOADER_MCUBOOT + +#### Enable generating factory data +config MATTER_FACTORY_DATA_GENERATE + default y + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/light-switch-app/nrfconnect/child_image/hci_rpmsg/prj.conf b/examples/light-switch-app/nrfconnect/child_image/hci_rpmsg/prj.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/hci_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/light-switch-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf b/examples/light-switch-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/light-switch-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf b/examples/light-switch-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay b/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay deleted file mode 100644 index f18e3e0cc16434..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay b/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay b/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay b/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/prj_release.conf b/examples/light-switch-app/nrfconnect/child_image/mcuboot/prj_release.conf deleted file mode 100644 index 90969a32dbc414..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/prj_release.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n -CONFIG_GPIO=n diff --git a/examples/light-switch-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf b/examples/light-switch-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/light-switch-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf b/examples/light-switch-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/light-switch-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf b/examples/light-switch-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/light-switch-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/light-switch-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml b/examples/light-switch-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml similarity index 100% rename from examples/light-switch-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml rename to examples/light-switch-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml diff --git a/examples/lighting-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml b/examples/light-switch-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml similarity index 100% rename from examples/lighting-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml rename to examples/light-switch-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml diff --git a/examples/pump-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/light-switch-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml similarity index 100% rename from examples/pump-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/light-switch-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml diff --git a/examples/pump-controller-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/light-switch-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml similarity index 100% rename from examples/pump-controller-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/light-switch-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml diff --git a/examples/lighting-app/nrfconnect/configuration/nrf7002dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/light-switch-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp.yml similarity index 100% rename from examples/lighting-app/nrfconnect/configuration/nrf7002dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/light-switch-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp.yml diff --git a/examples/lock-app/nrfconnect/configuration/nrf7002dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/light-switch-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml similarity index 100% rename from examples/lock-app/nrfconnect/configuration/nrf7002dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/light-switch-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml diff --git a/examples/light-switch-app/nrfconnect/prj.conf b/examples/light-switch-app/nrfconnect/prj.conf index dd75cdf99c4fd1..4ece5671b2f6df 100644 --- a/examples/light-switch-app/nrfconnect/prj.conf +++ b/examples/light-switch-app/nrfconnect/prj.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32772 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/light-switch-app/nrfconnect/prj_no_dfu.conf b/examples/light-switch-app/nrfconnect/prj_no_dfu.conf deleted file mode 100644 index def17d5345e22c..00000000000000 --- a/examples/light-switch-app/nrfconnect/prj_no_dfu.conf +++ /dev/null @@ -1,52 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This sample uses Kconfig.defaults to set options common for all -# samples. This file should contain only options specific for this sample -# or overrides of default values. - -# Enable CHIP -CONFIG_CHIP=y -CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" -# 32772 == 0x8004 (example light-switch-app) -CONFIG_CHIP_DEVICE_PRODUCT_ID=32772 -CONFIG_STD_CPP17=y - -# Add support for LEDs and buttons on Nordic development kits -CONFIG_DK_LIBRARY=y - -# General networking settings -CONFIG_NET_IF_MCAST_IPV6_ADDR_COUNT=14 - -# Bluetooth Low Energy configuration -CONFIG_BT_DEVICE_NAME="MatterSwitch" - -# Other settings -CONFIG_THREAD_NAME=y -CONFIG_MPU_STACK_GUARD=y -CONFIG_RESET_ON_FATAL_ERROR=n - -# Reduce application size -CONFIG_USE_SEGGER_RTT=n - -# Disable Matter OTA DFU -CONFIG_CHIP_OTA_REQUESTOR=n - -# Disable QSPI NOR -CONFIG_CHIP_QSPI_NOR=n - -# Enable the Read Client for binding purposes -CONFIG_CHIP_ENABLE_READ_CLIENT=y diff --git a/examples/light-switch-app/nrfconnect/prj_release.conf b/examples/light-switch-app/nrfconnect/prj_release.conf index c57d5eb42bf168..74d128e682584e 100644 --- a/examples/light-switch-app/nrfconnect/prj_release.conf +++ b/examples/light-switch-app/nrfconnect/prj_release.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32772 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf b/examples/light-switch-app/nrfconnect/sysbuild.conf similarity index 90% rename from examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf rename to examples/light-switch-app/nrfconnect/sysbuild.conf index cd9aab4101c6f5..d0c5eee2b93c39 100644 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf +++ b/examples/light-switch-app/nrfconnect/sysbuild.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2022 Project CHIP Authors +# Copyright (c) 2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,4 +14,4 @@ # limitations under the License. # -CONFIG_GPIO=y +SB_CONFIG_MATTER=y diff --git a/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf b/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..694c3b08242f29 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf @@ -0,0 +1,52 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y diff --git a/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/app.overlay b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/app.overlay new file mode 100644 index 00000000000000..74d3dfbfd22f30 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/app.overlay @@ -0,0 +1,5 @@ +/ { + chosen { + zephyr,code-partition = &boot_partition; + }; +}; diff --git a/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf new file mode 100644 index 00000000000000..50610217c762b5 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf @@ -0,0 +1,19 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 diff --git a/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..2d86fe6442dd39 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +CONFIG_BOOT_SWAP_USING_MOVE=n +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..81701b7eb63f70 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf @@ -0,0 +1,40 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# nRF7002DK uses SPI NOR external flash +CONFIG_GPIO=y +CONFIG_SPI=y +CONFIG_SPI_NOR=y +CONFIG_SPI_NOR_SFDP_DEVICETREE=y +CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 + +CONFIG_MULTITHREADING=y +CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/prj.conf b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/prj.conf similarity index 59% rename from examples/light-switch-app/nrfconnect/child_image/mcuboot/prj.conf rename to examples/light-switch-app/nrfconnect/sysbuild/mcuboot/prj.conf index 90969a32dbc414..3bcb12fe7b8d25 100644 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/prj.conf +++ b/examples/light-switch-app/nrfconnect/sysbuild/mcuboot/prj.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2022 Project CHIP Authors +# Copyright (c) 2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,17 +14,36 @@ # limitations under the License. # -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. +CONFIG_MAIN_STACK_SIZE=10240 + +CONFIG_BOOT_SWAP_SAVE_ENCTLV=n +CONFIG_BOOT_BOOTSTRAP=n +CONFIG_PM=n + +CONFIG_FLASH=y +CONFIG_FPROTECT=y CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" +# Use minimal C library instead of the Picolib +CONFIG_MINIMAL_LIBC=y + # Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. CONFIG_CONSOLE=n CONFIG_SERIAL=n CONFIG_UART_CONSOLE=n CONFIG_USE_SEGGER_RTT=n CONFIG_GPIO=n + +CONFIG_BOOT_MAX_IMG_SECTORS=256 + +CONFIG_LOG=n +CONFIG_CONSOLE_HANDLER=n +CONFIG_BOOT_BANNER=n +CONFIG_NCS_BOOT_BANNER=n +CONFIG_TIMESLICING=n +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_MULTITHREADING=n +CONFIG_TICKLESS_KERNEL=n +CONFIG_TIMEOUT_64BIT=n +CONFIG_NRF_ENABLE_ICACHE=n diff --git a/examples/light-switch-app/qpg/include/AppTask.h b/examples/light-switch-app/qpg/include/AppTask.h index 9284e068ab8509..caf56977225280 100644 --- a/examples/light-switch-app/qpg/include/AppTask.h +++ b/examples/light-switch-app/qpg/include/AppTask.h @@ -58,6 +58,9 @@ class AppTask static void FunctionHandler(AppEvent * aEvent); static void TimerEventHandler(chip::System::Layer * aLayer, void * aAppState); + static void TotalHoursTimerHandler(chip::System::Layer * aLayer, void * aAppState); + static void MultiPressTimeoutHandler(chip::System::Layer * aLayer, void * aAppState); + static void LongPressTimeoutHandler(chip::System::Layer * aLayer, void * aAppState); static void MatterEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); static void UpdateLEDs(void); diff --git a/examples/light-switch-app/qpg/include/SwitchManager.h b/examples/light-switch-app/qpg/include/SwitchManager.h index 41eedd10af4f13..df09260285c96d 100644 --- a/examples/light-switch-app/qpg/include/SwitchManager.h +++ b/examples/light-switch-app/qpg/include/SwitchManager.h @@ -55,7 +55,11 @@ class SwitchManager void Init(void); static void GenericSwitchInitialPressHandler(AppEvent * aEvent); - static void GenericSwitchReleasePressHandler(AppEvent * aEvent); + static void GenericSwitchShortReleaseHandler(AppEvent * aEvent); + static void GenericSwitchLongReleaseHandler(AppEvent * aEvent); + static void GenericSwitchLongPressHandler(AppEvent * aEvent); + static void GenericSwitchMultipressCompleteHandler(AppEvent * aEvent); + static void GenericSwitchMultipressOngoingHandler(AppEvent * aEvent); static void ToggleHandler(AppEvent * aEvent); static void LevelHandler(AppEvent * aEvent); static void ColorHandler(AppEvent * aEvent); diff --git a/examples/light-switch-app/qpg/src/AppTask.cpp b/examples/light-switch-app/qpg/src/AppTask.cpp index 4be2f4eeefbf39..7cb0a41a452aca 100644 --- a/examples/light-switch-app/qpg/src/AppTask.cpp +++ b/examples/light-switch-app/qpg/src/AppTask.cpp @@ -42,6 +42,10 @@ using namespace ::chip; #include #include +#if defined(QORVO_QPINCFG_ENABLE) +#include "qPinCfg.h" +#endif // QORVO_QPINCFG_ENABLE + #include #include @@ -58,9 +62,16 @@ using namespace ::chip::DeviceLayer; #define FACTORY_RESET_TRIGGER_TIMEOUT 3000 #define FACTORY_RESET_CANCEL_WINDOW_TIMEOUT 3000 +#define SWITCH_MULTIPRESS_WINDOW_MS 500 +#define SWITCH_LONGPRESS_WINDOW_MS 3000 +#define SWITCH_BUTTON_PRESSED 1 +#define SWITCH_BUTTON_UNPRESSED 0 + #define APP_TASK_STACK_SIZE (2 * 1024) #define APP_TASK_PRIORITY 2 #define APP_EVENT_QUEUE_SIZE 10 +#define SECONDS_IN_HOUR (3600) // we better keep this 3600 +#define TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS (1 * SECONDS_IN_HOUR) // increment every hour namespace { TaskHandle_t sAppTaskHandle; @@ -70,6 +81,9 @@ bool sIsThreadProvisioned = false; bool sIsThreadEnabled = false; bool sHaveBLEConnections = false; bool sIsBLEAdvertisingEnabled = false; +bool sIsMultipressOngoing = false; +bool sLongPressDetected = false; +uint8_t sSwitchButtonState = SWITCH_BUTTON_UNPRESSED; // NOTE! This key is for test/certification only and should not be available in production devices! uint8_t sTestEventTriggerEnableKey[TestEventTriggerDelegate::kEnableKeyLength] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, @@ -141,11 +155,19 @@ void OnTriggerIdentifyEffect(Identify * identify) } } -Identify gIdentify = { +Identify gIdentifyEp1 = { chip::EndpointId{ 1 }, [](Identify *) { ChipLogProgress(Zcl, "onIdentifyStart"); }, [](Identify *) { ChipLogProgress(Zcl, "onIdentifyStop"); }, - Clusters::Identify::IdentifyTypeEnum::kVisibleIndicator, + Clusters::Identify::IdentifyTypeEnum::kNone, + OnTriggerIdentifyEffect, +}; + +Identify gIdentifyEp2 = { + chip::EndpointId{ 2 }, + [](Identify *) { ChipLogProgress(Zcl, "onIdentifyStart"); }, + [](Identify *) { ChipLogProgress(Zcl, "onIdentifyStop"); }, + Clusters::Identify::IdentifyTypeEnum::kNone, OnTriggerIdentifyEffect, }; @@ -224,6 +246,14 @@ CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; +#if defined(QORVO_QPINCFG_ENABLE) + qResult_t res = Q_OK; + res = qPinCfg_Init(NULL); + if (res != Q_OK) + { + ChipLogError(NotSpecified, "qPinCfg_Init failed: %d", res); + } +#endif // QORVO_QPINCFG_ENABLE PlatformMgr().AddEventHandler(MatterEventHandler, 0); ChipLogProgress(NotSpecified, "Current Software Version: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); @@ -255,6 +285,14 @@ CHIP_ERROR AppTask::Init() sIsBLEAdvertisingEnabled = ConnectivityMgr().IsBLEAdvertisingEnabled(); UpdateLEDs(); + err = chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Seconds32(TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS), + TotalHoursTimerHandler, this); + + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "StartTimer failed %s: ", chip::ErrorStr(err)); + } + return err; } @@ -275,7 +313,9 @@ void AppTask::AppTaskMain(void * pvParameter) void AppTask::ButtonEventHandler(uint8_t btnIdx, bool btnPressed) { - ChipLogProgress(NotSpecified, "ButtonEventHandler %d, %d", btnIdx, btnPressed); + CHIP_ERROR err = CHIP_NO_ERROR; + + ChipLogDetail(NotSpecified, "ButtonEventHandler %d, %d", btnIdx, btnPressed); AppEvent button_event = {}; button_event.Type = AppEvent::kEventType_Button; @@ -297,13 +337,54 @@ void AppTask::ButtonEventHandler(uint8_t btnIdx, bool btnPressed) case APP_FUNCTION2_SWITCH: { if (!btnPressed) { - ChipLogProgress(NotSpecified, "Switch release press"); - button_event.Handler = SwitchMgr().GenericSwitchReleasePressHandler; + ChipLogDetail(NotSpecified, "Switch button released"); + + button_event.Handler = + sLongPressDetected ? SwitchMgr().GenericSwitchLongReleaseHandler : SwitchMgr().GenericSwitchShortReleaseHandler; + + sIsMultipressOngoing = true; + sSwitchButtonState = SWITCH_BUTTON_UNPRESSED; + sLongPressDetected = false; + + chip::DeviceLayer::SystemLayer().CancelTimer(MultiPressTimeoutHandler, NULL); + // we start the MultiPress feature window after releasing the button + err = chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Milliseconds32(SWITCH_MULTIPRESS_WINDOW_MS), + MultiPressTimeoutHandler, NULL); + + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "StartTimer failed %s: ", chip::ErrorStr(err)); + } } else { - ChipLogProgress(NotSpecified, "Switch initial press"); - button_event.Handler = SwitchMgr().GenericSwitchInitialPressHandler; + ChipLogDetail(NotSpecified, "Switch button pressed"); + + sSwitchButtonState = SWITCH_BUTTON_PRESSED; + + chip::DeviceLayer::SystemLayer().CancelTimer(LongPressTimeoutHandler, NULL); + // we need to check if this is short or long press + err = chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Milliseconds32(SWITCH_LONGPRESS_WINDOW_MS), + LongPressTimeoutHandler, NULL); + + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "StartTimer failed %s: ", chip::ErrorStr(err)); + } + + // if we have active multipress window we need to send extra event + if (sIsMultipressOngoing) + { + ChipLogDetail(NotSpecified, "Switch MultipressOngoing"); + button_event.Handler = SwitchMgr().GenericSwitchInitialPressHandler; + sAppTask.PostEvent(&button_event); + chip::DeviceLayer::SystemLayer().CancelTimer(MultiPressTimeoutHandler, NULL); + button_event.Handler = SwitchMgr().GenericSwitchMultipressOngoingHandler; + } + else + { + button_event.Handler = SwitchMgr().GenericSwitchInitialPressHandler; + } } break; } @@ -348,6 +429,69 @@ void AppTask::TimerEventHandler(chip::System::Layer * aLayer, void * aAppState) sAppTask.PostEvent(&event); } +void AppTask::MultiPressTimeoutHandler(chip::System::Layer * aLayer, void * aAppState) +{ + ChipLogDetail(NotSpecified, "MultiPressTimeoutHandler"); + + sIsMultipressOngoing = false; + + AppEvent multipress_event = {}; + multipress_event.Type = AppEvent::kEventType_Button; + multipress_event.Handler = SwitchMgr().GenericSwitchMultipressCompleteHandler; + + sAppTask.PostEvent(&multipress_event); +} + +void AppTask::LongPressTimeoutHandler(chip::System::Layer * aLayer, void * aAppState) +{ + ChipLogDetail(NotSpecified, "LongPressTimeoutHandler"); + + // if the button is still pressed after threshold time, this is a LongPress, otherwise jsut ignore it + if (sSwitchButtonState == SWITCH_BUTTON_PRESSED) + { + sLongPressDetected = true; + AppEvent longpress_event = {}; + longpress_event.Type = AppEvent::kEventType_Button; + longpress_event.Handler = SwitchMgr().GenericSwitchLongPressHandler; + + sAppTask.PostEvent(&longpress_event); + } +} + +void AppTask::TotalHoursTimerHandler(chip::System::Layer * aLayer, void * aAppState) +{ + ChipLogDetail(NotSpecified, "HourlyTimer"); + + CHIP_ERROR err; + uint32_t totalOperationalHours = 0; + + err = ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours); + + if (err == CHIP_NO_ERROR) + { + ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + + (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / SECONDS_IN_HOUR)); + } + else if (err == CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND) + { + totalOperationalHours = 0; // set this explicitly to 0 for safety + ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + + (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / SECONDS_IN_HOUR)); + } + else + { + ChipLogError(DeviceLayer, "Failed to get total operational hours of the Node"); + } + + err = chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Seconds32(TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS), + TotalHoursTimerHandler, nullptr); + + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "StartTimer failed %s: ", chip::ErrorStr(err)); + } +} + void AppTask::FunctionTimerEventHandler(AppEvent * aEvent) { if (aEvent->Type != AppEvent::kEventType_Timer) diff --git a/examples/light-switch-app/qpg/src/SwitchManager.cpp b/examples/light-switch-app/qpg/src/SwitchManager.cpp index 58b2f1d9bd8889..170bb8b454c765 100644 --- a/examples/light-switch-app/qpg/src/SwitchManager.cpp +++ b/examples/light-switch-app/qpg/src/SwitchManager.cpp @@ -26,10 +26,12 @@ SwitchManager SwitchManager::sSwitch; using namespace ::chip; using namespace chip::DeviceLayer; +static uint8_t multiPressCount = 1; void SwitchManager::Init(void) { - // init - TODO + uint8_t multiPressMax = 2; + chip::app::Clusters::Switch::Attributes::MultiPressMax::Set(GENERICSWITCH_ENDPOINT_ID, multiPressMax); } void SwitchManager::ToggleHandler(AppEvent * aEvent) @@ -46,6 +48,7 @@ void SwitchManager::ToggleHandler(AppEvent * aEvent) data->localEndpointId = SWITCH_ENDPOINT_ID; data->clusterId = chip::app::Clusters::OnOff::Id; data->commandId = chip::app::Clusters::OnOff::Commands::Toggle::Id; + data->isGroup = true; DeviceLayer::PlatformMgr().ScheduleWork(SwitchWorkerFunction, reinterpret_cast(data)); } @@ -118,7 +121,7 @@ void SwitchManager::GenericSwitchInitialPressHandler(AppEvent * aEvent) return; } - ChipLogProgress(NotSpecified, "GenericSwitchInitialPress new position %d", newPosition); + ChipLogDetail(NotSpecified, "GenericSwitchInitialPress new position %d", newPosition); SystemLayer().ScheduleLambda([newPosition] { chip::app::Clusters::Switch::Attributes::CurrentPosition::Set(GENERICSWITCH_ENDPOINT_ID, newPosition); // InitialPress event takes newPosition as event data @@ -126,10 +129,10 @@ void SwitchManager::GenericSwitchInitialPressHandler(AppEvent * aEvent) }); } -void SwitchManager::GenericSwitchReleasePressHandler(AppEvent * aEvent) +void SwitchManager::GenericSwitchLongPressHandler(AppEvent * aEvent) { - // Release moves Position from 1 (press) to 0 - uint8_t newPosition = 0; + // Press moves Position from 0 (idle) to 1 (press) + uint8_t newPosition = 1; if (aEvent->Type != AppEvent::kEventType_Button) { @@ -137,10 +140,76 @@ void SwitchManager::GenericSwitchReleasePressHandler(AppEvent * aEvent) return; } - ChipLogProgress(NotSpecified, "GenericSwitchReleasePress new position %d", newPosition); + ChipLogDetail(NotSpecified, "GenericSwitchLongPress new position %d", newPosition); SystemLayer().ScheduleLambda([newPosition] { + // LongPress event takes newPosition as event data + chip::app::Clusters::SwitchServer::Instance().OnLongPress(GENERICSWITCH_ENDPOINT_ID, newPosition); + }); +} + +void SwitchManager::GenericSwitchShortReleaseHandler(AppEvent * aEvent) +{ + // Release moves Position from 1 (press) to 0 + uint8_t newPosition = 0; + uint8_t previousPosition = 1; + + if (aEvent->Type != AppEvent::kEventType_Button) + { + ChipLogError(NotSpecified, "Event type not supported!"); + return; + } + + ChipLogDetail(NotSpecified, "GenericSwitchShortRelease new position %d", newPosition); + SystemLayer().ScheduleLambda([newPosition, previousPosition] { chip::app::Clusters::Switch::Attributes::CurrentPosition::Set(GENERICSWITCH_ENDPOINT_ID, newPosition); // Short Release event takes newPosition as event data - chip::app::Clusters::SwitchServer::Instance().OnShortRelease(GENERICSWITCH_ENDPOINT_ID, newPosition); + chip::app::Clusters::SwitchServer::Instance().OnShortRelease(GENERICSWITCH_ENDPOINT_ID, previousPosition); + }); +} + +void SwitchManager::GenericSwitchLongReleaseHandler(AppEvent * aEvent) +{ + // Release moves Position from 1 (press) to 0 + uint8_t newPosition = 0; + uint8_t previousPosition = 1; + + if (aEvent->Type != AppEvent::kEventType_Button) + { + ChipLogError(NotSpecified, "Event type not supported!"); + return; + } + + ChipLogDetail(NotSpecified, "GenericSwitchLongRelease new position %d", newPosition); + SystemLayer().ScheduleLambda([newPosition, previousPosition] { + chip::app::Clusters::Switch::Attributes::CurrentPosition::Set(GENERICSWITCH_ENDPOINT_ID, newPosition); + // LongRelease event takes newPosition as event data + chip::app::Clusters::SwitchServer::Instance().OnLongRelease(GENERICSWITCH_ENDPOINT_ID, previousPosition); + }); +} + +void SwitchManager::GenericSwitchMultipressOngoingHandler(AppEvent * aEvent) +{ + uint8_t newPosition = 1; + + multiPressCount++; + + ChipLogDetail(NotSpecified, "GenericSwitchMultiPressOngoing (%d)", multiPressCount); + + SystemLayer().ScheduleLambda([newPosition] { + chip::app::Clusters::SwitchServer::Instance().OnMultiPressOngoing(GENERICSWITCH_ENDPOINT_ID, newPosition, multiPressCount); }); } + +void SwitchManager::GenericSwitchMultipressCompleteHandler(AppEvent * aEvent) +{ + uint8_t previousPosition = 0; + + ChipLogProgress(NotSpecified, "GenericSwitchMultiPressComplete (%d)", multiPressCount); + + SystemLayer().ScheduleLambda([previousPosition] { + chip::app::Clusters::SwitchServer::Instance().OnMultiPressComplete(GENERICSWITCH_ENDPOINT_ID, previousPosition, + multiPressCount); + }); + + multiPressCount = 1; +} diff --git a/examples/light-switch-app/qpg/src/binding-handler.cpp b/examples/light-switch-app/qpg/src/binding-handler.cpp index 4dae4e12b44155..f2a7c266d62338 100644 --- a/examples/light-switch-app/qpg/src/binding-handler.cpp +++ b/examples/light-switch-app/qpg/src/binding-handler.cpp @@ -38,31 +38,120 @@ static void ProcessSwitchUnicastBindingCommand(CommandId commandId, const EmberB ChipLogError(NotSpecified, "Switch command failed: %" CHIP_ERROR_FORMAT, error.Format()); }; - switch (commandId) + switch (data->clusterId) { - case Clusters::OnOff::Commands::Toggle::Id: - Clusters::OnOff::Commands::Toggle::Type toggleCommand; - Controller::InvokeCommandRequest(exchangeMgr, sessionHandle, binding.remote, toggleCommand, onSuccess, onFailure); + case Clusters::OnOff::Id: + switch (commandId) + { + case Clusters::OnOff::Commands::Toggle::Id: + Clusters::OnOff::Commands::Toggle::Type toggleCommand; + Controller::InvokeCommandRequest(exchangeMgr, sessionHandle, binding.remote, toggleCommand, onSuccess, onFailure); + break; + case Clusters::OnOff::Commands::On::Id: + Clusters::OnOff::Commands::On::Type onCommand; + Controller::InvokeCommandRequest(exchangeMgr, sessionHandle, binding.remote, onCommand, onSuccess, onFailure); + break; + + case Clusters::OnOff::Commands::Off::Id: + Clusters::OnOff::Commands::Off::Type offCommand; + Controller::InvokeCommandRequest(exchangeMgr, sessionHandle, binding.remote, offCommand, onSuccess, onFailure); + break; + default: + ChipLogError(NotSpecified, "Unsupported Command Id"); + break; + } break; - case Clusters::LevelControl::Commands::MoveToLevel::Id: { - Clusters::LevelControl::Commands::MoveToLevel::Type moveToLevelCommand; - moveToLevelCommand.level = data->level; - Controller::InvokeCommandRequest(exchangeMgr, sessionHandle, binding.remote, moveToLevelCommand, onSuccess, onFailure); - } - break; - case Clusters::ColorControl::Commands::MoveToColor::Id: { + case Clusters::LevelControl::Id: + if (commandId == Clusters::LevelControl::Commands::MoveToLevel::Id) + { + Clusters::LevelControl::Commands::MoveToLevel::Type moveToLevelCommand; + moveToLevelCommand.level = data->level; + Controller::InvokeCommandRequest(exchangeMgr, sessionHandle, binding.remote, moveToLevelCommand, onSuccess, onFailure); + } + else + { + ChipLogError(NotSpecified, "Unsupported Command Id"); + } + break; - Clusters::ColorControl::Commands::MoveToColor::Type moveToColorCommand; + case Clusters::ColorControl::Id: + if (commandId == Clusters::ColorControl::Commands::MoveToColor::Id) + { + Clusters::ColorControl::Commands::MoveToColor::Type moveToColorCommand; + moveToColorCommand.colorX = data->colorXY.x; + moveToColorCommand.colorY = data->colorXY.y; + Controller::InvokeCommandRequest(exchangeMgr, sessionHandle, binding.remote, moveToColorCommand, onSuccess, onFailure); + } + else + { + ChipLogError(NotSpecified, "Unsupported Command Id"); + } + break; - moveToColorCommand.colorX = data->colorXY.x; - moveToColorCommand.colorY = data->colorXY.y; - Controller::InvokeCommandRequest(exchangeMgr, sessionHandle, binding.remote, moveToColorCommand, onSuccess, onFailure); + default: + ChipLogError(NotSpecified, "Unsupported Cluster Id"); + break; } - break; +} + +static void ProcessSwitchGroupBindingCommand(CommandId commandId, const EmberBindingTableEntry & binding, BindingCommandData * data) +{ + Messaging::ExchangeManager & exchangeMgr = Server::GetInstance().GetExchangeManager(); + + switch (data->clusterId) + { + case Clusters::OnOff::Id: + switch (commandId) + { + case Clusters::OnOff::Commands::Toggle::Id: + Clusters::OnOff::Commands::Toggle::Type toggleCommand; + Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, toggleCommand); + break; + case Clusters::OnOff::Commands::On::Id: + Clusters::OnOff::Commands::On::Type onCommand; + Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, onCommand); + + break; + case Clusters::OnOff::Commands::Off::Id: + Clusters::OnOff::Commands::Off::Type offCommand; + Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, offCommand); + break; + default: + ChipLogError(NotSpecified, "Unsupported Command Id"); + break; + } + break; + + case Clusters::LevelControl::Id: + if (commandId == Clusters::LevelControl::Commands::MoveToLevel::Id) + { + Clusters::LevelControl::Commands::MoveToLevel::Type moveToLevelCommand; + moveToLevelCommand.level = data->level; + Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, moveToLevelCommand); + } + else + { + ChipLogError(NotSpecified, "Unsupported Command Id"); + } + break; + + case Clusters::ColorControl::Id: + if (commandId == Clusters::ColorControl::Commands::MoveToColor::Id) + { + Clusters::ColorControl::Commands::MoveToColor::Type moveToColorCommand; + moveToColorCommand.colorX = data->colorXY.x; + moveToColorCommand.colorY = data->colorXY.y; + Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, moveToColorCommand); + } + else + { + ChipLogError(NotSpecified, "Unsupported Command Id"); + } + break; default: - ChipLogError(NotSpecified, "Unsupported Command Id"); + ChipLogError(NotSpecified, "Unsupported Cluster Id"); break; } } @@ -70,10 +159,20 @@ static void ProcessSwitchUnicastBindingCommand(CommandId commandId, const EmberB static void LightSwitchChangedHandler(const EmberBindingTableEntry & binding, OperationalDeviceProxy * peer_device, void * context) { VerifyOrReturn(context != nullptr, ChipLogError(NotSpecified, "nullptr pointer passed")); - BindingCommandData * data = static_cast(context); - if (binding.type == MATTER_UNICAST_BINDING) + if (binding.type == MATTER_MULTICAST_BINDING && data->isGroup) + { + switch (data->clusterId) + { + case Clusters::OnOff::Id: + case Clusters::LevelControl::Id: + case Clusters::ColorControl::Id: + ProcessSwitchGroupBindingCommand(data->commandId, binding, data); + break; + } + } + else if (binding.type == MATTER_UNICAST_BINDING && !data->isGroup) { switch (data->clusterId) { diff --git a/examples/light-switch-app/qpg/zap/switch.matter b/examples/light-switch-app/qpg/zap/switch.matter index 677a40b0f5485a..73968414b217e9 100644 --- a/examples/light-switch-app/qpg/zap/switch.matter +++ b/examples/light-switch-app/qpg/zap/switch.matter @@ -252,7 +252,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -755,6 +755,265 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } +/** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ +cluster PowerSource = 47 { + revision 1; // NOTE: Default/not specifically set + + enum BatApprovedChemistryEnum : enum16 { + kUnspecified = 0; + kAlkaline = 1; + kLithiumCarbonFluoride = 2; + kLithiumChromiumOxide = 3; + kLithiumCopperOxide = 4; + kLithiumIronDisulfide = 5; + kLithiumManganeseDioxide = 6; + kLithiumThionylChloride = 7; + kMagnesium = 8; + kMercuryOxide = 9; + kNickelOxyhydride = 10; + kSilverOxide = 11; + kZincAir = 12; + kZincCarbon = 13; + kZincChloride = 14; + kZincManganeseDioxide = 15; + kLeadAcid = 16; + kLithiumCobaltOxide = 17; + kLithiumIon = 18; + kLithiumIonPolymer = 19; + kLithiumIronPhosphate = 20; + kLithiumSulfur = 21; + kLithiumTitanate = 22; + kNickelCadmium = 23; + kNickelHydrogen = 24; + kNickelIron = 25; + kNickelMetalHydride = 26; + kNickelZinc = 27; + kSilverZinc = 28; + kSodiumIon = 29; + kSodiumSulfur = 30; + kZincBromide = 31; + kZincCerium = 32; + } + + enum BatChargeFaultEnum : enum8 { + kUnspecified = 0; + kAmbientTooHot = 1; + kAmbientTooCold = 2; + kBatteryTooHot = 3; + kBatteryTooCold = 4; + kBatteryAbsent = 5; + kBatteryOverVoltage = 6; + kBatteryUnderVoltage = 7; + kChargerOverVoltage = 8; + kChargerUnderVoltage = 9; + kSafetyTimeout = 10; + } + + enum BatChargeLevelEnum : enum8 { + kOK = 0; + kWarning = 1; + kCritical = 2; + } + + enum BatChargeStateEnum : enum8 { + kUnknown = 0; + kIsCharging = 1; + kIsAtFullCharge = 2; + kIsNotCharging = 3; + } + + enum BatCommonDesignationEnum : enum16 { + kUnspecified = 0; + kAAA = 1; + kAA = 2; + kC = 3; + kD = 4; + k4v5 = 5; + k6v0 = 6; + k9v0 = 7; + k12AA = 8; + kAAAA = 9; + kA = 10; + kB = 11; + kF = 12; + kN = 13; + kNo6 = 14; + kSubC = 15; + kA23 = 16; + kA27 = 17; + kBA5800 = 18; + kDuplex = 19; + k4SR44 = 20; + k523 = 21; + k531 = 22; + k15v0 = 23; + k22v5 = 24; + k30v0 = 25; + k45v0 = 26; + k67v5 = 27; + kJ = 28; + kCR123A = 29; + kCR2 = 30; + k2CR5 = 31; + kCRP2 = 32; + kCRV3 = 33; + kSR41 = 34; + kSR43 = 35; + kSR44 = 36; + kSR45 = 37; + kSR48 = 38; + kSR54 = 39; + kSR55 = 40; + kSR57 = 41; + kSR58 = 42; + kSR59 = 43; + kSR60 = 44; + kSR63 = 45; + kSR64 = 46; + kSR65 = 47; + kSR66 = 48; + kSR67 = 49; + kSR68 = 50; + kSR69 = 51; + kSR516 = 52; + kSR731 = 53; + kSR712 = 54; + kLR932 = 55; + kA5 = 56; + kA10 = 57; + kA13 = 58; + kA312 = 59; + kA675 = 60; + kAC41E = 61; + k10180 = 62; + k10280 = 63; + k10440 = 64; + k14250 = 65; + k14430 = 66; + k14500 = 67; + k14650 = 68; + k15270 = 69; + k16340 = 70; + kRCR123A = 71; + k17500 = 72; + k17670 = 73; + k18350 = 74; + k18500 = 75; + k18650 = 76; + k19670 = 77; + k25500 = 78; + k26650 = 79; + k32600 = 80; + } + + enum BatFaultEnum : enum8 { + kUnspecified = 0; + kOverTemp = 1; + kUnderTemp = 2; + } + + enum BatReplaceabilityEnum : enum8 { + kUnspecified = 0; + kNotReplaceable = 1; + kUserReplaceable = 2; + kFactoryReplaceable = 3; + } + + enum PowerSourceStatusEnum : enum8 { + kUnspecified = 0; + kActive = 1; + kStandby = 2; + kUnavailable = 3; + } + + enum WiredCurrentTypeEnum : enum8 { + kAC = 0; + kDC = 1; + } + + enum WiredFaultEnum : enum8 { + kUnspecified = 0; + kOverVoltage = 1; + kUnderVoltage = 2; + } + + bitmap Feature : bitmap32 { + kWired = 0x1; + kBattery = 0x2; + kRechargeable = 0x4; + kReplaceable = 0x8; + } + + struct BatChargeFaultChangeType { + BatChargeFaultEnum current[] = 0; + BatChargeFaultEnum previous[] = 1; + } + + struct BatFaultChangeType { + BatFaultEnum current[] = 0; + BatFaultEnum previous[] = 1; + } + + struct WiredFaultChangeType { + WiredFaultEnum current[] = 0; + WiredFaultEnum previous[] = 1; + } + + info event WiredFaultChange = 0 { + WiredFaultEnum current[] = 0; + WiredFaultEnum previous[] = 1; + } + + info event BatFaultChange = 1 { + BatFaultEnum current[] = 0; + BatFaultEnum previous[] = 1; + } + + info event BatChargeFaultChange = 2 { + BatChargeFaultEnum current[] = 0; + BatChargeFaultEnum previous[] = 1; + } + + readonly attribute PowerSourceStatusEnum status = 0; + readonly attribute int8u order = 1; + readonly attribute char_string<60> description = 2; + readonly attribute optional nullable int32u wiredAssessedInputVoltage = 3; + readonly attribute optional nullable int16u wiredAssessedInputFrequency = 4; + readonly attribute optional WiredCurrentTypeEnum wiredCurrentType = 5; + readonly attribute optional nullable int32u wiredAssessedCurrent = 6; + readonly attribute optional int32u wiredNominalVoltage = 7; + readonly attribute optional int32u wiredMaximumCurrent = 8; + readonly attribute optional boolean wiredPresent = 9; + readonly attribute optional WiredFaultEnum activeWiredFaults[] = 10; + readonly attribute optional nullable int32u batVoltage = 11; + readonly attribute optional nullable int8u batPercentRemaining = 12; + readonly attribute optional nullable int32u batTimeRemaining = 13; + readonly attribute optional BatChargeLevelEnum batChargeLevel = 14; + readonly attribute optional boolean batReplacementNeeded = 15; + readonly attribute optional BatReplaceabilityEnum batReplaceability = 16; + readonly attribute optional boolean batPresent = 17; + readonly attribute optional BatFaultEnum activeBatFaults[] = 18; + readonly attribute optional char_string<60> batReplacementDescription = 19; + readonly attribute optional BatCommonDesignationEnum batCommonDesignation = 20; + readonly attribute optional char_string<20> batANSIDesignation = 21; + readonly attribute optional char_string<20> batIECDesignation = 22; + readonly attribute optional BatApprovedChemistryEnum batApprovedChemistry = 23; + readonly attribute optional int32u batCapacity = 24; + readonly attribute optional int8u batQuantity = 25; + readonly attribute optional BatChargeStateEnum batChargeState = 26; + readonly attribute optional nullable int32u batTimeToFullCharge = 27; + readonly attribute optional boolean batFunctionalWhileCharging = 28; + readonly attribute optional nullable int32u batChargingCurrent = 29; + readonly attribute optional BatChargeFaultEnum activeBatChargeFaults[] = 30; + readonly attribute endpoint_no endpointList[] = 31; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute event_id eventList[] = 65530; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1734,7 +1993,7 @@ cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -1750,6 +2009,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -1788,6 +2048,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1986,7 +2247,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2389,6 +2650,27 @@ endpoint 0 { handle command AnnounceOTAProvider; } + server cluster PowerSource { + ram attribute status; + ram attribute order; + ram attribute description; + ram attribute batVoltage; + ram attribute batPercentRemaining; + ram attribute batChargeLevel; + ram attribute batReplacementNeeded; + ram attribute batReplaceability; + ram attribute batReplacementDescription; + ram attribute batCommonDesignation; + ram attribute batQuantity; + callback attribute endpointList; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute eventList; + callback attribute attributeList; + ram attribute featureMap default = 10; + ram attribute clusterRevision default = 1; + } + server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; @@ -2660,7 +2942,7 @@ endpoint 0 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x0007; - ram attribute clusterRevision default = 2; + ram attribute clusterRevision default = 3; handle command RegisterClient; handle command RegisterClientResponse; @@ -2673,7 +2955,6 @@ endpoint 1 { device type ma_colordimmerswitch = 261, version 1; binding cluster Identify; - binding cluster Groups; binding cluster OnOff; binding cluster LevelControl; binding cluster ScenesManagement; @@ -2693,6 +2974,26 @@ endpoint 1 { handle command TriggerEffect; } + server cluster Groups { + ram attribute nameSupport; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 4; + + handle command AddGroup; + handle command AddGroupResponse; + handle command ViewGroup; + handle command ViewGroupResponse; + handle command GetGroupMembership; + handle command GetGroupMembershipResponse; + handle command RemoveGroup; + handle command RemoveGroupResponse; + handle command RemoveAllGroups; + handle command AddGroupIfIdentifying; + } + server cluster Descriptor { callback attribute deviceTypeList; callback attribute serverList; @@ -2749,14 +3050,19 @@ endpoint 2 { server cluster Switch { emits event InitialPress; + emits event LongPress; emits event ShortRelease; + emits event LongRelease; + emits event MultiPressOngoing; + emits event MultiPressComplete; ram attribute numberOfPositions default = 2; ram attribute currentPosition default = 0; + ram attribute multiPressMax default = 2; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute eventList; callback attribute attributeList; - ram attribute featureMap default = 6; + ram attribute featureMap default = 30; ram attribute clusterRevision default = 1; } } diff --git a/examples/light-switch-app/qpg/zap/switch.zap b/examples/light-switch-app/qpg/zap/switch.zap index 362ef409bebaa6..5578a0ff63b5e8 100644 --- a/examples/light-switch-app/qpg/zap/switch.zap +++ b/examples/light-switch-app/qpg/zap/switch.zap @@ -1185,6 +1185,304 @@ } ] }, + { + "name": "Power Source", + "code": 47, + "mfgCode": null, + "define": "POWER_SOURCE_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "Status", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "PowerSourceStatusEnum", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Order", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Description", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BatVoltage", + "code": 11, + "mfgCode": null, + "side": "server", + "type": "int32u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BatPercentRemaining", + "code": 12, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BatChargeLevel", + "code": 14, + "mfgCode": null, + "side": "server", + "type": "BatChargeLevelEnum", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BatReplacementNeeded", + "code": 15, + "mfgCode": null, + "side": "server", + "type": "boolean", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BatReplaceability", + "code": 16, + "mfgCode": null, + "side": "server", + "type": "BatReplaceabilityEnum", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BatReplacementDescription", + "code": 19, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BatCommonDesignation", + "code": 20, + "mfgCode": null, + "side": "server", + "type": "BatCommonDesignationEnum", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BatQuantity", + "code": 25, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EndpointList", + "code": 31, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "10", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, { "name": "General Commissioning", "code": 48, @@ -4651,7 +4949,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -4909,7 +5207,7 @@ "code": 4, "mfgCode": null, "define": "GROUPS_CLUSTER", - "side": "client", + "side": "server", "enabled": 1, "commands": [ { @@ -4917,7 +5215,7 @@ "code": 0, "mfgCode": null, "source": "client", - "isIncoming": 0, + "isIncoming": 1, "isEnabled": 1 }, { @@ -4925,7 +5223,7 @@ "code": 0, "mfgCode": null, "source": "server", - "isIncoming": 1, + "isIncoming": 0, "isEnabled": 1 }, { @@ -4933,7 +5231,7 @@ "code": 1, "mfgCode": null, "source": "client", - "isIncoming": 0, + "isIncoming": 1, "isEnabled": 1 }, { @@ -4941,7 +5239,7 @@ "code": 1, "mfgCode": null, "source": "server", - "isIncoming": 1, + "isIncoming": 0, "isEnabled": 1 }, { @@ -4949,7 +5247,7 @@ "code": 2, "mfgCode": null, "source": "client", - "isIncoming": 0, + "isIncoming": 1, "isEnabled": 1 }, { @@ -4957,7 +5255,7 @@ "code": 2, "mfgCode": null, "source": "server", - "isIncoming": 1, + "isIncoming": 0, "isEnabled": 1 }, { @@ -4965,7 +5263,7 @@ "code": 3, "mfgCode": null, "source": "client", - "isIncoming": 0, + "isIncoming": 1, "isEnabled": 1 }, { @@ -4973,7 +5271,7 @@ "code": 3, "mfgCode": null, "source": "server", - "isIncoming": 1, + "isIncoming": 0, "isEnabled": 1 }, { @@ -4981,7 +5279,7 @@ "code": 4, "mfgCode": null, "source": "client", - "isIncoming": 0, + "isIncoming": 1, "isEnabled": 1 }, { @@ -4989,16 +5287,80 @@ "code": 5, "mfgCode": null, "source": "client", - "isIncoming": 0, + "isIncoming": 1, "isEnabled": 1 } ], "attributes": [ + { + "name": "NameSupport", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "NameSupportBitmap", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "FeatureMap", "code": 65532, "mfgCode": null, - "side": "client", + "side": "server", "type": "bitmap32", "included": 1, "storageOption": "RAM", @@ -5014,7 +5376,7 @@ "name": "ClusterRevision", "code": 65533, "mfgCode": null, - "side": "client", + "side": "server", "type": "int16u", "included": 1, "storageOption": "RAM", @@ -5022,9 +5384,9 @@ "bounded": 0, "defaultValue": "4", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": null + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 } ] }, @@ -5140,7 +5502,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -5617,7 +5979,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6020,6 +6382,22 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "MultiPressMax", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "2", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, @@ -6094,7 +6472,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "30", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6125,12 +6503,40 @@ "side": "server", "included": 1 }, + { + "name": "LongPress", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1 + }, { "name": "ShortRelease", "code": 3, "mfgCode": null, "side": "server", "included": 1 + }, + { + "name": "LongRelease", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1 + }, + { + "name": "MultiPressOngoing", + "code": 5, + "mfgCode": null, + "side": "server", + "included": 1 + }, + { + "name": "MultiPressComplete", + "code": 6, + "mfgCode": null, + "side": "server", + "included": 1 } ] } diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter index e9fbd295547920..f55a79c699b676 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1544,7 +1544,7 @@ cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2161,7 +2161,7 @@ endpoint 1 { ram attribute defaultMoveRate default = 50; persist attribute startUpCurrentLevel; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -2223,7 +2223,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap index 23465bb5f517aa..87d6c2f4c2f2a8 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap @@ -3374,7 +3374,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4300,7 +4300,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter index 312e1d244992eb..76615a2e64fd88 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1668,7 +1668,7 @@ cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2347,7 +2347,7 @@ endpoint 1 { ram attribute defaultMoveRate default = 50; persist attribute startUpCurrentLevel; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -2409,7 +2409,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap index a90a3218a93c5e..95e21f91d9870a 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap @@ -4350,7 +4350,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5276,7 +5276,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter index bd6285c06f472e..47736182e30ed2 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1579,7 +1579,7 @@ cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2210,7 +2210,7 @@ endpoint 1 { ram attribute defaultMoveRate default = 50; persist attribute startUpCurrentLevel; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -2272,7 +2272,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap index dea7862fc7ce5c..35a6c1aa4c9d4a 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap @@ -3557,7 +3557,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4483,7 +4483,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/infineon/psoc6/BUILD.gn b/examples/lighting-app/infineon/psoc6/BUILD.gn index 3bd75cc14d9e2c..8460cfef6dfec4 100644 --- a/examples/lighting-app/infineon/psoc6/BUILD.gn +++ b/examples/lighting-app/infineon/psoc6/BUILD.gn @@ -45,32 +45,38 @@ config("psoc6_ota_config") { ldflags = [ "-T" + rebase_path(linker_script, root_build_dir) ] - ldflags += [ "-Wl,--defsym,MCUBOOT_HEADER_SIZE=0x400,--defsym,MCUBOOT_BOOTLOADER_SIZE=0x18000,--defsym,CY_BOOT_PRIMARY_1_SIZE=0x1C0000" ] + ldflags += [ "-Wl,--undefined=uxTopUsedPriority -Wl,--defsym,MCUBOOT_HEADER_SIZE=0x400,--defsym,FLASH_AREA_IMG_1_PRIMARY_START=0x028000,--defsym,FLASH_AREA_IMG_1_PRIMARY_SIZE=0x1c0000" ] defines = [ "P6_OTA", - "OTA_SUPPORT ", - "OTA_USE_EXTERNAL_FLASH", - "CY_BOOT_USE_EXTERNAL_FLASH", - "MCUBOOT_HEADER_SIZE=0x400", - "MCUBOOT_MAX_IMG_SECTORS=3584", - "CY_BOOT_SCRATCH_SIZE=0x00004000", - "MCUBOOT_BOOTLOADER_SIZE=0x00018000", - "CY_BOOT_BOOTLOADER_SIZE=0x00018000", - "CY_BOOT_PRIMARY_1_START=0x00018000", - "CY_BOOT_PRIMARY_1_SIZE=0x1C0000", - "CY_BOOT_SECONDARY_1_START=0x00000000", - "CY_BOOT_SECONDARY_1_SIZE=0x001C0000", - "CY_FLASH_ERASE_VALUE=0xFF", + "COMPONENT_MCUBOOT", + "CY_BOOTLOADER=MCUBOOT", + "OTA_SUPPORT=1", + "COMPONENT_OTA_PSOC_062", + "PSOC_062_2M", + "OTA_USE_EXTERNAL_FLASH=1", + "ENABLE_OTA_LOGS", + "ENABLE_OTA_BOOTLOADER_ABSTRACTION_LOGS", "MCUBOOT_IMAGE_NUMBER=1", - "MCUBOOT_SLOT_SIZE=0x1C0000", - "MCUBOOT_SCRATCH_SIZE=0x4000", - "MCUBOOT_SECTOR_SIZE = 512", + "MCUBOOT_MAX_IMG_SECTORS=3584", + "FLASH_AREA_BOOTLOADER_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_BOOTLOADER_SIZE=0x028000", + "FLASH_AREA_BOOTLOADER_START=0x000000", + "FLASH_AREA_IMAGE_SCRATCH_DEV_ID='FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX)'", + "FLASH_AREA_IMAGE_SCRATCH_SIZE=0x080000", + "FLASH_AREA_IMAGE_SCRATCH_START=0x440000", + "FLASH_AREA_IMAGE_SWAP_STATUS_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_IMAGE_SWAP_STATUS_SIZE=0x006c00", + "FLASH_AREA_IMAGE_SWAP_STATUS_START=0x1e8000", + "FLASH_AREA_IMG_1_PRIMARY_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_IMG_1_PRIMARY_SIZE=0x1c0000", + "FLASH_AREA_IMG_1_PRIMARY_START=0x028000", + "FLASH_AREA_IMG_1_SECONDARY_DEV_ID='FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX)'", + "FLASH_AREA_IMG_1_SECONDARY_SIZE=0x1c0000", + "FLASH_AREA_IMG_1_SECONDARY_START=0x000200", "APP_VERSION_MAJOR=1", "APP_VERSION_MINOR=0", "APP_VERSION_BUILD=0", - "MCUBOOT_OVERWRITE_ONLY", - "CY_ENABLE_XIP_PROGRAM", ] if (build_update_image) { @@ -87,7 +93,7 @@ psoc6_sdk_sources("lighting_app_sdk_sources") { defines = [ "BOARD_ID=${psoc6_board}", - "P6_LOG_ENABLED=1", + "PSOC6_LOG_ENABLED=1", "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setup_pin_code}", ] diff --git a/examples/lighting-app/infineon/psoc6/include/AppConfig.h b/examples/lighting-app/infineon/psoc6/include/AppConfig.h index 21b9e9467263fa..2fbc01038c0941 100644 --- a/examples/lighting-app/infineon/psoc6/include/AppConfig.h +++ b/examples/lighting-app/infineon/psoc6/include/AppConfig.h @@ -47,14 +47,14 @@ #define THREAD_ACTIVE_POLLING_INTERVAL_MS 100 #define THREAD_INACTIVE_POLLING_INTERVAL_MS 1000 -// P6 Logging +// PSOC6 Logging #ifdef __cplusplus extern "C" { #endif void appError(int err); -void P6Log(const char * aFormat, ...); -#define P6_LOG(...) P6Log(__VA_ARGS__) +void PSOC6Log(const char * aFormat, ...); +#define PSOC6_LOG(...) PSOC6Log(__VA_ARGS__) #ifdef __cplusplus } diff --git a/examples/lighting-app/infineon/psoc6/include/AppTask.h b/examples/lighting-app/infineon/psoc6/include/AppTask.h index 4f6f77663d18a4..2259880efb5726 100644 --- a/examples/lighting-app/infineon/psoc6/include/AppTask.h +++ b/examples/lighting-app/infineon/psoc6/include/AppTask.h @@ -30,6 +30,10 @@ #include #include +extern "C" { +#include "flash_map_backend.h" +} + // Application-defined error codes in the CHIP_ERROR space. #define APP_ERROR_EVENT_QUEUE_FAILED CHIP_APPLICATION_ERROR(0x01) #define APP_ERROR_CREATE_TASK_FAILED CHIP_APPLICATION_ERROR(0x02) diff --git a/examples/lighting-app/infineon/psoc6/include/CHIPProjectConfig.h b/examples/lighting-app/infineon/psoc6/include/CHIPProjectConfig.h index ab00f26adecb76..15143de90103ca 100644 --- a/examples/lighting-app/infineon/psoc6/include/CHIPProjectConfig.h +++ b/examples/lighting-app/infineon/psoc6/include/CHIPProjectConfig.h @@ -41,10 +41,10 @@ #define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005 /* The ProductName attribute of the Basic cluster. */ -#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "P6-CYW43012 Light" +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "PSOC6-CYW43012 Light" /* The HardwareVersionString attribute of the Basic cluster. */ -#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "P6-43012" +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "PSOC6-43012" /* The HardwareVersion attribute of the Basic cluster. */ #define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION 43012 diff --git a/examples/lighting-app/infineon/psoc6/src/AppTask.cpp b/examples/lighting-app/infineon/psoc6/src/AppTask.cpp index 49e6278ab032c9..43a501ad7edb5c 100644 --- a/examples/lighting-app/infineon/psoc6/src/AppTask.cpp +++ b/examples/lighting-app/infineon/psoc6/src/AppTask.cpp @@ -160,7 +160,7 @@ CHIP_ERROR AppTask::StartAppTask() sAppEventQueue = xQueueCreateStatic(APP_EVENT_QUEUE_SIZE, sizeof(AppEvent), sAppEventQueueBuffer, &sAppEventQueueStruct); if (sAppEventQueue == NULL) { - P6_LOG("Failed to allocate app event queue"); + PSOC6_LOG("Failed to allocate app event queue"); appError(APP_ERROR_EVENT_QUEUE_FAILED); } @@ -173,10 +173,10 @@ CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR - int rc = boot_set_confirmed(); + int rc = flash_area_boot_set_confirmed(); if (rc != 0) { - P6_LOG("boot_set_confirmed failed"); + PSOC6_LOG("flash_area_boot_set_confirmed failed"); appError(CHIP_ERROR_UNINITIALIZED); } #endif @@ -209,15 +209,15 @@ CHIP_ERROR AppTask::Init() ); if (sFunctionTimer == NULL) { - P6_LOG("funct timer create failed"); + PSOC6_LOG("funct timer create failed"); appError(APP_ERROR_CREATE_TIMER_FAILED); } NetWorkCommissioningInstInit(); - P6_LOG("Current Firmware Version: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); + PSOC6_LOG("Current Firmware Version: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); err = LightMgr().Init(); if (err != CHIP_NO_ERROR) { - P6_LOG("LightMgr().Init() failed"); + PSOC6_LOG("LightMgr().Init() failed"); appError(err); } @@ -243,11 +243,11 @@ void AppTask::AppTaskMain(void * pvParameter) CHIP_ERROR err = sAppTask.Init(); if (err != CHIP_NO_ERROR) { - P6_LOG("AppTask.Init() failed"); + PSOC6_LOG("AppTask.Init() failed"); appError(err); } - P6_LOG("App Task started"); + PSOC6_LOG("App Task started"); while (true) { @@ -337,7 +337,7 @@ void AppTask::LightActionEventHandler(AppEvent * event) if (!LightMgr().InitiateAction(actor, action)) { - P6_LOG("Action is already in progress or active."); + PSOC6_LOG("Action is already in progress or active."); } } @@ -395,7 +395,8 @@ void AppTask::FunctionHandler(AppEvent * event) { if (!sAppTask.mFunctionTimerActive && sAppTask.mFunction == Function::kNoneSelected) { - P6_LOG("Factory Reset Triggered. Press button again within %us to cancel.", FACTORY_RESET_CANCEL_WINDOW_TIMEOUT / 1000); + PSOC6_LOG("Factory Reset Triggered. Press button again within %us to cancel.", + FACTORY_RESET_CANCEL_WINDOW_TIMEOUT / 1000); // Start timer for FACTORY_RESET_CANCEL_WINDOW_TIMEOUT to allow user to // cancel, if required. sAppTask.StartTimer(FACTORY_RESET_CANCEL_WINDOW_TIMEOUT); @@ -421,7 +422,7 @@ void AppTask::FunctionHandler(AppEvent * event) // canceled. sAppTask.mFunction = Function::kNoneSelected; - P6_LOG("Factory Reset has been Canceled"); + PSOC6_LOG("Factory Reset has been Canceled"); } } } @@ -430,7 +431,7 @@ void AppTask::CancelTimer() { if (xTimerStop(sFunctionTimer, 0) == pdFAIL) { - P6_LOG("app timer stop() failed"); + PSOC6_LOG("app timer stop() failed"); appError(APP_ERROR_STOP_TIMER_FAILED); } @@ -441,7 +442,7 @@ void AppTask::StartTimer(uint32_t aTimeoutInMs) { if (xTimerIsTimerActive(sFunctionTimer)) { - P6_LOG("app timer already started!"); + PSOC6_LOG("app timer already started!"); CancelTimer(); } @@ -450,7 +451,7 @@ void AppTask::StartTimer(uint32_t aTimeoutInMs) // cannot immediately be sent to the timer command queue. if (xTimerChangePeriod(sFunctionTimer, aTimeoutInMs / portTICK_PERIOD_MS, 100) != pdPASS) { - P6_LOG("app timer start() failed"); + PSOC6_LOG("app timer start() failed"); appError(APP_ERROR_START_TIMER_FAILED); } @@ -462,12 +463,12 @@ void AppTask::ActionInitiated(LightingManager::Action_t action, int32_t actor) // Action initiated, update the light led if (action == LightingManager::ON_ACTION) { - P6_LOG("Turning light ON"); + PSOC6_LOG("Turning light ON"); sLightLED.Set(true); } else if (action == LightingManager::OFF_ACTION) { - P6_LOG("Turning light OFF"); + PSOC6_LOG("Turning light OFF"); sLightLED.Set(false); } @@ -482,11 +483,11 @@ void AppTask::ActionCompleted(LightingManager::Action_t action) // action has been completed bon the light if (action == LightingManager::ON_ACTION) { - P6_LOG("Light ON"); + PSOC6_LOG("Light ON"); } else if (action == LightingManager::OFF_ACTION) { - P6_LOG("Light OFF"); + PSOC6_LOG("Light OFF"); } if (sAppTask.mSyncClusterToButtonAction) @@ -530,11 +531,11 @@ void AppTask::PostEvent(const AppEvent * event) } if (!status) - P6_LOG("Failed to post event to app task event queue"); + PSOC6_LOG("Failed to post event to app task event queue"); } else { - P6_LOG("Event Queue is NULL should never happen"); + PSOC6_LOG("Event Queue is NULL should never happen"); } } @@ -546,7 +547,7 @@ void AppTask::DispatchEvent(AppEvent * event) } else { - P6_LOG("Event received with no handler. Dropping event."); + PSOC6_LOG("Event received with no handler. Dropping event."); } } @@ -558,7 +559,7 @@ void AppTask::UpdateClusterState(intptr_t context) Protocols::InteractionModel::Status status = app::Clusters::OnOff::Attributes::OnOff::Set(1, newValue); if (status != Protocols::InteractionModel::Status::Success) { - P6_LOG("ERR: updating on/off %x", to_underlying(status)); + PSOC6_LOG("ERR: updating on/off %x", to_underlying(status)); } } #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR @@ -573,7 +574,7 @@ void AppTask::InitOTARequestor() gRequestorUser.Init(&gRequestorCore, &gImageProcessor); - P6_LOG("Current Software Version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); - P6_LOG("Current Software Version String: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); + PSOC6_LOG("Current Software Version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + PSOC6_LOG("Current Software Version String: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); } #endif diff --git a/examples/lighting-app/infineon/psoc6/src/LightingManager.cpp b/examples/lighting-app/infineon/psoc6/src/LightingManager.cpp index b2db66900c8db6..5f0ffabb61915d 100644 --- a/examples/lighting-app/infineon/psoc6/src/LightingManager.cpp +++ b/examples/lighting-app/infineon/psoc6/src/LightingManager.cpp @@ -39,7 +39,7 @@ CHIP_ERROR LightingManager::Init() if (sLightTimer == NULL) { - P6_LOG("sLockTimer timer create failed"); + PSOC6_LOG("sLockTimer timer create failed"); return APP_ERROR_CREATE_TIMER_FAILED; } @@ -125,7 +125,7 @@ void LightingManager::StartTimer(uint32_t aTimeoutMs) { if (xTimerIsTimerActive(sLightTimer)) { - P6_LOG("app timer already started!"); + PSOC6_LOG("app timer already started!"); CancelTimer(); } @@ -134,7 +134,7 @@ void LightingManager::StartTimer(uint32_t aTimeoutMs) // cannot immediately be sent to the timer command queue. if (xTimerChangePeriod(sLightTimer, (aTimeoutMs / portTICK_PERIOD_MS), 100) != pdPASS) { - P6_LOG("sLockTimer timer start() failed"); + PSOC6_LOG("sLockTimer timer start() failed"); appError(APP_ERROR_START_TIMER_FAILED); } } @@ -143,7 +143,7 @@ void LightingManager::CancelTimer(void) { if (xTimerStop(sLightTimer, 0) == pdFAIL) { - P6_LOG("sLightTimer stop() failed"); + PSOC6_LOG("sLightTimer stop() failed"); appError(APP_ERROR_STOP_TIMER_FAILED); } } @@ -183,7 +183,7 @@ void LightingManager::AutoTurnOffTimerEventHandler(AppEvent * aEvent) light->mAutoTurnOffTimerArmed = false; - P6_LOG("Auto Turn Off has been triggered!"); + PSOC6_LOG("Auto Turn Off has been triggered!"); light->InitiateAction(actor, OFF_ACTION); } @@ -219,7 +219,7 @@ void LightingManager::ActuatorMovementTimerEventHandler(AppEvent * aEvent) light->mAutoTurnOffTimerArmed = true; - P6_LOG("Auto Turn off enabled. Will be triggered in %u seconds", light->mAutoTurnOffDuration); + PSOC6_LOG("Auto Turn off enabled. Will be triggered in %u seconds", light->mAutoTurnOffDuration); } } } diff --git a/examples/lighting-app/infineon/psoc6/src/main.cpp b/examples/lighting-app/infineon/psoc6/src/main.cpp index 66ec9addd01aab..5997aa53e60a84 100644 --- a/examples/lighting-app/infineon/psoc6/src/main.cpp +++ b/examples/lighting-app/infineon/psoc6/src/main.cpp @@ -56,7 +56,7 @@ static void main_task(void * pvParameters); //================================================================================= void appError(int err) { - P6_LOG("!!!!!!!!!!!! App Critical Error: %d !!!!!!!!!!!", err); + PSOC6_LOG("!!!!!!!!!!!! App Critical Error: %d !!!!!!!!!!!", err); portDISABLE_INTERRUPTS(); while (true) ; @@ -89,35 +89,35 @@ static void main_task(void * pvParameters) CHIP_ERROR ret = chip::DeviceLayer::PersistedStorage::KeyValueStoreMgrImpl().Init(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); + PSOC6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); appError(ret); } ret = PlatformMgr().InitChipStack(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PlatformMgr().InitChipStack() failed"); + PSOC6_LOG("PlatformMgr().InitChipStack() failed"); appError(ret); } - ret = chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName("P6_LIGHT"); + ret = chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName("PSOC6_LIGHT"); if (ret != CHIP_NO_ERROR) { - P6_LOG("ConnectivityMgr().SetBLEDeviceName() failed"); + PSOC6_LOG("ConnectivityMgr().SetBLEDeviceName() failed"); appError(ret); } - P6_LOG("Starting Platform Manager Event Loop"); + PSOC6_LOG("Starting Platform Manager Event Loop"); ret = PlatformMgr().StartEventLoopTask(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PlatformMgr().StartEventLoopTask() failed"); + PSOC6_LOG("PlatformMgr().StartEventLoopTask() failed"); appError(ret); } ret = GetAppTask().StartAppTask(); if (ret != CHIP_NO_ERROR) { - P6_LOG("GetAppTask().Init() failed"); + PSOC6_LOG("GetAppTask().Init() failed"); appError(ret); } @@ -130,7 +130,7 @@ static void main_task(void * pvParameters) // ================================================================================ int main(void) { - init_p6Platform(); + init_psoc6Platform(); #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR // Clear watchdog timer (started by bootloader) so that it doesn't trigger a reset cyhal_wdt_t wdt_obj; @@ -141,9 +141,9 @@ int main(void) MemMonitoring::startHeapMonitoring(); #endif - P6_LOG("==================================================\r\n"); - P6_LOG("chip-p6-lighting-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); - P6_LOG("==================================================\r\n"); + PSOC6_LOG("==================================================\r\n"); + PSOC6_LOG("chip-psoc6-lighting-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + PSOC6_LOG("==================================================\r\n"); /* Start the FreeRTOS scheduler */ vTaskStartScheduler(); @@ -153,5 +153,5 @@ int main(void) PlatformMgr().Shutdown(); // Should never get here. - P6_LOG("vTaskStartScheduler() failed"); + PSOC6_LOG("vTaskStartScheduler() failed"); } diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index f0bfd80d7ddaed..61fa92b32778cd 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1999,7 +1999,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2787,7 +2787,7 @@ endpoint 1 { ram attribute defaultMoveRate default = 50; persist attribute startUpCurrentLevel default = 255; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -2857,7 +2857,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; persist attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/lighting-common/lighting-app.zap b/examples/lighting-app/lighting-common/lighting-app.zap index 6489a395b38c7e..730b68027a4cb1 100644 --- a/examples/lighting-app/lighting-common/lighting-app.zap +++ b/examples/lighting-app/lighting-common/lighting-app.zap @@ -4922,7 +4922,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5813,7 +5813,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/nrfconnect/CMakeLists.txt b/examples/lighting-app/nrfconnect/CMakeLists.txt index 04dacfac4af308..5b2647894e9ffb 100644 --- a/examples/lighting-app/nrfconnect/CMakeLists.txt +++ b/examples/lighting-app/nrfconnect/CMakeLists.txt @@ -22,20 +22,12 @@ get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH) include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) -set(hci_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.root) - -if(NOT CONF_FILE STREQUAL "prj_no_dfu.conf" AND NOT BOARD STREQUAL "nrf52840dongle_nrf52840") - set(PM_STATIC_YML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/configuration/${BOARD}/pm_static_dfu.yml) -endif() - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) project(chip-nrfconnect-lighting-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) diff --git a/examples/lighting-app/nrfconnect/Kconfig.sysbuild b/examples/lighting-app/nrfconnect/Kconfig.sysbuild new file mode 100644 index 00000000000000..4048c88bf51f0f --- /dev/null +++ b/examples/lighting-app/nrfconnect/Kconfig.sysbuild @@ -0,0 +1,79 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y + +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if (SOC_SERIES_NRF53X) && !WIFI_NRF700X + +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +config MATTER_OTA + default n if BOARD_NRF52840DONGLE_NRF52840 + +#### Bootloader +choice BOOTLOADER + default BOOTLOADER_MCUBOOT if !BOARD_NRF52840DONGLE_NRF52840 +endchoice + +if BOOTLOADER_MCUBOOT + +#### DFU multi-image support +config DFU_MULTI_IMAGE_PACKAGE_BUILD + default y + +config DFU_MULTI_IMAGE_PACKAGE_APP + default y + +config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY + default y + +#### DFU network core configuration +if SOC_SERIES_NRF53X + +config MCUBOOT_UPDATEABLE_IMAGES + default 2 + +choice MCUBOOT_MODE + default MCUBOOT_MODE_OVERWRITE_ONLY +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_RSA +endchoice + +config SECURE_BOOT_NETCORE + default y + +config NETCORE_APP_UPDATE + default y + +config DFU_MULTI_IMAGE_PACKAGE_NET + default y + +endif # SOC_SERIES_NRF53X +endif # BOOTLOADER_MCUBOOT + +#### Enable generating factory data +config MATTER_FACTORY_DATA_GENERATE + default y if !BOARD_NRF52840DONGLE_NRF52840 + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/lighting-app/nrfconnect/boards/nrf52840dongle_nrf52840_no_dfu.conf b/examples/lighting-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf similarity index 93% rename from examples/lighting-app/nrfconnect/boards/nrf52840dongle_nrf52840_no_dfu.conf rename to examples/lighting-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf index 01eedaf2e36856..db5151dc6c7ef4 100644 --- a/examples/lighting-app/nrfconnect/boards/nrf52840dongle_nrf52840_no_dfu.conf +++ b/examples/lighting-app/nrfconnect/boards/nrf52840dongle_nrf52840.conf @@ -41,3 +41,9 @@ CONFIG_PM_SINGLE_IMAGE=y # Disable factory data support. CONFIG_CHIP_FACTORY_DATA=n CONFIG_CHIP_FACTORY_DATA_BUILD=n + +# Disable Matter OTA DFU +CONFIG_CHIP_OTA_REQUESTOR=n + +# Disable QSPI NOR +CONFIG_CHIP_QSPI_NOR=n diff --git a/examples/lighting-app/nrfconnect/child_image/hci_rpmsg/prj.conf b/examples/lighting-app/nrfconnect/child_image/hci_rpmsg/prj.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/hci_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lighting-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf b/examples/lighting-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lighting-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf b/examples/lighting-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay b/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay deleted file mode 100644 index f18e3e0cc16434..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay b/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf b/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf deleted file mode 100644 index cd9aab4101c6f5..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -CONFIG_GPIO=y diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay b/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf b/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf deleted file mode 100644 index cd9aab4101c6f5..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -CONFIG_GPIO=y diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay b/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/prj_release.conf b/examples/lighting-app/nrfconnect/child_image/mcuboot/prj_release.conf deleted file mode 100644 index 90969a32dbc414..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/prj_release.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n -CONFIG_GPIO=n diff --git a/examples/lighting-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf b/examples/lighting-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lighting-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf b/examples/lighting-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lighting-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf b/examples/lighting-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/lighting-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lighting-app/nrfconnect/main/include/CHIPProjectConfig.h b/examples/lighting-app/nrfconnect/main/include/CHIPProjectConfig.h index 7e997d723549d2..4baa186190f638 100644 --- a/examples/lighting-app/nrfconnect/main/include/CHIPProjectConfig.h +++ b/examples/lighting-app/nrfconnect/main/include/CHIPProjectConfig.h @@ -26,8 +26,3 @@ */ #pragma once - -// Switching from Thread child to router may cause a few second packet stall. -// Until this is improved in OpenThread we need to increase the retransmission -// interval to survive the stall. -#define CHIP_CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL (1000_ms32) diff --git a/examples/lit-icd-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml b/examples/lighting-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml similarity index 100% rename from examples/lit-icd-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml rename to examples/lighting-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml diff --git a/examples/lock-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml b/examples/lighting-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml similarity index 100% rename from examples/lock-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml rename to examples/lighting-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml diff --git a/examples/lighting-app/nrfconnect/pm_static_nrf52840dongle_nrf52840_no_dfu.yml b/examples/lighting-app/nrfconnect/pm_static_nrf52840dongle_nrf52840.yml similarity index 100% rename from examples/lighting-app/nrfconnect/pm_static_nrf52840dongle_nrf52840_no_dfu.yml rename to examples/lighting-app/nrfconnect/pm_static_nrf52840dongle_nrf52840.yml diff --git a/examples/window-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml b/examples/lighting-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml similarity index 100% rename from examples/window-app/nrfconnect/configuration/nrf5340dk_nrf5340_cpuapp/pm_static_dfu.yml rename to examples/lighting-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml diff --git a/examples/lighting-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml b/examples/lighting-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/lighting-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/lighting-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp.yml b/examples/lighting-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp.yml new file mode 100644 index 00000000000000..3c56dc0ddb1968 --- /dev/null +++ b/examples/lighting-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0xC000 + region: flash_primary +mcuboot_pad: + address: 0xC000 + size: 0x200 +app: + address: 0xC200 + size: 0xeee00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0xC000 + size: 0xef000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0xC200 + size: 0xeee00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xef000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xef000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x12f000 + size: 0x6D1000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/lighting-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml b/examples/lighting-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml new file mode 100644 index 00000000000000..3c56dc0ddb1968 --- /dev/null +++ b/examples/lighting-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0xC000 + region: flash_primary +mcuboot_pad: + address: 0xC000 + size: 0x200 +app: + address: 0xC200 + size: 0xeee00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0xC000 + size: 0xef000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0xC200 + size: 0xeee00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xef000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xef000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x12f000 + size: 0x6D1000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/lighting-app/nrfconnect/prj.conf b/examples/lighting-app/nrfconnect/prj.conf index 38c8be587d5600..c4f521be6960ea 100644 --- a/examples/lighting-app/nrfconnect/prj.conf +++ b/examples/lighting-app/nrfconnect/prj.conf @@ -25,9 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32773 CONFIG_STD_CPP17=y -# Enable CHIP pairing automatically on application start. +# Enable Matter pairing automatically on application start. CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y CONFIG_PWM=y diff --git a/examples/lighting-app/nrfconnect/prj_no_dfu.conf b/examples/lighting-app/nrfconnect/prj_no_dfu.conf deleted file mode 100644 index 22cdc2b700ee9f..00000000000000 --- a/examples/lighting-app/nrfconnect/prj_no_dfu.conf +++ /dev/null @@ -1,56 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This sample uses Kconfig.defaults to set options common for all -# samples. This file should contain only options specific for this sample -# or overrides of default values. - -# Enable CHIP -CONFIG_CHIP=y -CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" -# 32773 == 0x8005 (example lighting-app) -CONFIG_CHIP_DEVICE_PRODUCT_ID=32773 -CONFIG_STD_CPP17=y - -# Enable CHIP pairing automatically on application start. -CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y - -# Add support for LEDs and buttons on Nordic development kits -CONFIG_DK_LIBRARY=y -CONFIG_PWM=y - -# General networking settings -CONFIG_NET_IF_MCAST_IPV6_ADDR_COUNT=14 - -# Bluetooth Low Energy configuration -CONFIG_BT_DEVICE_NAME="MatterLight" - -# Other settings -CONFIG_THREAD_NAME=y -CONFIG_MPU_STACK_GUARD=y -CONFIG_RESET_ON_FATAL_ERROR=n - -# Reduce application size -CONFIG_USE_SEGGER_RTT=n - -# Stack size settings -CONFIG_IEEE802154_NRF5_RX_STACK_SIZE=1024 - -# Disable Matter OTA DFU -CONFIG_CHIP_OTA_REQUESTOR=n - -# Disable QSPI NOR -CONFIG_CHIP_QSPI_NOR=n diff --git a/examples/lighting-app/nrfconnect/prj_release.conf b/examples/lighting-app/nrfconnect/prj_release.conf index 4468a07e40b088..a51ed89060d0e6 100644 --- a/examples/lighting-app/nrfconnect/prj_release.conf +++ b/examples/lighting-app/nrfconnect/prj_release.conf @@ -25,9 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32773 CONFIG_STD_CPP17=y -# Enable CHIP pairing automatically on application start. +# Enable Matter pairing automatically on application start. CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y CONFIG_PWM=y diff --git a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf b/examples/lighting-app/nrfconnect/sysbuild.conf similarity index 90% rename from examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf rename to examples/lighting-app/nrfconnect/sysbuild.conf index cd9aab4101c6f5..d0c5eee2b93c39 100644 --- a/examples/all-clusters-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf +++ b/examples/lighting-app/nrfconnect/sysbuild.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2022 Project CHIP Authors +# Copyright (c) 2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,4 +14,4 @@ # limitations under the License. # -CONFIG_GPIO=y +SB_CONFIG_MATTER=y diff --git a/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf b/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..694c3b08242f29 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf @@ -0,0 +1,52 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y diff --git a/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/lighting-app/nrfconnect/sysbuild/mcuboot/app.overlay b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/app.overlay new file mode 100644 index 00000000000000..74d3dfbfd22f30 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/app.overlay @@ -0,0 +1,5 @@ +/ { + chosen { + zephyr,code-partition = &boot_partition; + }; +}; diff --git a/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf new file mode 100644 index 00000000000000..50610217c762b5 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf @@ -0,0 +1,19 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 diff --git a/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..2d86fe6442dd39 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +CONFIG_BOOT_SWAP_USING_MOVE=n +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..81701b7eb63f70 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf @@ -0,0 +1,40 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# nRF7002DK uses SPI NOR external flash +CONFIG_GPIO=y +CONFIG_SPI=y +CONFIG_SPI_NOR=y +CONFIG_SPI_NOR_SFDP_DEVICETREE=y +CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 + +CONFIG_MULTITHREADING=y +CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/lighting-app/nrfconnect/child_image/mcuboot/prj.conf b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/prj.conf similarity index 59% rename from examples/lighting-app/nrfconnect/child_image/mcuboot/prj.conf rename to examples/lighting-app/nrfconnect/sysbuild/mcuboot/prj.conf index 90969a32dbc414..3bcb12fe7b8d25 100644 --- a/examples/lighting-app/nrfconnect/child_image/mcuboot/prj.conf +++ b/examples/lighting-app/nrfconnect/sysbuild/mcuboot/prj.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2022 Project CHIP Authors +# Copyright (c) 2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,17 +14,36 @@ # limitations under the License. # -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. +CONFIG_MAIN_STACK_SIZE=10240 + +CONFIG_BOOT_SWAP_SAVE_ENCTLV=n +CONFIG_BOOT_BOOTSTRAP=n +CONFIG_PM=n + +CONFIG_FLASH=y +CONFIG_FPROTECT=y CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" +# Use minimal C library instead of the Picolib +CONFIG_MINIMAL_LIBC=y + # Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. CONFIG_CONSOLE=n CONFIG_SERIAL=n CONFIG_UART_CONSOLE=n CONFIG_USE_SEGGER_RTT=n CONFIG_GPIO=n + +CONFIG_BOOT_MAX_IMG_SECTORS=256 + +CONFIG_LOG=n +CONFIG_CONSOLE_HANDLER=n +CONFIG_BOOT_BANNER=n +CONFIG_NCS_BOOT_BANNER=n +CONFIG_TIMESLICING=n +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_MULTITHREADING=n +CONFIG_TICKLESS_KERNEL=n +CONFIG_TIMEOUT_64BIT=n +CONFIG_NRF_ENABLE_ICACHE=n diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.matter b/examples/lighting-app/nxp/zap/lighting-on-off.matter index 504b4618b4c124..11b4298d8fad5e 100644 --- a/examples/lighting-app/nxp/zap/lighting-on-off.matter +++ b/examples/lighting-app/nxp/zap/lighting-on-off.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1835,7 +1835,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.zap b/examples/lighting-app/nxp/zap/lighting-on-off.zap index 839971a84dec9e..941eb33fb2c5d2 100644 --- a/examples/lighting-app/nxp/zap/lighting-on-off.zap +++ b/examples/lighting-app/nxp/zap/lighting-on-off.zap @@ -3831,7 +3831,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/qpg/src/AppTask.cpp b/examples/lighting-app/qpg/src/AppTask.cpp index d870ea24deeb13..90f2e30ecb03c5 100644 --- a/examples/lighting-app/qpg/src/AppTask.cpp +++ b/examples/lighting-app/qpg/src/AppTask.cpp @@ -69,7 +69,8 @@ using namespace ::chip::DeviceLayer; #define APP_TASK_PRIORITY 2 #define APP_EVENT_QUEUE_SIZE 10 #define QPG_LIGHT_ENDPOINT_ID (1) -#define TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS (1 * 3600) // this value must be multiplication of 3600 +#define SECONDS_IN_HOUR (3600) // we better keep this 3600 +#define TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS (1 * SECONDS_IN_HOUR) // increment every hour static uint8_t countdown = 0; @@ -454,10 +455,18 @@ void AppTask::TotalHoursTimerHandler(chip::System::Layer * aLayer, void * aAppSt CHIP_ERROR err; uint32_t totalOperationalHours = 0; - if (ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours) == CHIP_NO_ERROR) + err = ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours); + + if (err == CHIP_NO_ERROR) + { + ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + + (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / SECONDS_IN_HOUR)); + } + else if (err == CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND) { + totalOperationalHours = 0; // set this explicitly to 0 for safety ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + - (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / 3600)); + (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / SECONDS_IN_HOUR)); } else { diff --git a/examples/lighting-app/qpg/zap/light.matter b/examples/lighting-app/qpg/zap/light.matter index f0624ae0a83f48..b2160c8fae6ddb 100644 --- a/examples/lighting-app/qpg/zap/light.matter +++ b/examples/lighting-app/qpg/zap/light.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1607,7 +1607,7 @@ cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2321,7 +2321,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -2389,7 +2389,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/qpg/zap/light.zap b/examples/lighting-app/qpg/zap/light.zap index 62d6453e7abf03..6390c7f37267d8 100644 --- a/examples/lighting-app/qpg/zap/light.zap +++ b/examples/lighting-app/qpg/zap/light.zap @@ -17,6 +17,13 @@ } ], "package": [ + { + "pathRelativity": "relativeToZap", + "path": "../../../../src/app/zap-templates/app-templates.json", + "type": "gen-templates-json", + "category": "matter", + "version": "chip-v1" + }, { "pathRelativity": "relativeToZap", "path": "../../../../src/app/zap-templates/zcl/zcl.json", @@ -4980,7 +4987,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -6002,7 +6009,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter index 6754f806b1a6b2..3ed9a2273a3436 100644 --- a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter +++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1703,7 +1703,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2362,7 +2362,7 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -2440,7 +2440,7 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.zap b/examples/lighting-app/silabs/data_model/lighting-thread-app.zap index e759d83b2f2276..a3fd5e516aad09 100644 --- a/examples/lighting-app/silabs/data_model/lighting-thread-app.zap +++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.zap @@ -4289,7 +4289,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5316,7 +5316,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter index 37415d0d79f5cc..e89bd41f1278b2 100644 --- a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter +++ b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1994,7 +1994,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2634,7 +2634,7 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 3; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -2729,7 +2729,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; persist attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap b/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap index 84dd93b4bc6533..6d438d10e14001 100644 --- a/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap +++ b/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap @@ -3774,7 +3774,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5027,7 +5027,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lit-icd-app/linux/main.cpp b/examples/lit-icd-app/linux/main.cpp index 1f4031af407d42..601cc22d3d2af9 100644 --- a/examples/lit-icd-app/linux/main.cpp +++ b/examples/lit-icd-app/linux/main.cpp @@ -19,16 +19,26 @@ #include "AppMain.h" #include +#include "system/SystemClock.h" + using namespace chip; using namespace chip::app; +using namespace chip::System::Clock::Literals; void ApplicationInit() {} void ApplicationShutdown() {} +void notifyIcdActive(System::Layer * layer, void *) +{ + ICDNotifier::GetInstance().NotifyNetworkActivityNotification(); + DeviceLayer::SystemLayer().StartTimer(10000_ms32, notifyIcdActive, nullptr); +} + int main(int argc, char * argv[]) { VerifyOrDie(ChipLinuxAppInit(argc, argv) == 0); + DeviceLayer::SystemLayer().StartTimer(10000_ms32, notifyIcdActive, nullptr); ChipLinuxAppMainLoop(); return 0; } diff --git a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter index ec9f0764564372..4f8b1b55b51f42 100644 --- a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter +++ b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter @@ -1411,7 +1411,7 @@ cluster BooleanState = 69 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -1427,6 +1427,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -1465,6 +1466,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1799,7 +1801,7 @@ endpoint 0 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x0007; - ram attribute clusterRevision default = 2; + ram attribute clusterRevision default = 3; handle command RegisterClient; handle command RegisterClientResponse; diff --git a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.zap b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.zap index 65236d3c49498e..2a75af9025f0d5 100644 --- a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.zap +++ b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.zap @@ -3642,7 +3642,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/lit-icd-app/nrfconnect/CMakeLists.txt b/examples/lit-icd-app/nrfconnect/CMakeLists.txt index a9b921016670e7..36133c49ec12d1 100644 --- a/examples/lit-icd-app/nrfconnect/CMakeLists.txt +++ b/examples/lit-icd-app/nrfconnect/CMakeLists.txt @@ -21,14 +21,6 @@ get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH) include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) - -if(NOT CONF_FILE STREQUAL "prj_no_dfu.conf") - set(PM_STATIC_YML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/configuration/${BOARD}/pm_static_dfu.yml) -endif() - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) @@ -40,6 +32,7 @@ target_compile_options(app PRIVATE -Werror -Wno-error=maybe-uninitialized) project(chip-nrfconnect-lit-icd-app-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) diff --git a/examples/lit-icd-app/nrfconnect/Kconfig.sysbuild b/examples/lit-icd-app/nrfconnect/Kconfig.sysbuild new file mode 100644 index 00000000000000..8877de44e2d570 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/Kconfig.sysbuild @@ -0,0 +1,76 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y + +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if SOC_SERIES_NRF53X + +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +#### Bootloader +choice BOOTLOADER + default BOOTLOADER_MCUBOOT +endchoice + +if BOOTLOADER_MCUBOOT + +#### DFU multi-image support +config DFU_MULTI_IMAGE_PACKAGE_BUILD + default y + +config DFU_MULTI_IMAGE_PACKAGE_APP + default y + +config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY + default y + +#### DFU network core configuration +if SOC_SERIES_NRF53X + +config MCUBOOT_UPDATEABLE_IMAGES + default 2 + +choice MCUBOOT_MODE + default MCUBOOT_MODE_OVERWRITE_ONLY +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_RSA +endchoice + +config SECURE_BOOT_NETCORE + default y + +config NETCORE_APP_UPDATE + default y + +config DFU_MULTI_IMAGE_PACKAGE_NET + default y + +endif # SOC_SERIES_NRF53X +endif # BOOTLOADER_MCUBOOT + +#### Enable generating factory data +config MATTER_FACTORY_DATA_GENERATE + default y + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/lit-icd-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf b/examples/lit-icd-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf deleted file mode 100644 index 48deaa9fa18135..00000000000000 --- a/examples/lit-icd-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2024 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lit-icd-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf b/examples/lit-icd-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf deleted file mode 100644 index 48deaa9fa18135..00000000000000 --- a/examples/lit-icd-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2024 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/pump-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml b/examples/lit-icd-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml similarity index 100% rename from examples/pump-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml rename to examples/lit-icd-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml diff --git a/examples/pump-controller-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml b/examples/lit-icd-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml similarity index 100% rename from examples/pump-controller-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml rename to examples/lit-icd-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml diff --git a/examples/lit-icd-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml b/examples/lit-icd-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/lit-icd-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml b/examples/lit-icd-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/lit-icd-app/nrfconnect/prj.conf b/examples/lit-icd-app/nrfconnect/prj.conf index 950be7c8c394e4..a21c89fd5c0009 100644 --- a/examples/lit-icd-app/nrfconnect/prj.conf +++ b/examples/lit-icd-app/nrfconnect/prj.conf @@ -23,6 +23,13 @@ CONFIG_CHIP=y CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/lit-icd-app/nrfconnect/prj_no_dfu.conf b/examples/lit-icd-app/nrfconnect/prj_no_dfu.conf deleted file mode 100644 index 00607e349a31ab..00000000000000 --- a/examples/lit-icd-app/nrfconnect/prj_no_dfu.conf +++ /dev/null @@ -1,48 +0,0 @@ -# -# Copyright (c) 2024 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This sample uses Kconfig.defaults to set options common for all -# samples. This file should contain only options specific for this sample -# or overrides of default values. - -# Enable CHIP -CONFIG_CHIP=y -CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" -CONFIG_STD_CPP17=y - -# Add support for LEDs and buttons on Nordic development kits -CONFIG_DK_LIBRARY=y - -# Bluetooth Low Energy configuration -CONFIG_BT_DEVICE_NAME="MatterLIT" - -# Other settings -CONFIG_THREAD_NAME=y -CONFIG_MPU_STACK_GUARD=y -CONFIG_RESET_ON_FATAL_ERROR=n - -# Reduce application size -CONFIG_USE_SEGGER_RTT=n - -# Disable Matter OTA DFU -CONFIG_CHIP_OTA_REQUESTOR=n - -# Disable QSPI NOR -CONFIG_CHIP_QSPI_NOR=n - -# Enable LIT ICD configuration -CONFIG_CHIP_ENABLE_ICD_SUPPORT=y -CONFIG_CHIP_ICD_LIT_SUPPORT=y diff --git a/examples/lit-icd-app/nrfconnect/prj_release.conf b/examples/lit-icd-app/nrfconnect/prj_release.conf index 61b6b3dfc6f8f8..9ae438428f602d 100644 --- a/examples/lit-icd-app/nrfconnect/prj_release.conf +++ b/examples/lit-icd-app/nrfconnect/prj_release.conf @@ -23,6 +23,13 @@ CONFIG_CHIP=y CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf b/examples/lit-icd-app/nrfconnect/sysbuild.conf similarity index 90% rename from examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf rename to examples/lit-icd-app/nrfconnect/sysbuild.conf index cd9aab4101c6f5..d0c5eee2b93c39 100644 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf +++ b/examples/lit-icd-app/nrfconnect/sysbuild.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2022 Project CHIP Authors +# Copyright (c) 2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,4 +14,4 @@ # limitations under the License. # -CONFIG_GPIO=y +SB_CONFIG_MATTER=y diff --git a/examples/lit-icd-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/lit-icd-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/lit-icd-app/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/lit-icd-app/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/lit-icd-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/lit-icd-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/app.overlay b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/app.overlay new file mode 100644 index 00000000000000..74d3dfbfd22f30 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/app.overlay @@ -0,0 +1,5 @@ +/ { + chosen { + zephyr,code-partition = &boot_partition; + }; +}; diff --git a/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf new file mode 100644 index 00000000000000..50610217c762b5 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf @@ -0,0 +1,19 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 diff --git a/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..2d86fe6442dd39 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +CONFIG_BOOT_SWAP_USING_MOVE=n +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/prj.conf b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/prj.conf new file mode 100644 index 00000000000000..3bcb12fe7b8d25 --- /dev/null +++ b/examples/lit-icd-app/nrfconnect/sysbuild/mcuboot/prj.conf @@ -0,0 +1,49 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_MAIN_STACK_SIZE=10240 + +CONFIG_BOOT_SWAP_SAVE_ENCTLV=n +CONFIG_BOOT_BOOTSTRAP=n +CONFIG_PM=n + +CONFIG_FLASH=y +CONFIG_FPROTECT=y + +CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" + +# Use minimal C library instead of the Picolib +CONFIG_MINIMAL_LIBC=y + +# Bootloader size optimization +CONFIG_CONSOLE=n +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_USE_SEGGER_RTT=n +CONFIG_GPIO=n + +CONFIG_BOOT_MAX_IMG_SECTORS=256 + +CONFIG_LOG=n +CONFIG_CONSOLE_HANDLER=n +CONFIG_BOOT_BANNER=n +CONFIG_NCS_BOOT_BANNER=n +CONFIG_TIMESLICING=n +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_MULTITHREADING=n +CONFIG_TICKLESS_KERNEL=n +CONFIG_TIMEOUT_64BIT=n +CONFIG_NRF_ENABLE_ICACHE=n diff --git a/examples/lock-app/infineon/psoc6/BUILD.gn b/examples/lock-app/infineon/psoc6/BUILD.gn index 37ee666f5190f5..3c9be12a5417e6 100644 --- a/examples/lock-app/infineon/psoc6/BUILD.gn +++ b/examples/lock-app/infineon/psoc6/BUILD.gn @@ -44,32 +44,38 @@ config("psoc6_ota_config") { ldflags = [ "-T" + rebase_path(linker_script, root_build_dir) ] - ldflags += [ "-Wl,--defsym,MCUBOOT_HEADER_SIZE=0x400,--defsym,MCUBOOT_BOOTLOADER_SIZE=0x18000,--defsym,CY_BOOT_PRIMARY_1_SIZE=0x1C0000" ] + ldflags += [ "-Wl,--undefined=uxTopUsedPriority -Wl,--defsym,MCUBOOT_HEADER_SIZE=0x400,--defsym,FLASH_AREA_IMG_1_PRIMARY_START=0x028000,--defsym,FLASH_AREA_IMG_1_PRIMARY_SIZE=0x1c0000" ] defines = [ "P6_OTA", - "OTA_SUPPORT ", - "OTA_USE_EXTERNAL_FLASH", - "CY_BOOT_USE_EXTERNAL_FLASH", - "MCUBOOT_HEADER_SIZE=0x400", - "MCUBOOT_MAX_IMG_SECTORS=3584", - "CY_BOOT_SCRATCH_SIZE=0x00004000", - "MCUBOOT_BOOTLOADER_SIZE=0x00018000", - "CY_BOOT_BOOTLOADER_SIZE=0x00018000", - "CY_BOOT_PRIMARY_1_START=0x00018000", - "CY_BOOT_PRIMARY_1_SIZE=0x1C0000", - "CY_BOOT_SECONDARY_1_START=0x00000000", - "CY_BOOT_SECONDARY_1_SIZE=0x001C0000", - "CY_FLASH_ERASE_VALUE=0xFF", + "COMPONENT_MCUBOOT", + "CY_BOOTLOADER=MCUBOOT", + "OTA_SUPPORT=1", + "COMPONENT_OTA_PSOC_062", + "PSOC_062_2M", + "OTA_USE_EXTERNAL_FLASH=1", + "ENABLE_OTA_LOGS", + "ENABLE_OTA_BOOTLOADER_ABSTRACTION_LOGS", "MCUBOOT_IMAGE_NUMBER=1", - "MCUBOOT_SLOT_SIZE=0x1C0000", - "MCUBOOT_SCRATCH_SIZE=0x4000", - "MCUBOOT_SECTOR_SIZE = 512", + "MCUBOOT_MAX_IMG_SECTORS=3584", + "FLASH_AREA_BOOTLOADER_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_BOOTLOADER_SIZE=0x028000", + "FLASH_AREA_BOOTLOADER_START=0x000000", + "FLASH_AREA_IMAGE_SCRATCH_DEV_ID='FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX)'", + "FLASH_AREA_IMAGE_SCRATCH_SIZE=0x080000", + "FLASH_AREA_IMAGE_SCRATCH_START=0x440000", + "FLASH_AREA_IMAGE_SWAP_STATUS_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_IMAGE_SWAP_STATUS_SIZE=0x006c00", + "FLASH_AREA_IMAGE_SWAP_STATUS_START=0x1e8000", + "FLASH_AREA_IMG_1_PRIMARY_DEV_ID='FLASH_DEVICE_INTERNAL_FLASH'", + "FLASH_AREA_IMG_1_PRIMARY_SIZE=0x1c0000", + "FLASH_AREA_IMG_1_PRIMARY_START=0x028000", + "FLASH_AREA_IMG_1_SECONDARY_DEV_ID='FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX)'", + "FLASH_AREA_IMG_1_SECONDARY_SIZE=0x1c0000", + "FLASH_AREA_IMG_1_SECONDARY_START=0x000200", "APP_VERSION_MAJOR=1", "APP_VERSION_MINOR=0", "APP_VERSION_BUILD=0", - "MCUBOOT_OVERWRITE_ONLY", - "CY_ENABLE_XIP_PROGRAM", ] if (build_update_image) { @@ -85,7 +91,7 @@ psoc6_sdk_sources("lock_app_sdk_sources") { defines = [ "BOARD_ID=${psoc6_board}", - "P6_LOG_ENABLED=1", + "PSOC6_LOG_ENABLED=1", "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setup_pin_code}", ] diff --git a/examples/lock-app/infineon/psoc6/include/AppConfig.h b/examples/lock-app/infineon/psoc6/include/AppConfig.h index 41ff70e1f94b71..34355aa262dde9 100644 --- a/examples/lock-app/infineon/psoc6/include/AppConfig.h +++ b/examples/lock-app/infineon/psoc6/include/AppConfig.h @@ -52,14 +52,14 @@ #define THREAD_ACTIVE_POLLING_INTERVAL_MS 100 #define THREAD_INACTIVE_POLLING_INTERVAL_MS 1000 -// P6 Logging +// PSOC6 Logging #ifdef __cplusplus extern "C" { #endif void appError(int err); -void P6Log(const char * aFormat, ...); -#define P6_LOG(...) P6Log(__VA_ARGS__) +void PSOC6Log(const char * aFormat, ...); +#define PSOC6_LOG(...) PSOC6Log(__VA_ARGS__) #ifdef __cplusplus } diff --git a/examples/lock-app/infineon/psoc6/include/AppTask.h b/examples/lock-app/infineon/psoc6/include/AppTask.h index b120a9c9aec325..d72b1c32996269 100644 --- a/examples/lock-app/infineon/psoc6/include/AppTask.h +++ b/examples/lock-app/infineon/psoc6/include/AppTask.h @@ -30,6 +30,10 @@ #include #include +extern "C" { +#include "flash_map_backend.h" +} + // Application-defined error codes in the CHIP_ERROR space. #define APP_ERROR_EVENT_QUEUE_FAILED CHIP_APPLICATION_ERROR(0x01) #define APP_ERROR_CREATE_TASK_FAILED CHIP_APPLICATION_ERROR(0x02) diff --git a/examples/lock-app/infineon/psoc6/include/CHIPProjectConfig.h b/examples/lock-app/infineon/psoc6/include/CHIPProjectConfig.h index b069e13284c07d..e5c8c8ed7e790f 100644 --- a/examples/lock-app/infineon/psoc6/include/CHIPProjectConfig.h +++ b/examples/lock-app/infineon/psoc6/include/CHIPProjectConfig.h @@ -38,10 +38,10 @@ #define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8006 /* The ProductName attribute of the Basic cluster. */ -#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "P6-CYW43012 Lock" +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "PSOC6-CYW43012 Lock" /* The HardwareVersionString attribute of the Basic cluster. */ -#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "P6-43012" +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "PSOC6-43012" /* The HardwareVersion attribute of the Basic cluster. */ #define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION 43012 diff --git a/examples/lock-app/infineon/psoc6/src/AppTask.cpp b/examples/lock-app/infineon/psoc6/src/AppTask.cpp index 106da8eecbf69f..54178c21c98f65 100644 --- a/examples/lock-app/infineon/psoc6/src/AppTask.cpp +++ b/examples/lock-app/infineon/psoc6/src/AppTask.cpp @@ -179,7 +179,7 @@ CHIP_ERROR AppTask::StartAppTask() sAppEventQueue = xQueueCreate(APP_EVENT_QUEUE_SIZE, sizeof(AppEvent)); if (sAppEventQueue == NULL) { - P6_LOG("Failed to allocate app event queue"); + PSOC6_LOG("Failed to allocate app event queue"); appError(APP_ERROR_EVENT_QUEUE_FAILED); } @@ -193,7 +193,7 @@ void AppTask::lockMgr_Init() CHIP_ERROR err = CHIP_NO_ERROR; NetWorkCommissioningInstInit(); - P6_LOG("Current Software Version: %d", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + PSOC6_LOG("Current Software Version: %d", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); // Initial lock state chip::app::DataModel::Nullable state; chip::EndpointId endpointId{ 1 }; @@ -258,7 +258,7 @@ void AppTask::lockMgr_Init() .GetLockParam()); if (err != CHIP_NO_ERROR) { - P6_LOG("LockMgr().Init() failed"); + PSOC6_LOG("LockMgr().Init() failed"); appError(err); } @@ -287,10 +287,10 @@ void AppTask::lockMgr_Init() void AppTask::Init() { #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR - int rc = boot_set_confirmed(); + int rc = flash_area_boot_set_confirmed(); if (rc != 0) { - P6_LOG("boot_set_confirmed failed"); + PSOC6_LOG("flash_area_boot_set_confirmed failed"); appError(CHIP_ERROR_UNINITIALIZED); } #endif @@ -306,7 +306,7 @@ void AppTask::Init() ); if (sFunctionTimer == NULL) { - P6_LOG("funct timer create failed"); + PSOC6_LOG("funct timer create failed"); appError(APP_ERROR_CREATE_TIMER_FAILED); } @@ -333,7 +333,7 @@ void AppTask::AppTaskMain(void * pvParameter) AppEvent event; sAppTask.Init(); - P6_LOG("App Task started"); + PSOC6_LOG("App Task started"); while (true) { @@ -403,11 +403,11 @@ void AppTask::LockActionEventHandler(AppEvent * event) case AppEvent::kEventType_Button: { - P6_LOG("%s [Action: %d]", __FUNCTION__, event->ButtonEvent.Action); + PSOC6_LOG("%s [Action: %d]", __FUNCTION__, event->ButtonEvent.Action); if (event->ButtonEvent.Action == APP_BUTTON_LONG_PRESS) { - P6_LOG("Sending a lock jammed event"); + PSOC6_LOG("Sending a lock jammed event"); /* Generating Door Lock Jammed event */ DoorLockServer::Instance().SendLockAlarmEvent(1 /* Endpoint Id */, AlarmCodeEnum::kLockJammed); @@ -436,7 +436,7 @@ void AppTask::LockActionEventHandler(AppEvent * event) if (!LockMgr().InitiateAction(actor, action)) { - P6_LOG("Action is already in progress or active."); + PSOC6_LOG("Action is already in progress or active."); } } @@ -499,7 +499,8 @@ void AppTask::FunctionHandler(AppEvent * event) { if (!sAppTask.mFunctionTimerActive && sAppTask.mFunction == Function::kNoneSelected) { - P6_LOG("Factory Reset Triggered. Press button again within %us to cancel.", FACTORY_RESET_CANCEL_WINDOW_TIMEOUT / 1000); + PSOC6_LOG("Factory Reset Triggered. Press button again within %us to cancel.", + FACTORY_RESET_CANCEL_WINDOW_TIMEOUT / 1000); // Start timer for FACTORY_RESET_CANCEL_WINDOW_TIMEOUT to allow user to // cancel, if required. sAppTask.StartTimer(FACTORY_RESET_CANCEL_WINDOW_TIMEOUT); @@ -525,7 +526,7 @@ void AppTask::FunctionHandler(AppEvent * event) // canceled. sAppTask.mFunction = Function::kNoneSelected; - P6_LOG("Factory Reset has been Canceled"); + PSOC6_LOG("Factory Reset has been Canceled"); } } } @@ -534,7 +535,7 @@ void AppTask::CancelTimer() { if (xTimerStop(sFunctionTimer, 0) == pdFAIL) { - P6_LOG("app timer stop() failed"); + PSOC6_LOG("app timer stop() failed"); appError(APP_ERROR_STOP_TIMER_FAILED); } @@ -545,7 +546,7 @@ void AppTask::StartTimer(uint32_t aTimeoutInMs) { if (xTimerIsTimerActive(sFunctionTimer)) { - P6_LOG("app timer already started!"); + PSOC6_LOG("app timer already started!"); CancelTimer(); } @@ -554,7 +555,7 @@ void AppTask::StartTimer(uint32_t aTimeoutInMs) // cannot immediately be sent to the timer command queue. if (xTimerChangePeriod(sFunctionTimer, aTimeoutInMs / portTICK_PERIOD_MS, 100) != pdPASS) { - P6_LOG("app timer start() failed"); + PSOC6_LOG("app timer start() failed"); appError(APP_ERROR_START_TIMER_FAILED); } @@ -567,11 +568,11 @@ void AppTask::ActionInitiated(LockManager::Action_t aAction, int32_t aActor) // and start flashing the LEDs rapidly to indicate action initiation. if (aAction == LockManager::LOCK_ACTION) { - P6_LOG("Lock Action has been initiated"); + PSOC6_LOG("Lock Action has been initiated"); } else if (aAction == LockManager::UNLOCK_ACTION) { - P6_LOG("Unlock Action has been initiated"); + PSOC6_LOG("Unlock Action has been initiated"); } if (aActor == AppEvent::kEventType_Button) @@ -589,13 +590,13 @@ void AppTask::ActionCompleted(LockManager::Action_t aAction) // Turn off the lock LED if in an UNLOCKED state. if (aAction == LockManager::LOCK_ACTION) { - P6_LOG("Lock Action has been completed"); + PSOC6_LOG("Lock Action has been completed"); sLockLED.Set(true); } else if (aAction == LockManager::UNLOCK_ACTION) { - P6_LOG("Unlock Action has been completed"); + PSOC6_LOG("Unlock Action has been completed"); sLockLED.Set(false); } @@ -641,11 +642,11 @@ void AppTask::PostEvent(const AppEvent * event) } if (!status) - P6_LOG("Failed to post event to app task event queue"); + PSOC6_LOG("Failed to post event to app task event queue"); } else { - P6_LOG("Event Queue is NULL should never happen"); + PSOC6_LOG("Event Queue is NULL should never happen"); } } @@ -657,7 +658,7 @@ void AppTask::DispatchEvent(AppEvent * event) } else { - P6_LOG("Event received with no handler. Dropping event."); + PSOC6_LOG("Event received with no handler. Dropping event."); } } @@ -674,7 +675,7 @@ void AppTask::UpdateCluster(intptr_t context) : Protocols::InteractionModel::Status::Failure; if (status != Protocols::InteractionModel::Status::Success) { - P6_LOG("ERR: updating lock state %x", to_underlying(status)); + PSOC6_LOG("ERR: updating lock state %x", to_underlying(status)); } } @@ -705,7 +706,7 @@ void AppTask::InitOTARequestor() gRequestorUser.Init(&gRequestorCore, &gImageProcessor); - P6_LOG("Current Software Version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); - P6_LOG("Current Software Version String: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); + PSOC6_LOG("Current Software Version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + PSOC6_LOG("Current Software Version String: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING); } #endif diff --git a/examples/lock-app/infineon/psoc6/src/LockManager.cpp b/examples/lock-app/infineon/psoc6/src/LockManager.cpp index 4fed23346571dc..70af147902c8a6 100644 --- a/examples/lock-app/infineon/psoc6/src/LockManager.cpp +++ b/examples/lock-app/infineon/psoc6/src/LockManager.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include LockManager LockManager::sLock; @@ -90,7 +90,7 @@ CHIP_ERROR LockManager::Init(chip::app::DataModel::Nullable(&mLockUsers), - sizeof(EmberAfPluginDoorLockUserInfo) * ArraySize(mLockUsers), outLen); + PSOC6Config::ReadConfigValueBin(PSOC6Config::kConfigKey_LockUser, reinterpret_cast(&mLockUsers), + sizeof(EmberAfPluginDoorLockUserInfo) * ArraySize(mLockUsers), outLen); - P6Config::ReadConfigValueBin(P6Config::kConfigKey_Credential, reinterpret_cast(&mLockCredentials), - sizeof(EmberAfPluginDoorLockCredentialInfo) * kMaxCredentials * kNumCredentialTypes, outLen); + PSOC6Config::ReadConfigValueBin(PSOC6Config::kConfigKey_Credential, reinterpret_cast(&mLockCredentials), + sizeof(EmberAfPluginDoorLockCredentialInfo) * kMaxCredentials * kNumCredentialTypes, outLen); - P6Config::ReadConfigValueBin(P6Config::kConfigKey_LockUserName, reinterpret_cast(mUserNames), sizeof(mUserNames), - outLen); + PSOC6Config::ReadConfigValueBin(PSOC6Config::kConfigKey_LockUserName, reinterpret_cast(mUserNames), + sizeof(mUserNames), outLen); - P6Config::ReadConfigValueBin(P6Config::kConfigKey_CredentialData, reinterpret_cast(mCredentialData), - sizeof(mCredentialData), outLen); + PSOC6Config::ReadConfigValueBin(PSOC6Config::kConfigKey_CredentialData, reinterpret_cast(mCredentialData), + sizeof(mCredentialData), outLen); - P6Config::ReadConfigValueBin(P6Config::kConfigKey_UserCredentials, reinterpret_cast(mCredentials), - sizeof(CredentialStruct) * LockParams.numberOfUsers * kMaxCredentials, outLen); + PSOC6Config::ReadConfigValueBin(PSOC6Config::kConfigKey_UserCredentials, reinterpret_cast(mCredentials), + sizeof(CredentialStruct) * LockParams.numberOfUsers * kMaxCredentials, outLen); - P6Config::ReadConfigValueBin(P6Config::kConfigKey_WeekDaySchedules, reinterpret_cast(mWeekdaySchedule), - sizeof(EmberAfPluginDoorLockWeekDaySchedule) * LockParams.numberOfWeekdaySchedulesPerUser * - LockParams.numberOfUsers, - outLen); + PSOC6Config::ReadConfigValueBin(PSOC6Config::kConfigKey_WeekDaySchedules, reinterpret_cast(mWeekdaySchedule), + sizeof(EmberAfPluginDoorLockWeekDaySchedule) * LockParams.numberOfWeekdaySchedulesPerUser * + LockParams.numberOfUsers, + outLen); - P6Config::ReadConfigValueBin(P6Config::kConfigKey_YearDaySchedules, reinterpret_cast(mYeardaySchedule), - sizeof(EmberAfPluginDoorLockYearDaySchedule) * LockParams.numberOfYeardaySchedulesPerUser * - LockParams.numberOfUsers, - outLen); + PSOC6Config::ReadConfigValueBin(PSOC6Config::kConfigKey_YearDaySchedules, reinterpret_cast(mYeardaySchedule), + sizeof(EmberAfPluginDoorLockYearDaySchedule) * LockParams.numberOfYeardaySchedulesPerUser * + LockParams.numberOfUsers, + outLen); - P6Config::ReadConfigValueBin(P6Config::kConfigKey_HolidaySchedules, reinterpret_cast(&(mHolidaySchedule)), - sizeof(EmberAfPluginDoorLockHolidaySchedule) * LockParams.numberOfHolidaySchedules, outLen); + PSOC6Config::ReadConfigValueBin(PSOC6Config::kConfigKey_HolidaySchedules, reinterpret_cast(&(mHolidaySchedule)), + sizeof(EmberAfPluginDoorLockHolidaySchedule) * LockParams.numberOfHolidaySchedules, outLen); return true; } @@ -228,7 +228,7 @@ void LockManager::StartTimer(uint32_t aTimeoutMs) { if (xTimerIsTimerActive(sLockTimer)) { - P6_LOG("app timer already started!"); + PSOC6_LOG("app timer already started!"); CancelTimer(); } @@ -237,7 +237,7 @@ void LockManager::StartTimer(uint32_t aTimeoutMs) // cannot immediately be sent to the timer command queue. if (xTimerChangePeriod(sLockTimer, (aTimeoutMs / portTICK_PERIOD_MS), 100) != pdPASS) { - P6_LOG("sLockTimer timer start() failed"); + PSOC6_LOG("sLockTimer timer start() failed"); appError(APP_ERROR_START_TIMER_FAILED); } } @@ -246,7 +246,7 @@ void LockManager::CancelTimer(void) { if (xTimerStop(sLockTimer, 0) == pdFAIL) { - P6_LOG("sLockTimer stop() failed"); + PSOC6_LOG("sLockTimer stop() failed"); appError(APP_ERROR_STOP_TIMER_FAILED); } } @@ -393,14 +393,14 @@ bool LockManager::SetUser(chip::EndpointId endpointId, uint16_t userIndex, chip: userInStorage.credentials = chip::Span(mCredentials[userIndex], totalCredentials); // Save user information in NVM flash - P6Config::WriteConfigValueBin(P6Config::kConfigKey_LockUser, reinterpret_cast(&mLockUsers), - sizeof(EmberAfPluginDoorLockUserInfo) * LockParams.numberOfUsers); + PSOC6Config::WriteConfigValueBin(PSOC6Config::kConfigKey_LockUser, reinterpret_cast(&mLockUsers), + sizeof(EmberAfPluginDoorLockUserInfo) * LockParams.numberOfUsers); - P6Config::WriteConfigValueBin(P6Config::kConfigKey_UserCredentials, reinterpret_cast(mCredentials), - sizeof(CredentialStruct) * LockParams.numberOfUsers * kMaxCredentials); + PSOC6Config::WriteConfigValueBin(PSOC6Config::kConfigKey_UserCredentials, reinterpret_cast(mCredentials), + sizeof(CredentialStruct) * LockParams.numberOfUsers * kMaxCredentials); - P6Config::WriteConfigValueBin(P6Config::kConfigKey_LockUserName, reinterpret_cast(mUserNames), - sizeof(mUserNames)); + PSOC6Config::WriteConfigValueBin(PSOC6Config::kConfigKey_LockUserName, reinterpret_cast(mUserNames), + sizeof(mUserNames)); ChipLogProgress(Zcl, "Successfully set the user [mEndpointId=%d,index=%d]", endpointId, userIndex); @@ -481,11 +481,11 @@ bool LockManager::SetCredential(chip::EndpointId endpointId, uint16_t credential chip::ByteSpan{ mCredentialData[to_underlying(credentialType)][credentialIndex], credentialData.size() }; // Save credential information in NVM flash - P6Config::WriteConfigValueBin(P6Config::kConfigKey_Credential, reinterpret_cast(&mLockCredentials), - sizeof(EmberAfPluginDoorLockCredentialInfo) * kMaxCredentials * kNumCredentialTypes); + PSOC6Config::WriteConfigValueBin(PSOC6Config::kConfigKey_Credential, reinterpret_cast(&mLockCredentials), + sizeof(EmberAfPluginDoorLockCredentialInfo) * kMaxCredentials * kNumCredentialTypes); - P6Config::WriteConfigValueBin(P6Config::kConfigKey_CredentialData, reinterpret_cast(&mCredentialData), - sizeof(mCredentialData)); + PSOC6Config::WriteConfigValueBin(PSOC6Config::kConfigKey_CredentialData, reinterpret_cast(&mCredentialData), + sizeof(mCredentialData)); ChipLogProgress(Zcl, "Successfully set the credential [credentialType=%u]", to_underlying(credentialType)); @@ -540,9 +540,9 @@ DlStatus LockManager::SetWeekdaySchedule(chip::EndpointId endpointId, uint8_t we scheduleInStorage.status = status; // Save schedule information in NVM flash - P6Config::WriteConfigValueBin(P6Config::kConfigKey_WeekDaySchedules, reinterpret_cast(mWeekdaySchedule), - sizeof(EmberAfPluginDoorLockWeekDaySchedule) * LockParams.numberOfWeekdaySchedulesPerUser * - LockParams.numberOfUsers); + PSOC6Config::WriteConfigValueBin(PSOC6Config::kConfigKey_WeekDaySchedules, reinterpret_cast(mWeekdaySchedule), + sizeof(EmberAfPluginDoorLockWeekDaySchedule) * LockParams.numberOfWeekdaySchedulesPerUser * + LockParams.numberOfUsers); return DlStatus::kSuccess; } @@ -589,9 +589,9 @@ DlStatus LockManager::SetYeardaySchedule(chip::EndpointId endpointId, uint8_t ye scheduleInStorage.status = status; // Save schedule information in NVM flash - P6Config::WriteConfigValueBin(P6Config::kConfigKey_YearDaySchedules, reinterpret_cast(mYeardaySchedule), - sizeof(EmberAfPluginDoorLockYearDaySchedule) * LockParams.numberOfYeardaySchedulesPerUser * - LockParams.numberOfUsers); + PSOC6Config::WriteConfigValueBin(PSOC6Config::kConfigKey_YearDaySchedules, reinterpret_cast(mYeardaySchedule), + sizeof(EmberAfPluginDoorLockYearDaySchedule) * LockParams.numberOfYeardaySchedulesPerUser * + LockParams.numberOfUsers); return DlStatus::kSuccess; } @@ -633,8 +633,9 @@ DlStatus LockManager::SetHolidaySchedule(chip::EndpointId endpointId, uint8_t ho scheduleInStorage.status = status; // Save schedule information in NVM flash - P6Config::WriteConfigValueBin(P6Config::kConfigKey_HolidaySchedules, reinterpret_cast(&(mHolidaySchedule)), - sizeof(EmberAfPluginDoorLockHolidaySchedule) * LockParams.numberOfHolidaySchedules); + PSOC6Config::WriteConfigValueBin(PSOC6Config::kConfigKey_HolidaySchedules, + reinterpret_cast(&(mHolidaySchedule)), + sizeof(EmberAfPluginDoorLockHolidaySchedule) * LockParams.numberOfHolidaySchedules); return DlStatus::kSuccess; } diff --git a/examples/lock-app/infineon/psoc6/src/main.cpp b/examples/lock-app/infineon/psoc6/src/main.cpp index b14487e4bfe425..701b6eb04368b2 100644 --- a/examples/lock-app/infineon/psoc6/src/main.cpp +++ b/examples/lock-app/infineon/psoc6/src/main.cpp @@ -53,7 +53,7 @@ static void main_task(void * pvParameters); //================================================================================= void appError(int err) { - P6_LOG("!!!!!!!!!!!! App Critical Error: %d !!!!!!!!!!!", err); + PSOC6_LOG("!!!!!!!!!!!! App Critical Error: %d !!!!!!!!!!!", err); portDISABLE_INTERRUPTS(); while (true) ; @@ -86,35 +86,35 @@ static void main_task(void * pvParameters) CHIP_ERROR ret = chip::DeviceLayer::PersistedStorage::KeyValueStoreMgrImpl().Init(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); + PSOC6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); appError(ret); } ret = PlatformMgr().InitChipStack(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PlatformMgr().InitChipStack() failed"); + PSOC6_LOG("PlatformMgr().InitChipStack() failed"); appError(ret); } - ret = chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName("P6_LOCK"); + ret = chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName("PSOC6_LOCK"); if (ret != CHIP_NO_ERROR) { - P6_LOG("ConnectivityMgr().SetBLEDeviceName() failed"); + PSOC6_LOG("ConnectivityMgr().SetBLEDeviceName() failed"); appError(ret); } - P6_LOG("Starting Platform Manager Event Loop"); + PSOC6_LOG("Starting Platform Manager Event Loop"); ret = PlatformMgr().StartEventLoopTask(); if (ret != CHIP_NO_ERROR) { - P6_LOG("PlatformMgr().StartEventLoopTask() failed"); + PSOC6_LOG("PlatformMgr().StartEventLoopTask() failed"); appError(ret); } ret = GetAppTask().StartAppTask(); if (ret != CHIP_NO_ERROR) { - P6_LOG("GetAppTask().Init() failed"); + PSOC6_LOG("GetAppTask().Init() failed"); appError(ret); } @@ -127,7 +127,7 @@ static void main_task(void * pvParameters) // ================================================================================ int main(void) { - init_p6Platform(); + init_psoc6Platform(); #if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR // Clear watchdog timer (started by bootloader) so that it doesn't trigger a reset cyhal_wdt_t wdt_obj; @@ -135,9 +135,9 @@ int main(void) cyhal_wdt_free(&wdt_obj); #endif - P6_LOG("==================================================\r\n"); - P6_LOG("chip-p6-lock-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); - P6_LOG("==================================================\r\n"); + PSOC6_LOG("==================================================\r\n"); + PSOC6_LOG("chip-psoc6-lock-example starting Version %d\r\n", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); + PSOC6_LOG("==================================================\r\n"); /* Start the FreeRTOS scheduler */ vTaskStartScheduler(); @@ -147,5 +147,5 @@ int main(void) PlatformMgr().Shutdown(); // Should never get here. - P6_LOG("vTaskStartScheduler() failed"); + PSOC6_LOG("vTaskStartScheduler() failed"); } diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index d53a80f7402b1c..c42fb812cb8d41 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -1754,7 +1754,7 @@ cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -1770,6 +1770,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -1808,6 +1809,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2899,7 +2901,7 @@ endpoint 0 { callback attribute activeModeDuration; callback attribute activeModeThreshold; ram attribute featureMap default = 0x0000; - ram attribute clusterRevision default = 2; + ram attribute clusterRevision default = 3; } } endpoint 1 { diff --git a/examples/lock-app/lock-common/lock-app.zap b/examples/lock-app/lock-common/lock-app.zap index 182645823f1065..605da39d72da56 100644 --- a/examples/lock-app/lock-common/lock-app.zap +++ b/examples/lock-app/lock-common/lock-app.zap @@ -5023,7 +5023,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/lock-app/nrfconnect/CMakeLists.txt b/examples/lock-app/nrfconnect/CMakeLists.txt index 38e99561b3bbce..6c92305f378dec 100644 --- a/examples/lock-app/nrfconnect/CMakeLists.txt +++ b/examples/lock-app/nrfconnect/CMakeLists.txt @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -cmake_minimum_required(VERSION 3.13.1) +cmake_minimum_required(VERSION 3.20.0) get_filename_component(CHIP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/third_party/connectedhomeip REALPATH) get_filename_component(NRFCONNECT_COMMON ${CHIP_ROOT}/examples/platform/nrfconnect REALPATH) @@ -21,15 +21,6 @@ get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH) include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) -set(hci_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.root) - -if(NOT CONF_FILE STREQUAL "prj_no_dfu.conf") - set(PM_STATIC_YML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/configuration/${BOARD}/pm_static_dfu.yml) -endif() - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) @@ -41,6 +32,7 @@ target_compile_options(app PRIVATE -Werror -Wno-error=maybe-uninitialized) project(chip-nrfconnect-lock-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) diff --git a/examples/lock-app/nrfconnect/Kconfig.sysbuild b/examples/lock-app/nrfconnect/Kconfig.sysbuild new file mode 100644 index 00000000000000..4a0b8f3656b1eb --- /dev/null +++ b/examples/lock-app/nrfconnect/Kconfig.sysbuild @@ -0,0 +1,76 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y + +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if (SOC_SERIES_NRF53X) && !WIFI_NRF700X + +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +#### Bootloader +choice BOOTLOADER + default BOOTLOADER_MCUBOOT +endchoice + +if BOOTLOADER_MCUBOOT + +#### DFU multi-image support +config DFU_MULTI_IMAGE_PACKAGE_BUILD + default y + +config DFU_MULTI_IMAGE_PACKAGE_APP + default y + +config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY + default y + +#### DFU network core configuration +if SOC_SERIES_NRF53X + +config MCUBOOT_UPDATEABLE_IMAGES + default 2 + +choice MCUBOOT_MODE + default MCUBOOT_MODE_OVERWRITE_ONLY +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_RSA +endchoice + +config SECURE_BOOT_NETCORE + default y + +config NETCORE_APP_UPDATE + default y + +config DFU_MULTI_IMAGE_PACKAGE_NET + default y + +endif # SOC_SERIES_NRF53X +endif # BOOTLOADER_MCUBOOT + +#### Enable generating factory data +config MATTER_FACTORY_DATA_GENERATE + default y + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/lock-app/nrfconnect/child_image/hci_rpmsg/prj.conf b/examples/lock-app/nrfconnect/child_image/hci_rpmsg/prj.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/hci_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lock-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf b/examples/lock-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/hci_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lock-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf b/examples/lock-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf deleted file mode 100644 index 1622ffd00dbb91..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/hci_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.hci_rpmsg.defaults to set options common for all -# samples using hci_rpmsg. This file should contain only options specific for this sample -# hci_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.hci_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay b/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay deleted file mode 100644 index f18e3e0cc16434..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay b/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf b/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf deleted file mode 100644 index cd9aab4101c6f5..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -CONFIG_GPIO=y diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay b/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf b/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf deleted file mode 100644 index cd9aab4101c6f5..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -CONFIG_GPIO=y diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay b/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/prj.conf b/examples/lock-app/nrfconnect/child_image/mcuboot/prj.conf deleted file mode 100644 index 90969a32dbc414..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/prj.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n -CONFIG_GPIO=n diff --git a/examples/lock-app/nrfconnect/child_image/mcuboot/prj_release.conf b/examples/lock-app/nrfconnect/child_image/mcuboot/prj_release.conf deleted file mode 100644 index 90969a32dbc414..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/mcuboot/prj_release.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n -CONFIG_GPIO=n diff --git a/examples/lock-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf b/examples/lock-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lock-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf b/examples/lock-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/lock-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf b/examples/lock-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/lock-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/window-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml b/examples/lock-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml similarity index 100% rename from examples/window-app/nrfconnect/configuration/nrf52840dk_nrf52840/pm_static_dfu.yml rename to examples/lock-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml diff --git a/examples/lock-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml b/examples/lock-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml new file mode 100644 index 00000000000000..ce42b39e55ee87 --- /dev/null +++ b/examples/lock-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml @@ -0,0 +1,42 @@ +mcuboot: + address: 0x0 + size: 0x7000 + region: flash_primary +mcuboot_pad: + address: 0x7000 + size: 0x200 +app: + address: 0x7200 + size: 0xf3e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x7000 + size: 0xf4000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x7200 + size: 0xf3e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_secondary: + address: 0x0 + size: 0xf4000 + device: MX25R64 + region: external_flash +external_flash: + address: 0xf4000 + size: 0x70c000 + device: MX25R64 + region: external_flash diff --git a/examples/lock-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml b/examples/lock-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/lock-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/lock-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml b/examples/lock-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/lock-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/lock-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp.yml b/examples/lock-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp.yml new file mode 100644 index 00000000000000..3c56dc0ddb1968 --- /dev/null +++ b/examples/lock-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0xC000 + region: flash_primary +mcuboot_pad: + address: 0xC000 + size: 0x200 +app: + address: 0xC200 + size: 0xeee00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0xC000 + size: 0xef000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0xC200 + size: 0xeee00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xef000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xef000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x12f000 + size: 0x6D1000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/lock-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml b/examples/lock-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml new file mode 100644 index 00000000000000..3c56dc0ddb1968 --- /dev/null +++ b/examples/lock-app/nrfconnect/pm_static_nrf7002dk_nrf5340_cpuapp_release.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0xC000 + region: flash_primary +mcuboot_pad: + address: 0xC000 + size: 0x200 +app: + address: 0xC200 + size: 0xeee00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0xC000 + size: 0xef000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0xC200 + size: 0xeee00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xef000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xef000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x12f000 + size: 0x6D1000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/lock-app/nrfconnect/prj.conf b/examples/lock-app/nrfconnect/prj.conf index a12cb1e6594024..564882cf9c455a 100644 --- a/examples/lock-app/nrfconnect/prj.conf +++ b/examples/lock-app/nrfconnect/prj.conf @@ -25,6 +25,10 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32774 CONFIG_STD_CPP17=y +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/lock-app/nrfconnect/prj_no_dfu.conf b/examples/lock-app/nrfconnect/prj_no_dfu.conf deleted file mode 100644 index 68cd0ea04a0923..00000000000000 --- a/examples/lock-app/nrfconnect/prj_no_dfu.conf +++ /dev/null @@ -1,46 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This sample uses Kconfig.defaults to set options common for all -# samples. This file should contain only options specific for this sample -# or overrides of default values. - -# Enable CHIP -CONFIG_CHIP=y -CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" -# 32774 == 0x8006 (example lock-app) -CONFIG_CHIP_DEVICE_PRODUCT_ID=32774 -CONFIG_STD_CPP17=y - -# Add support for LEDs and buttons on Nordic development kits -CONFIG_DK_LIBRARY=y - -# Bluetooth Low Energy configuration -CONFIG_BT_DEVICE_NAME="MatterLock" - -# Other settings -CONFIG_THREAD_NAME=y -CONFIG_MPU_STACK_GUARD=y -CONFIG_RESET_ON_FATAL_ERROR=n - -# Reduce application size -CONFIG_USE_SEGGER_RTT=n - -# Disable Matter OTA DFU -CONFIG_CHIP_OTA_REQUESTOR=n - -# Disable QSPI NOR -CONFIG_CHIP_QSPI_NOR=n diff --git a/examples/lock-app/nrfconnect/prj_release.conf b/examples/lock-app/nrfconnect/prj_release.conf index 24fc9cd1cbdef8..6a4580c265b384 100644 --- a/examples/lock-app/nrfconnect/prj_release.conf +++ b/examples/lock-app/nrfconnect/prj_release.conf @@ -25,6 +25,10 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32774 CONFIG_STD_CPP17=y +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf b/examples/lock-app/nrfconnect/sysbuild.conf similarity index 90% rename from examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf rename to examples/lock-app/nrfconnect/sysbuild.conf index cd9aab4101c6f5..d0c5eee2b93c39 100644 --- a/examples/light-switch-app/nrfconnect/child_image/mcuboot/boards/nrf7002dk_nrf5340_cpuapp_release.conf +++ b/examples/lock-app/nrfconnect/sysbuild.conf @@ -1,5 +1,5 @@ # -# Copyright (c) 2022 Project CHIP Authors +# Copyright (c) 2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,4 +14,4 @@ # limitations under the License. # -CONFIG_GPIO=y +SB_CONFIG_MATTER=y diff --git a/examples/lock-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/lock-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/lock-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf b/examples/lock-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..694c3b08242f29 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/ipc_radio/boards/nrf7002dk_nrf5340_cpunet.conf @@ -0,0 +1,52 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y diff --git a/examples/lock-app/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/lock-app/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/lock-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/lock-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/lock-app/nrfconnect/sysbuild/mcuboot/app.overlay b/examples/lock-app/nrfconnect/sysbuild/mcuboot/app.overlay new file mode 100644 index 00000000000000..74d3dfbfd22f30 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/mcuboot/app.overlay @@ -0,0 +1,5 @@ +/ { + chosen { + zephyr,code-partition = &boot_partition; + }; +}; diff --git a/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf new file mode 100644 index 00000000000000..50610217c762b5 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf @@ -0,0 +1,19 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 diff --git a/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..2d86fe6442dd39 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +CONFIG_BOOT_SWAP_USING_MOVE=n +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..81701b7eb63f70 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.conf @@ -0,0 +1,40 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# nRF7002DK uses SPI NOR external flash +CONFIG_GPIO=y +CONFIG_SPI=y +CONFIG_SPI_NOR=y +CONFIG_SPI_NOR_SFDP_DEVICETREE=y +CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 + +CONFIG_MULTITHREADING=y +CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/mcuboot/boards/nrf7002dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/lock-app/nrfconnect/sysbuild/mcuboot/prj.conf b/examples/lock-app/nrfconnect/sysbuild/mcuboot/prj.conf new file mode 100644 index 00000000000000..3bcb12fe7b8d25 --- /dev/null +++ b/examples/lock-app/nrfconnect/sysbuild/mcuboot/prj.conf @@ -0,0 +1,49 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_MAIN_STACK_SIZE=10240 + +CONFIG_BOOT_SWAP_SAVE_ENCTLV=n +CONFIG_BOOT_BOOTSTRAP=n +CONFIG_PM=n + +CONFIG_FLASH=y +CONFIG_FPROTECT=y + +CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" + +# Use minimal C library instead of the Picolib +CONFIG_MINIMAL_LIBC=y + +# Bootloader size optimization +CONFIG_CONSOLE=n +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_USE_SEGGER_RTT=n +CONFIG_GPIO=n + +CONFIG_BOOT_MAX_IMG_SECTORS=256 + +CONFIG_LOG=n +CONFIG_CONSOLE_HANDLER=n +CONFIG_BOOT_BANNER=n +CONFIG_NCS_BOOT_BANNER=n +CONFIG_TIMESLICING=n +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_MULTITHREADING=n +CONFIG_TICKLESS_KERNEL=n +CONFIG_TIMEOUT_64BIT=n +CONFIG_NRF_ENABLE_ICACHE=n diff --git a/examples/lock-app/qpg/src/AppTask.cpp b/examples/lock-app/qpg/src/AppTask.cpp index d2f3298db9b779..8ae517dce2b7ad 100644 --- a/examples/lock-app/qpg/src/AppTask.cpp +++ b/examples/lock-app/qpg/src/AppTask.cpp @@ -64,7 +64,8 @@ using namespace ::chip::DeviceLayer; #define APP_TASK_PRIORITY 2 #define APP_EVENT_QUEUE_SIZE 10 #define QPG_LOCK_ENDPOINT_ID (1) -#define TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS (1 * 3600) // this value must be multiplication of 3600 +#define SECONDS_IN_HOUR (3600) // we better keep this 3600 +#define TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS (1 * SECONDS_IN_HOUR) // increment every hour #define NMBR_OF_RESETS_BLE_ADVERTISING (3) @@ -414,10 +415,18 @@ void AppTask::TotalHoursTimerHandler(chip::System::Layer * aLayer, void * aAppSt CHIP_ERROR err; uint32_t totalOperationalHours = 0; - if (ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours) == CHIP_NO_ERROR) + err = ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours); + + if (err == CHIP_NO_ERROR) + { + ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + + (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / SECONDS_IN_HOUR)); + } + else if (err == CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND) { + totalOperationalHours = 0; // set this explicitly to 0 for safety ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + - (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / 3600)); + (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / SECONDS_IN_HOUR)); } else { diff --git a/examples/lock-app/qpg/zap/lock.matter b/examples/lock-app/qpg/zap/lock.matter index a935c4e7ce3c17..f8794650f14d17 100644 --- a/examples/lock-app/qpg/zap/lock.matter +++ b/examples/lock-app/qpg/zap/lock.matter @@ -1410,7 +1410,7 @@ cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -1426,6 +1426,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -1464,6 +1465,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2491,7 +2493,7 @@ endpoint 0 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x0000; - ram attribute clusterRevision default = 2; + ram attribute clusterRevision default = 3; } } endpoint 1 { diff --git a/examples/lock-app/qpg/zap/lock.zap b/examples/lock-app/qpg/zap/lock.zap index affc31d2d79610..d46b1f63567e2f 100644 --- a/examples/lock-app/qpg/zap/lock.zap +++ b/examples/lock-app/qpg/zap/lock.zap @@ -4289,7 +4289,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/log-source-app/linux/main.cpp b/examples/log-source-app/linux/main.cpp index 9443a946e1a871..20ed1c54b5b215 100644 --- a/examples/log-source-app/linux/main.cpp +++ b/examples/log-source-app/linux/main.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -109,7 +110,7 @@ int main(int argc, char * argv[]) // Initialize device attestation config SetDeviceAttestationCredentialsProvider(chip::Credentials::Examples::GetExampleDACProvider()); - chip::app::InteractionModelEngine::GetInstance()->RegisterCommandHandler(&GetLogProvider()); + CommandHandlerInterfaceRegistry::RegisterCommandHandler(&GetLogProvider()); chip::DeviceLayer::PlatformMgr().RunEventLoop(); diff --git a/examples/network-manager-app/linux/main.cpp b/examples/network-manager-app/linux/main.cpp index 6274be9a093268..84c4a2ce88e9a5 100644 --- a/examples/network-manager-app/linux/main.cpp +++ b/examples/network-manager-app/linux/main.cpp @@ -28,31 +28,36 @@ using namespace chip; using namespace chip::app; using namespace chip::app::Clusters; -void ApplicationInit() {} -void ApplicationShutdown() {} - ByteSpan ByteSpanFromCharSpan(CharSpan span) { return ByteSpan(Uint8::from_const_char(span.data()), span.size()); } std::optional gThreadNetworkDirectoryServer; -void emberAfThreadNetworkDirectoryClusterInitCallback(chip::EndpointId endpoint) +void emberAfThreadNetworkDirectoryClusterInitCallback(EndpointId endpoint) { VerifyOrDie(!gThreadNetworkDirectoryServer); gThreadNetworkDirectoryServer.emplace(endpoint).Init(); } -int main(int argc, char * argv[]) +std::optional gWiFiNetworkManagementServer; +void emberAfWiFiNetworkManagementClusterInitCallback(EndpointId endpoint) +{ + VerifyOrDie(!gWiFiNetworkManagementServer); + gWiFiNetworkManagementServer.emplace(endpoint).Init(); +} + +void ApplicationInit() { - if (ChipLinuxAppInit(argc, argv) != 0) - { - return -1; - } + gWiFiNetworkManagementServer->SetNetworkCredentials(ByteSpanFromCharSpan("MatterAP"_span), + ByteSpanFromCharSpan("Setec Astronomy"_span)); +} - WiFiNetworkManagementServer::Instance().SetNetworkCredentials(ByteSpanFromCharSpan("MatterAP"_span), - ByteSpanFromCharSpan("Setec Astronomy"_span)); +void ApplicationShutdown() {} +int main(int argc, char * argv[]) +{ + VerifyOrReturnValue(ChipLinuxAppInit(argc, argv) == 0, -1); ChipLinuxAppMainLoop(); return 0; } diff --git a/examples/persistent-storage/infineon/psoc6/BUILD.gn b/examples/persistent-storage/infineon/psoc6/BUILD.gn index 6c1b536280e60b..16f9da400fb021 100644 --- a/examples/persistent-storage/infineon/psoc6/BUILD.gn +++ b/examples/persistent-storage/infineon/psoc6/BUILD.gn @@ -39,7 +39,7 @@ psoc6_sdk_sources("persistent_storage_app_sdk_sources") { defines = [ "BOARD_ID=${psoc6_board}", - "P6_LOG_ENABLED=1", + "PSOC6_LOG_ENABLED=1", ] sources = [ "${psoc6_project_dir}/include/CHIPProjectConfig.h" ] diff --git a/examples/persistent-storage/infineon/psoc6/include/AppConfig.h b/examples/persistent-storage/infineon/psoc6/include/AppConfig.h index 4c4efaefa09e8c..e86a19d98eda81 100644 --- a/examples/persistent-storage/infineon/psoc6/include/AppConfig.h +++ b/examples/persistent-storage/infineon/psoc6/include/AppConfig.h @@ -19,14 +19,14 @@ #pragma once -// P6 Logging +// PSOC6 Logging #ifdef __cplusplus extern "C" { #endif void appError(int err); -void P6Log(const char * aFormat, ...); -#define P6_LOG(...) P6Log(__VA_ARGS__) +void PSOC6Log(const char * aFormat, ...); +#define PSOC6_LOG(...) PSOC6Log(__VA_ARGS__) #ifdef __cplusplus } diff --git a/examples/persistent-storage/infineon/psoc6/main.cpp b/examples/persistent-storage/infineon/psoc6/main.cpp index f5acd2c5e74318..c1eec3efc2acc4 100644 --- a/examples/persistent-storage/infineon/psoc6/main.cpp +++ b/examples/persistent-storage/infineon/psoc6/main.cpp @@ -33,12 +33,12 @@ void TestTask(void * pvParameter) err = chip::DeviceLayer::PersistedStorage::KeyValueStoreMgrImpl().Init(); if (err != CHIP_NO_ERROR) { - P6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); + PSOC6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed"); return; } while (true) { - P6_LOG("Running Tests:"); + PSOC6_LOG("Running Tests:"); chip::RunKvsTest(); vTaskDelay(60000); // Run every minute } @@ -55,17 +55,17 @@ extern "C" void vApplicationDaemonTaskStartupHook() int main(int argc, char * argv[]) { - init_p6Platform(); + init_psoc6Platform(); - P6_LOG("=============================================\n"); - P6_LOG("chip-p6-persistent-storage-example starting\n"); - P6_LOG("=============================================\n"); + PSOC6_LOG("=============================================\n"); + PSOC6_LOG("chip-psoc6-persistent-storage-example starting\n"); + PSOC6_LOG("=============================================\n"); - P6_LOG("Starting FreeRTOS scheduler"); + PSOC6_LOG("Starting FreeRTOS scheduler"); vTaskStartScheduler(); // Should never get here. - P6_LOG("vTaskStartScheduler() failed"); + PSOC6_LOG("vTaskStartScheduler() failed"); return -1; } diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index aa2f299a5c6093..2f250369cd3c05 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -324,7 +324,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -449,7 +449,7 @@ cluster LevelControl = 8 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -4864,7 +4864,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -4962,11 +4961,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -5041,7 +5035,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -5079,7 +5072,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -5108,8 +5100,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } @@ -5235,7 +5225,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -5333,11 +5322,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -5412,7 +5396,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -5450,7 +5433,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -5479,8 +5461,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } @@ -5555,7 +5535,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -5875,7 +5855,7 @@ cluster ColorControl = 768 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -9087,7 +9067,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -9238,7 +9218,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/placeholder/linux/apps/app1/config.zap b/examples/placeholder/linux/apps/app1/config.zap index 0f7dff994bd646..090e4f74c60881 100644 --- a/examples/placeholder/linux/apps/app1/config.zap +++ b/examples/placeholder/linux/apps/app1/config.zap @@ -12207,7 +12207,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -12587,7 +12587,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -13838,7 +13838,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -14866,7 +14866,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index 82c062fbef2dd3..a68dc9ce2b63f2 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -324,7 +324,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -449,7 +449,7 @@ cluster LevelControl = 8 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -4821,7 +4821,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -4919,11 +4918,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -4998,7 +4992,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -5036,7 +5029,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -5065,8 +5057,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } @@ -5192,7 +5182,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -5290,11 +5279,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -5369,7 +5353,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -5407,7 +5390,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -5436,8 +5418,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } @@ -5512,7 +5492,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -5832,7 +5812,7 @@ cluster ColorControl = 768 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -9047,7 +9027,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; @@ -9177,7 +9157,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/placeholder/linux/apps/app2/config.zap b/examples/placeholder/linux/apps/app2/config.zap index 786ccbbea4ee8d..bcd64d2189d645 100644 --- a/examples/placeholder/linux/apps/app2/config.zap +++ b/examples/placeholder/linux/apps/app2/config.zap @@ -12289,7 +12289,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -12637,7 +12637,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -13598,7 +13598,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -14626,7 +14626,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/platform/infineon/psoc6/init_psoc6Platform.cpp b/examples/platform/infineon/psoc6/init_psoc6Platform.cpp index 85c8ae5ffa6092..1b236bf73c9ef0 100644 --- a/examples/platform/infineon/psoc6/init_psoc6Platform.cpp +++ b/examples/platform/infineon/psoc6/init_psoc6Platform.cpp @@ -47,7 +47,7 @@ #include #include -void init_p6Platform(void) +void init_psoc6Platform(void) { /* Initialize the board support package */ cybsp_init(); diff --git a/examples/platform/infineon/psoc6/init_psoc6Platform.h b/examples/platform/infineon/psoc6/init_psoc6Platform.h index 68ab7df04cc03e..8b4c075731bec0 100644 --- a/examples/platform/infineon/psoc6/init_psoc6Platform.h +++ b/examples/platform/infineon/psoc6/init_psoc6Platform.h @@ -18,4 +18,4 @@ /*******************************************************************************/ #pragma once -void init_p6Platform(void); +void init_psoc6Platform(void); diff --git a/examples/platform/silabs/BaseApplication.cpp b/examples/platform/silabs/BaseApplication.cpp index fd22a7ea3a48fc..44e6a4ff3b1827 100644 --- a/examples/platform/silabs/BaseApplication.cpp +++ b/examples/platform/silabs/BaseApplication.cpp @@ -51,6 +51,7 @@ #if CHIP_ENABLE_OPENTHREAD #include #include +#include #include #endif // CHIP_ENABLE_OPENTHREAD @@ -115,9 +116,10 @@ app::Clusters::NetworkCommissioning::Instance sWiFiNetworkCommissioningInstance(0 /* Endpoint Id */, &(NetworkCommissioning::SlWiFiDriver::GetInstance())); #endif /* SL_WIFI */ +bool sIsEnabled = false; +bool sIsAttached = false; + #if !(defined(CHIP_CONFIG_ENABLE_ICD_SERVER) && CHIP_CONFIG_ENABLE_ICD_SERVER) -bool sIsEnabled = false; -bool sIsAttached = false; bool sHaveBLEConnections = false; #endif // CHIP_CONFIG_ENABLE_ICD_SERVER @@ -156,14 +158,13 @@ Identify gIdentify = { }; #endif // MATTER_DM_PLUGIN_IDENTIFY_SERVER + } // namespace -bool BaseApplication::sIsProvisioned = false; -bool BaseApplication::sIsFactoryResetTriggered = false; -LEDWidget * BaseApplication::sAppActionLed = nullptr; -#if CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 +bool BaseApplication::sIsProvisioned = false; +bool BaseApplication::sIsFactoryResetTriggered = false; +LEDWidget * BaseApplication::sAppActionLed = nullptr; BaseApplicationDelegate BaseApplication::sAppDelegate = BaseApplicationDelegate(); -#endif // CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 #ifdef DIC_ENABLE namespace { @@ -181,17 +182,19 @@ void AppSpecificConnectivityEventCallback(const ChipDeviceEvent * event, intptr_ } // namespace #endif // DIC_ENABLE -#if CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 void BaseApplicationDelegate::OnCommissioningSessionStarted() { isComissioningStarted = true; } + void BaseApplicationDelegate::OnCommissioningSessionStopped() { isComissioningStarted = false; } + void BaseApplicationDelegate::OnCommissioningWindowClosed() { +#if CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 if (!BaseApplication::GetProvisionStatus() && !isComissioningStarted) { int32_t status = wfx_power_save(RSI_SLEEP_MODE_8, STANDBY_POWER_SAVE_WITH_RAM_RETENTION); @@ -200,8 +203,27 @@ void BaseApplicationDelegate::OnCommissioningWindowClosed() ChipLogError(DeviceLayer, "Failed to enable the TA Deep Sleep"); } } +#endif // CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917qq +} + +void BaseApplicationDelegate::OnFabricCommitted(const FabricTable & fabricTable, FabricIndex fabricIndex) +{ + // If we commissioned our first fabric, Update the commissioned status of the App + if (fabricTable.FabricCount() == 1) + { + BaseApplication::UpdateCommissioningStatus(true); + } +} + +void BaseApplicationDelegate::OnFabricRemoved(const FabricTable & fabricTable, FabricIndex fabricIndex) +{ + if (fabricTable.FabricCount() == 0) + { + BaseApplication::UpdateCommissioningStatus(false); + + BaseApplication::DoProvisioningReset(); + } } -#endif // CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 /********************************************************** * AppTask Definitions @@ -298,6 +320,8 @@ CHIP_ERROR BaseApplication::Init() #if CHIP_ENABLE_OPENTHREAD BaseApplication::sIsProvisioned = ConnectivityMgr().IsThreadProvisioned(); #endif + + err = chip::Server::GetInstance().GetFabricTable().AddFabricDelegate(&sAppDelegate); return err; } @@ -411,6 +435,23 @@ bool BaseApplication::ActivateStatusLedPatterns() return isPatternSet; } +void BaseApplication::UpdateCommissioningStatus(bool newState) +{ +#ifdef SL_WIFI + BaseApplication::sIsProvisioned = ConnectivityMgr().IsWiFiStationProvisioned(); + sIsEnabled = ConnectivityMgr().IsWiFiStationEnabled(); + sIsAttached = ConnectivityMgr().IsWiFiStationConnected(); +#endif /* SL_WIFI */ +#if CHIP_ENABLE_OPENTHREAD + // TODO: This is a temporary solution until we can read Thread provisioning status from RAM instead of NVM. + BaseApplication::sIsProvisioned = newState; + sIsEnabled = ConnectivityMgr().IsThreadEnabled(); + sIsAttached = ConnectivityMgr().IsThreadAttached(); +#endif /* CHIP_ENABLE_OPENTHREAD */ + + ActivateStatusLedPatterns(); +} + // TODO Move State Monitoring elsewhere void BaseApplication::LightEventHandler() { @@ -750,15 +791,40 @@ void BaseApplication::ScheduleFactoryReset() { Provision::Manager::GetInstance().SetProvisionRequired(true); } - PlatformMgr().HandleServerShuttingDown(); + PlatformMgr().HandleServerShuttingDown(); // HandleServerShuttingDown calls OnShutdown() which is only implemented for the + // basic information cluster it seems. And triggers and Event flush, which is not + // relevant when there are no fabrics left ConfigurationMgr().InitiateFactoryReset(); }); } +void BaseApplication::DoProvisioningReset() +{ + PlatformMgr().ScheduleWork([](intptr_t) { +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + ConfigurationManagerImpl::GetDefaultInstance().ClearThreadStack(); + ThreadStackMgrImpl().FactoryResetThreadStack(); + ThreadStackMgr().InitThreadStack(); +#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD + +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION + ChipLogProgress(DeviceLayer, "Clearing WiFi provision"); + chip::DeviceLayer::ConnectivityMgr().ClearWiFiStationProvision(); +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION + + CHIP_ERROR err = Server::GetInstance().GetCommissioningWindowManager().OpenBasicCommissioningWindow(); + if (err != CHIP_NO_ERROR) + { + SILABS_LOG("Failed to open the Basic Commissioning Window"); + } + }); +} + void BaseApplication::OnPlatformEvent(const ChipDeviceEvent * event, intptr_t) { if (event->Type == DeviceEventType::kServiceProvisioningChange) { + // Note: This is only called on Attach, we need to add a method to detect Thread Network Detach BaseApplication::sIsProvisioned = event->ServiceProvisioningChange.IsServiceProvisioned; } } diff --git a/examples/platform/silabs/BaseApplication.h b/examples/platform/silabs/BaseApplication.h index 8a231aa6c51513..161f1cdc9eb2fd 100644 --- a/examples/platform/silabs/BaseApplication.h +++ b/examples/platform/silabs/BaseApplication.h @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -62,16 +63,19 @@ #define APP_ERROR_START_TIMER_FAILED CHIP_APPLICATION_ERROR(0x05) #define APP_ERROR_STOP_TIMER_FAILED CHIP_APPLICATION_ERROR(0x06) -#if CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 -class BaseApplicationDelegate : public AppDelegate +class BaseApplicationDelegate : public AppDelegate, public chip::FabricTable::Delegate { private: + // AppDelegate bool isComissioningStarted; void OnCommissioningSessionStarted() override; void OnCommissioningSessionStopped() override; void OnCommissioningWindowClosed() override; + + // FabricTable::Delegate + void OnFabricCommitted(const chip::FabricTable & fabricTable, chip::FabricIndex fabricIndex) override; + void OnFabricRemoved(const chip::FabricTable & fabricTable, chip::FabricIndex fabricIndex) override; }; -#endif // CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 /********************************************************** * BaseApplication Declaration @@ -86,9 +90,7 @@ class BaseApplication static bool sIsProvisioned; static bool sIsFactoryResetTriggered; static LEDWidget * sAppActionLed; -#if CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 static BaseApplicationDelegate sAppDelegate; -#endif // CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 /** * @brief Create AppTask task and Event Queue @@ -156,6 +158,18 @@ class BaseApplication static void OnTriggerIdentifyEffect(Identify * identify); #endif + /** + * @brief Updates the static boolean isCommissioned to the desired state + * + */ + static void UpdateCommissioningStatus(bool newState); + + /** + * @brief Called when the last Fabric is removed, clears all Fabric related data, including Thread and Wifi provision. + * @note This function preserves some NVM3 data that is not Fabric scoped, like Attribute Value or Boot Count. + */ + static void DoProvisioningReset(); + protected: CHIP_ERROR Init(); diff --git a/examples/platform/silabs/MatterConfig.cpp b/examples/platform/silabs/MatterConfig.cpp index 0f25e2e25a40ed..1aabd29bb75ab6 100644 --- a/examples/platform/silabs/MatterConfig.cpp +++ b/examples/platform/silabs/MatterConfig.cpp @@ -222,9 +222,12 @@ void SilabsMatterConfig::ConnectivityEventCallback(const ChipDeviceEvent * event CHIP_ERROR SilabsMatterConfig::InitMatter(const char * appName) { CHIP_ERROR err; - +#ifdef SL_WIFI + // Because OpenThread needs to use memory allocation during its Key operations, we initialize the memory management for thread + // and set the allocation functions inside sl_ot_create_instance, which is called by sl_system_init in the OpenThread stack + // initialization. mbedtls_platform_set_calloc_free(CHIPPlatformMemoryCalloc, CHIPPlatformMemoryFree); - +#endif SILABS_LOG("=================================================="); SILABS_LOG("%s starting", appName); SILABS_LOG("=================================================="); @@ -241,11 +244,11 @@ CHIP_ERROR SilabsMatterConfig::InitMatter(const char * appName) // Init Matter Stack //============================================== SILABS_LOG("Init CHIP Stack"); - // Init Chip memory management before the stack - ReturnErrorOnFailure(chip::Platform::MemoryInit()); -// WiFi needs to be initialized after Memory Init for some reason #ifdef SL_WIFI + // Init Chip memory management before the stack + // See comment above about OpenThread memory allocation as to why this is WIFI only here. + ReturnErrorOnFailure(chip::Platform::MemoryInit()); ReturnErrorOnFailure(InitWiFi()); #endif @@ -304,9 +307,7 @@ CHIP_ERROR SilabsMatterConfig::InitMatter(const char * appName) initParams.endpointNativeParams = static_cast(&nativeParams); #endif -#if CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 initParams.appDelegate = &BaseApplication::sAppDelegate; -#endif // CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI917 // Init Matter Server and Start Event Loop err = chip::Server::GetInstance().Init(initParams); diff --git a/examples/platform/silabs/efr32/uart.cpp b/examples/platform/silabs/efr32/uart.cpp index 5feaaa66d86923..80d2dbba63b3a8 100644 --- a/examples/platform/silabs/efr32/uart.cpp +++ b/examples/platform/silabs/efr32/uart.cpp @@ -361,6 +361,12 @@ int16_t uartConsoleWrite(const char * Buf, uint16_t BufLength) return UART_CONSOLE_ERR; } + if (NULL == sUartTxQueue) + { + // This is to prevent the first prompt from OTCLI to be rejected and to break the OTCli output + uartConsoleInit(); + } + #ifdef PW_RPC_ENABLED // Pigweed Logger is already thread safe. UARTDRV_ForceTransmit(vcom_handle, (uint8_t *) Buf, BufLength); diff --git a/examples/platform/silabs/matter-platform.slcp b/examples/platform/silabs/matter-platform.slcp index c8075656e9f74d..bfde28d9f721f9 100644 --- a/examples/platform/silabs/matter-platform.slcp +++ b/examples/platform/silabs/matter-platform.slcp @@ -72,6 +72,9 @@ component: - {id: mbedtls_platform_dynamic_memory_allocation_config_init_runtime } - {id: mbedtls_base64} - {id: ot_psa_crypto} +- {id: ot_platform_abstraction} +- {id: ot_rtos_wrappers_real} +- {id: sl_ot_custom_cli} # Necessary componenets for ot coap cert lib # - {id: mbedtls_dtls} # Requried by COAP lib # - {id: mbedtls_tls_server} # Requried by COAP lib @@ -86,6 +89,10 @@ config_file: directory: btconf configuration: +- name: SL_OPENTHREAD_ENABLE_APP_TASK + value: 0 +- name: SL_OPENTHREAD_ENABLE_CLI_TASK + value: 0 - {name: SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED, value: '0'} - {name: SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED, value: '1'} - condition: [uartdrv_usart] diff --git a/examples/pump-app/nrfconnect/CMakeLists.txt b/examples/pump-app/nrfconnect/CMakeLists.txt index 7682c0ca663ffd..b599faaa1dd863 100644 --- a/examples/pump-app/nrfconnect/CMakeLists.txt +++ b/examples/pump-app/nrfconnect/CMakeLists.txt @@ -21,14 +21,6 @@ get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH) include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) - -if(NOT CONF_FILE STREQUAL "prj_no_dfu.conf") - set(PM_STATIC_YML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/configuration/${BOARD}/pm_static_dfu.yml) -endif() - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) @@ -40,6 +32,7 @@ target_compile_options(app PRIVATE -Werror -Wno-error=maybe-uninitialized) project(chip-nrfconnect-pump-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) diff --git a/examples/pump-app/nrfconnect/Kconfig.sysbuild b/examples/pump-app/nrfconnect/Kconfig.sysbuild new file mode 100644 index 00000000000000..8877de44e2d570 --- /dev/null +++ b/examples/pump-app/nrfconnect/Kconfig.sysbuild @@ -0,0 +1,76 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y + +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if SOC_SERIES_NRF53X + +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +#### Bootloader +choice BOOTLOADER + default BOOTLOADER_MCUBOOT +endchoice + +if BOOTLOADER_MCUBOOT + +#### DFU multi-image support +config DFU_MULTI_IMAGE_PACKAGE_BUILD + default y + +config DFU_MULTI_IMAGE_PACKAGE_APP + default y + +config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY + default y + +#### DFU network core configuration +if SOC_SERIES_NRF53X + +config MCUBOOT_UPDATEABLE_IMAGES + default 2 + +choice MCUBOOT_MODE + default MCUBOOT_MODE_OVERWRITE_ONLY +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_RSA +endchoice + +config SECURE_BOOT_NETCORE + default y + +config NETCORE_APP_UPDATE + default y + +config DFU_MULTI_IMAGE_PACKAGE_NET + default y + +endif # SOC_SERIES_NRF53X +endif # BOOTLOADER_MCUBOOT + +#### Enable generating factory data +config MATTER_FACTORY_DATA_GENERATE + default y + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay b/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay deleted file mode 100644 index f18e3e0cc16434..00000000000000 --- a/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay b/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/pump-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/pump-app/nrfconnect/child_image/mcuboot/prj.conf b/examples/pump-app/nrfconnect/child_image/mcuboot/prj.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/pump-app/nrfconnect/child_image/mcuboot/prj.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/pump-app/nrfconnect/child_image/mcuboot/prj_release.conf b/examples/pump-app/nrfconnect/child_image/mcuboot/prj_release.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/pump-app/nrfconnect/child_image/mcuboot/prj_release.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/pump-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf b/examples/pump-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/pump-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/pump-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf b/examples/pump-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/pump-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/pump-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf b/examples/pump-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/pump-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/pump-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml b/examples/pump-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml new file mode 100644 index 00000000000000..ce42b39e55ee87 --- /dev/null +++ b/examples/pump-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml @@ -0,0 +1,42 @@ +mcuboot: + address: 0x0 + size: 0x7000 + region: flash_primary +mcuboot_pad: + address: 0x7000 + size: 0x200 +app: + address: 0x7200 + size: 0xf3e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x7000 + size: 0xf4000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x7200 + size: 0xf3e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_secondary: + address: 0x0 + size: 0xf4000 + device: MX25R64 + region: external_flash +external_flash: + address: 0xf4000 + size: 0x70c000 + device: MX25R64 + region: external_flash diff --git a/examples/pump-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml b/examples/pump-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml new file mode 100644 index 00000000000000..ce42b39e55ee87 --- /dev/null +++ b/examples/pump-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml @@ -0,0 +1,42 @@ +mcuboot: + address: 0x0 + size: 0x7000 + region: flash_primary +mcuboot_pad: + address: 0x7000 + size: 0x200 +app: + address: 0x7200 + size: 0xf3e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x7000 + size: 0xf4000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x7200 + size: 0xf3e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_secondary: + address: 0x0 + size: 0xf4000 + device: MX25R64 + region: external_flash +external_flash: + address: 0xf4000 + size: 0x70c000 + device: MX25R64 + region: external_flash diff --git a/examples/pump-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml b/examples/pump-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/pump-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/pump-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml b/examples/pump-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/pump-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/pump-app/nrfconnect/prj.conf b/examples/pump-app/nrfconnect/prj.conf index 8940955d52b403..91a87e89d916e6 100644 --- a/examples/pump-app/nrfconnect/prj.conf +++ b/examples/pump-app/nrfconnect/prj.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32784 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/pump-app/nrfconnect/prj_no_dfu.conf b/examples/pump-app/nrfconnect/prj_no_dfu.conf deleted file mode 100644 index 21cd8222c2c2e2..00000000000000 --- a/examples/pump-app/nrfconnect/prj_no_dfu.conf +++ /dev/null @@ -1,46 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This sample uses Kconfig.defaults to set options common for all -# samples. This file should contain only options specific for this sample -# or overrides of default values. - -# Enable CHIP -CONFIG_CHIP=y -CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" -# 32784 == 0x8010 (example pump-app) -CONFIG_CHIP_DEVICE_PRODUCT_ID=32784 -CONFIG_STD_CPP17=y - -# Add support for LEDs and buttons on Nordic development kits -CONFIG_DK_LIBRARY=y - -# Bluetooth Low Energy configuration -CONFIG_BT_DEVICE_NAME="MatterPump" - -# Other settings -CONFIG_THREAD_NAME=y -CONFIG_MPU_STACK_GUARD=y -CONFIG_RESET_ON_FATAL_ERROR=n - -# Reduce application size -CONFIG_USE_SEGGER_RTT=n - -# Disable Matter OTA DFU -CONFIG_CHIP_OTA_REQUESTOR=n - -# Disable QSPI NOR -CONFIG_CHIP_QSPI_NOR=n diff --git a/examples/pump-app/nrfconnect/prj_release.conf b/examples/pump-app/nrfconnect/prj_release.conf index ac2b6e09ade94d..8bf281aec7df38 100644 --- a/examples/pump-app/nrfconnect/prj_release.conf +++ b/examples/pump-app/nrfconnect/prj_release.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32784 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/pump-app/nrfconnect/sysbuild.conf b/examples/pump-app/nrfconnect/sysbuild.conf new file mode 100644 index 00000000000000..d0c5eee2b93c39 --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild.conf @@ -0,0 +1,17 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y diff --git a/examples/pump-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/pump-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/pump-app/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/pump-app/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/pump-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/pump-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/pump-app/nrfconnect/sysbuild/mcuboot/app.overlay b/examples/pump-app/nrfconnect/sysbuild/mcuboot/app.overlay new file mode 100644 index 00000000000000..74d3dfbfd22f30 --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild/mcuboot/app.overlay @@ -0,0 +1,5 @@ +/ { + chosen { + zephyr,code-partition = &boot_partition; + }; +}; diff --git a/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf b/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf new file mode 100644 index 00000000000000..50610217c762b5 --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf @@ -0,0 +1,19 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 diff --git a/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf b/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..2d86fe6442dd39 --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +CONFIG_BOOT_SWAP_USING_MOVE=n +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/pump-app/nrfconnect/sysbuild/mcuboot/prj.conf b/examples/pump-app/nrfconnect/sysbuild/mcuboot/prj.conf new file mode 100644 index 00000000000000..3bcb12fe7b8d25 --- /dev/null +++ b/examples/pump-app/nrfconnect/sysbuild/mcuboot/prj.conf @@ -0,0 +1,49 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_MAIN_STACK_SIZE=10240 + +CONFIG_BOOT_SWAP_SAVE_ENCTLV=n +CONFIG_BOOT_BOOTSTRAP=n +CONFIG_PM=n + +CONFIG_FLASH=y +CONFIG_FPROTECT=y + +CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" + +# Use minimal C library instead of the Picolib +CONFIG_MINIMAL_LIBC=y + +# Bootloader size optimization +CONFIG_CONSOLE=n +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_USE_SEGGER_RTT=n +CONFIG_GPIO=n + +CONFIG_BOOT_MAX_IMG_SECTORS=256 + +CONFIG_LOG=n +CONFIG_CONSOLE_HANDLER=n +CONFIG_BOOT_BANNER=n +CONFIG_NCS_BOOT_BANNER=n +CONFIG_TIMESLICING=n +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_MULTITHREADING=n +CONFIG_TICKLESS_KERNEL=n +CONFIG_TIMEOUT_64BIT=n +CONFIG_NRF_ENABLE_ICACHE=n diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter index dc18d83cc89bc3..242d64e29ddd95 100644 --- a/examples/pump-app/pump-common/pump-app.matter +++ b/examples/pump-app/pump-common/pump-app.matter @@ -125,7 +125,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1939,7 +1939,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 1; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/pump-app/pump-common/pump-app.zap b/examples/pump-app/pump-common/pump-app.zap index cb87c13835d08c..17e0732704d2af 100644 --- a/examples/pump-app/pump-common/pump-app.zap +++ b/examples/pump-app/pump-common/pump-app.zap @@ -3343,7 +3343,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/pump-app/silabs/data_model/pump-thread-app.matter b/examples/pump-app/silabs/data_model/pump-thread-app.matter index 864ba8cef14e27..907af129f460aa 100644 --- a/examples/pump-app/silabs/data_model/pump-thread-app.matter +++ b/examples/pump-app/silabs/data_model/pump-thread-app.matter @@ -125,7 +125,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1939,7 +1939,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 1; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/pump-app/silabs/data_model/pump-thread-app.zap b/examples/pump-app/silabs/data_model/pump-thread-app.zap index 358703c49600cf..d977c40da06770 100644 --- a/examples/pump-app/silabs/data_model/pump-thread-app.zap +++ b/examples/pump-app/silabs/data_model/pump-thread-app.zap @@ -3343,7 +3343,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/pump-app/silabs/data_model/pump-wifi-app.matter b/examples/pump-app/silabs/data_model/pump-wifi-app.matter index 864ba8cef14e27..907af129f460aa 100644 --- a/examples/pump-app/silabs/data_model/pump-wifi-app.matter +++ b/examples/pump-app/silabs/data_model/pump-wifi-app.matter @@ -125,7 +125,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -1939,7 +1939,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 1; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/pump-app/silabs/data_model/pump-wifi-app.zap b/examples/pump-app/silabs/data_model/pump-wifi-app.zap index 358703c49600cf..d977c40da06770 100644 --- a/examples/pump-app/silabs/data_model/pump-wifi-app.zap +++ b/examples/pump-app/silabs/data_model/pump-wifi-app.zap @@ -3343,7 +3343,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/pump-controller-app/nrfconnect/CMakeLists.txt b/examples/pump-controller-app/nrfconnect/CMakeLists.txt index 52ece075e286ee..98d43aefafeb71 100644 --- a/examples/pump-controller-app/nrfconnect/CMakeLists.txt +++ b/examples/pump-controller-app/nrfconnect/CMakeLists.txt @@ -21,14 +21,6 @@ get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH) include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) - -if(NOT CONF_FILE STREQUAL "prj_no_dfu.conf") - set(PM_STATIC_YML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/configuration/${BOARD}/pm_static_dfu.yml) -endif() - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) @@ -40,6 +32,7 @@ target_compile_options(app PRIVATE -Werror -Wno-error=maybe-uninitialized) project(chip-nrfconnect-pump-controller-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) diff --git a/examples/pump-controller-app/nrfconnect/Kconfig.sysbuild b/examples/pump-controller-app/nrfconnect/Kconfig.sysbuild new file mode 100644 index 00000000000000..8877de44e2d570 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/Kconfig.sysbuild @@ -0,0 +1,76 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y + +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if SOC_SERIES_NRF53X + +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +#### Bootloader +choice BOOTLOADER + default BOOTLOADER_MCUBOOT +endchoice + +if BOOTLOADER_MCUBOOT + +#### DFU multi-image support +config DFU_MULTI_IMAGE_PACKAGE_BUILD + default y + +config DFU_MULTI_IMAGE_PACKAGE_APP + default y + +config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY + default y + +#### DFU network core configuration +if SOC_SERIES_NRF53X + +config MCUBOOT_UPDATEABLE_IMAGES + default 2 + +choice MCUBOOT_MODE + default MCUBOOT_MODE_OVERWRITE_ONLY +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_RSA +endchoice + +config SECURE_BOOT_NETCORE + default y + +config NETCORE_APP_UPDATE + default y + +config DFU_MULTI_IMAGE_PACKAGE_NET + default y + +endif # SOC_SERIES_NRF53X +endif # BOOTLOADER_MCUBOOT + +#### Enable generating factory data +config MATTER_FACTORY_DATA_GENERATE + default y + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay b/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay deleted file mode 100644 index f18e3e0cc16434..00000000000000 --- a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay b/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/prj.conf b/examples/pump-controller-app/nrfconnect/child_image/mcuboot/prj.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/prj.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/prj_release.conf b/examples/pump-controller-app/nrfconnect/child_image/mcuboot/prj_release.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/pump-controller-app/nrfconnect/child_image/mcuboot/prj_release.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/pump-controller-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf b/examples/pump-controller-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/pump-controller-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/pump-controller-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf b/examples/pump-controller-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/pump-controller-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/pump-controller-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf b/examples/pump-controller-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/pump-controller-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/pump-controller-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml b/examples/pump-controller-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml new file mode 100644 index 00000000000000..ce42b39e55ee87 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml @@ -0,0 +1,42 @@ +mcuboot: + address: 0x0 + size: 0x7000 + region: flash_primary +mcuboot_pad: + address: 0x7000 + size: 0x200 +app: + address: 0x7200 + size: 0xf3e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x7000 + size: 0xf4000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x7200 + size: 0xf3e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_secondary: + address: 0x0 + size: 0xf4000 + device: MX25R64 + region: external_flash +external_flash: + address: 0xf4000 + size: 0x70c000 + device: MX25R64 + region: external_flash diff --git a/examples/pump-controller-app/nrfconnect/pm_static_nrf52840dk_nrf52840_relese.yml b/examples/pump-controller-app/nrfconnect/pm_static_nrf52840dk_nrf52840_relese.yml new file mode 100644 index 00000000000000..ce42b39e55ee87 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/pm_static_nrf52840dk_nrf52840_relese.yml @@ -0,0 +1,42 @@ +mcuboot: + address: 0x0 + size: 0x7000 + region: flash_primary +mcuboot_pad: + address: 0x7000 + size: 0x200 +app: + address: 0x7200 + size: 0xf3e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x7000 + size: 0xf4000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x7200 + size: 0xf3e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_secondary: + address: 0x0 + size: 0xf4000 + device: MX25R64 + region: external_flash +external_flash: + address: 0xf4000 + size: 0x70c000 + device: MX25R64 + region: external_flash diff --git a/examples/pump-controller-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml b/examples/pump-controller-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/pump-controller-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml b/examples/pump-controller-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/pump-controller-app/nrfconnect/prj.conf b/examples/pump-controller-app/nrfconnect/prj.conf index 857ad459b83707..4a134922c5f074 100644 --- a/examples/pump-controller-app/nrfconnect/prj.conf +++ b/examples/pump-controller-app/nrfconnect/prj.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32785 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/pump-controller-app/nrfconnect/prj_no_dfu.conf b/examples/pump-controller-app/nrfconnect/prj_no_dfu.conf deleted file mode 100644 index f4b60e647953ae..00000000000000 --- a/examples/pump-controller-app/nrfconnect/prj_no_dfu.conf +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This sample uses Kconfig.defaults to set options common for all -# samples. This file should contain only options specific for this sample -# or overrides of default values. - -# Enable CHIP -CONFIG_CHIP=y -CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" -# 32785 == 0x8011 (example pump-controller-app) -CONFIG_CHIP_DEVICE_PRODUCT_ID=32785 - -CONFIG_STD_CPP17=y - -# Add support for LEDs and buttons on Nordic development kits -CONFIG_DK_LIBRARY=y - -# Bluetooth Low Energy configuration -CONFIG_BT_DEVICE_NAME="MatterPumpCtrl" - -# Other settings -CONFIG_THREAD_NAME=y -CONFIG_MPU_STACK_GUARD=y -CONFIG_RESET_ON_FATAL_ERROR=n - -# Reduce application size -CONFIG_USE_SEGGER_RTT=n - -# Disable Matter OTA DFU -CONFIG_CHIP_OTA_REQUESTOR=n - -# Disable QSPI NOR -CONFIG_CHIP_QSPI_NOR=n diff --git a/examples/pump-controller-app/nrfconnect/prj_release.conf b/examples/pump-controller-app/nrfconnect/prj_release.conf index 6826b31ca3679b..57dc76f55bd5d8 100644 --- a/examples/pump-controller-app/nrfconnect/prj_release.conf +++ b/examples/pump-controller-app/nrfconnect/prj_release.conf @@ -26,6 +26,13 @@ CONFIG_CHIP_DEVICE_PRODUCT_ID=32785 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/pump-controller-app/nrfconnect/sysbuild.conf b/examples/pump-controller-app/nrfconnect/sysbuild.conf new file mode 100644 index 00000000000000..d0c5eee2b93c39 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild.conf @@ -0,0 +1,17 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y diff --git a/examples/pump-controller-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/pump-controller-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/pump-controller-app/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/pump-controller-app/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/pump-controller-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/pump-controller-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/app.overlay b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/app.overlay new file mode 100644 index 00000000000000..74d3dfbfd22f30 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/app.overlay @@ -0,0 +1,5 @@ +/ { + chosen { + zephyr,code-partition = &boot_partition; + }; +}; diff --git a/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf new file mode 100644 index 00000000000000..50610217c762b5 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf @@ -0,0 +1,19 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 diff --git a/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..2d86fe6442dd39 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +CONFIG_BOOT_SWAP_USING_MOVE=n +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/prj.conf b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/prj.conf new file mode 100644 index 00000000000000..3bcb12fe7b8d25 --- /dev/null +++ b/examples/pump-controller-app/nrfconnect/sysbuild/mcuboot/prj.conf @@ -0,0 +1,49 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_MAIN_STACK_SIZE=10240 + +CONFIG_BOOT_SWAP_SAVE_ENCTLV=n +CONFIG_BOOT_BOOTSTRAP=n +CONFIG_PM=n + +CONFIG_FLASH=y +CONFIG_FPROTECT=y + +CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" + +# Use minimal C library instead of the Picolib +CONFIG_MINIMAL_LIBC=y + +# Bootloader size optimization +CONFIG_CONSOLE=n +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_USE_SEGGER_RTT=n +CONFIG_GPIO=n + +CONFIG_BOOT_MAX_IMG_SECTORS=256 + +CONFIG_LOG=n +CONFIG_CONSOLE_HANDLER=n +CONFIG_BOOT_BANNER=n +CONFIG_NCS_BOOT_BANNER=n +CONFIG_TIMESLICING=n +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_MULTITHREADING=n +CONFIG_TICKLESS_KERNEL=n +CONFIG_TIMEOUT_64BIT=n +CONFIG_NRF_ENABLE_ICACHE=n diff --git a/examples/shell/nrfconnect/sysbuild.conf b/examples/shell/nrfconnect/sysbuild.conf new file mode 100644 index 00000000000000..e63a92c6b2bbab --- /dev/null +++ b/examples/shell/nrfconnect/sysbuild.conf @@ -0,0 +1,18 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y +SB_CONFIG_MATTER_OTA=n diff --git a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter index ceb5b931a22b69..8e2f8a41993005 100644 --- a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter +++ b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter @@ -1730,7 +1730,7 @@ cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -1746,6 +1746,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -1784,6 +1785,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2233,7 +2235,7 @@ endpoint 0 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 1; - ram attribute clusterRevision default = 2; + ram attribute clusterRevision default = 3; handle command RegisterClient; handle command RegisterClientResponse; diff --git a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap index 4ba684c480c6a5..f63c63c5d33bce 100644 --- a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap +++ b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap @@ -3715,7 +3715,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter index 55439d700c7c06..43cae6aee44148 100644 --- a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter +++ b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter @@ -2018,7 +2018,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -2116,11 +2115,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -2195,7 +2189,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2233,7 +2226,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -2262,8 +2254,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } diff --git a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter index e6aa1f27611e44..356347c1e7bf02 100644 --- a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter +++ b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter @@ -1929,7 +1929,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -2027,11 +2026,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -2106,7 +2100,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2144,7 +2137,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -2173,8 +2165,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } diff --git a/examples/thermostat/qpg/include/AppTask.h b/examples/thermostat/qpg/include/AppTask.h index 557f83d08636c9..2d2caac653aabc 100644 --- a/examples/thermostat/qpg/include/AppTask.h +++ b/examples/thermostat/qpg/include/AppTask.h @@ -61,6 +61,7 @@ class AppTask static void FunctionTimerEventHandler(AppEvent * aEvent); static void FunctionHandler(AppEvent * aEvent); static void TimerEventHandler(chip::System::Layer * aLayer, void * aAppState); + static void TotalHoursTimerHandler(chip::System::Layer * aLayer, void * aAppState); static void MatterEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg); static void UpdateLEDs(void); diff --git a/examples/thermostat/qpg/src/AppTask.cpp b/examples/thermostat/qpg/src/AppTask.cpp index 5bd1e9cc29ad9a..306661766a4af4 100644 --- a/examples/thermostat/qpg/src/AppTask.cpp +++ b/examples/thermostat/qpg/src/AppTask.cpp @@ -54,6 +54,8 @@ using namespace ::chip::DeviceLayer; #define APP_TASK_STACK_SIZE (2 * 1024) #define APP_TASK_PRIORITY 2 #define APP_EVENT_QUEUE_SIZE 10 +#define SECONDS_IN_HOUR (3600) // we better keep this 3600 +#define TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS (1 * SECONDS_IN_HOUR) // increment every hour namespace { TaskHandle_t sAppTaskHandle; @@ -233,6 +235,14 @@ CHIP_ERROR AppTask::Init() sIsBLEAdvertisingEnabled = ConnectivityMgr().IsBLEAdvertisingEnabled(); UpdateLEDs(); + err = chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Seconds32(TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS), + TotalHoursTimerHandler, this); + + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "StartTimer failed %s: ", chip::ErrorStr(err)); + } + return err; } @@ -312,6 +322,40 @@ void AppTask::TimerEventHandler(chip::System::Layer * aLayer, void * aAppState) sAppTask.PostEvent(&event); } +void AppTask::TotalHoursTimerHandler(chip::System::Layer * aLayer, void * aAppState) +{ + ChipLogProgress(NotSpecified, "HourlyTimer"); + + CHIP_ERROR err; + uint32_t totalOperationalHours = 0; + + err = ConfigurationMgr().GetTotalOperationalHours(totalOperationalHours); + + if (err == CHIP_NO_ERROR) + { + ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + + (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / SECONDS_IN_HOUR)); + } + else if (err == CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND) + { + totalOperationalHours = 0; // set this explicitly to 0 for safety + ConfigurationMgr().StoreTotalOperationalHours(totalOperationalHours + + (TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS / SECONDS_IN_HOUR)); + } + else + { + ChipLogError(DeviceLayer, "Failed to get total operational hours of the Node"); + } + + err = chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Seconds32(TOTAL_OPERATIONAL_HOURS_SAVE_INTERVAL_SECONDS), + TotalHoursTimerHandler, nullptr); + + if (err != CHIP_NO_ERROR) + { + ChipLogError(NotSpecified, "StartTimer failed %s: ", chip::ErrorStr(err)); + } +} + void AppTask::FunctionTimerEventHandler(AppEvent * aEvent) { if (aEvent->Type != AppEvent::kEventType_Timer) diff --git a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter index 775b1d38bbb160..7d90277b06091e 100644 --- a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter +++ b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter @@ -1626,7 +1626,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -1724,11 +1723,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -1803,7 +1797,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -1841,7 +1834,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -1870,8 +1862,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index 3268c9aa5263cb..3246155268aca9 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -1806,7 +1806,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -1904,11 +1903,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -1983,7 +1977,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2021,7 +2014,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -2050,8 +2042,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } diff --git a/examples/tv-app/android/java/AppImpl.cpp b/examples/tv-app/android/java/AppImpl.cpp index c24e7e537dbb23..d04964ee5eb747 100644 --- a/examples/tv-app/android/java/AppImpl.cpp +++ b/examples/tv-app/android/java/AppImpl.cpp @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include @@ -572,7 +572,7 @@ CHIP_ERROR InitVideoPlayerPlatform(jobject contentAppEndpointManager) { ContentAppCommandDelegate * delegate = new ContentAppCommandDelegate(contentAppEndpointManager, contentAppClusters[i].clusterId); - chip::app::InteractionModelEngine::GetInstance()->RegisterCommandHandler(delegate); + chip::app::CommandHandlerInterfaceRegistry::RegisterCommandHandler(delegate); ChipLogProgress(AppServer, "Registered command handler delegate for cluster %d", contentAppClusters[i].clusterId); } diff --git a/examples/tv-app/linux/args.gni b/examples/tv-app/linux/args.gni index 4861f23ac068dc..229668377ef8da 100644 --- a/examples/tv-app/linux/args.gni +++ b/examples/tv-app/linux/args.gni @@ -31,6 +31,8 @@ chip_enable_additional_data_advertising = true chip_enable_rotating_device_id = true matter_enable_tracing_support = true +matter_log_json_payload_hex = true +matter_log_json_payload_decode_full = true # Thread devices do not support WakeOnLan because their mac address is >48bit chip_enable_openthread = false diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index 998cac0791b12c..69c714a56bf7da 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -75,7 +75,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -3750,7 +3750,7 @@ endpoint 2 { ram attribute defaultMoveRate; persist attribute startUpCurrentLevel default = 255; ram attribute featureMap default = 1; - ram attribute clusterRevision default = 5; + ram attribute clusterRevision default = 6; handle command MoveToLevel; handle command Move; diff --git a/examples/tv-app/tv-common/tv-app.zap b/examples/tv-app/tv-common/tv-app.zap index 8e5028b4ed8d25..9acccceace7c4d 100644 --- a/examples/tv-app/tv-common/tv-app.zap +++ b/examples/tv-app/tv-common/tv-app.zap @@ -6915,7 +6915,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/tv-casting-app/linux/args.gni b/examples/tv-casting-app/linux/args.gni index 549819b797f6c7..94ae0a5ed0f66a 100644 --- a/examples/tv-casting-app/linux/args.gni +++ b/examples/tv-casting-app/linux/args.gni @@ -35,3 +35,5 @@ chip_max_discovered_ip_addresses = 20 enable_rtti = true matter_enable_tracing_support = true +matter_log_json_payload_hex = true +matter_log_json_payload_decode_full = true diff --git a/examples/tv-casting-app/linux/simple-app-helper.cpp b/examples/tv-casting-app/linux/simple-app-helper.cpp index 3cf13fac8606f2..ac60b7fb4740f4 100644 --- a/examples/tv-casting-app/linux/simple-app-helper.cpp +++ b/examples/tv-casting-app/linux/simple-app-helper.cpp @@ -41,6 +41,7 @@ bool gCommissionerGeneratedPasscodeFlowRunning = false; DiscoveryDelegateImpl * DiscoveryDelegateImpl::_discoveryDelegateImpl = nullptr; bool gAwaitingCommissionerPasscodeInput = false; +LinuxCommissionableDataProvider gSimpleAppCommissionableDataProvider; std::shared_ptr targetCastingPlayer; DiscoveryDelegateImpl * DiscoveryDelegateImpl::GetInstance() @@ -470,9 +471,8 @@ CHIP_ERROR CommandHandler(int argc, char ** argv) // Commissioner-generated passcode, and then update the CastigApp's AppParameters to update the commissioning session's // passcode. LinuxDeviceOptions::GetInstance().payload.setUpPINCode = userEnteredPasscode; - LinuxCommissionableDataProvider gCommissionableDataProvider; - CHIP_ERROR err = CHIP_NO_ERROR; - err = InitCommissionableDataProvider(gCommissionableDataProvider, LinuxDeviceOptions::GetInstance()); + CHIP_ERROR err = CHIP_NO_ERROR; + err = InitCommissionableDataProvider(gSimpleAppCommissionableDataProvider, LinuxDeviceOptions::GetInstance()); if (err != CHIP_NO_ERROR) { ChipLogError(AppServer, @@ -482,7 +482,8 @@ CHIP_ERROR CommandHandler(int argc, char ** argv) } // Update the CommissionableDataProvider stored in this CastingApp's AppParameters and the CommissionableDataProvider to // be used for the commissioning session. - err = matter::casting::core::CastingApp::GetInstance()->UpdateCommissionableDataProvider(&gCommissionableDataProvider); + err = matter::casting::core::CastingApp::GetInstance()->UpdateCommissionableDataProvider( + &gSimpleAppCommissionableDataProvider); if (err != CHIP_NO_ERROR) { ChipLogError(AppServer, diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter index e58845e4f8823b..e7bbc1e6c2eee4 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter @@ -202,7 +202,7 @@ cluster OnOff = 6 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap index c9cc4c8e9eb598..4f234c23f8eadb 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap @@ -19,18 +19,18 @@ "package": [ { "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/zcl/zcl.json", - "type": "zcl-properties", + "path": "../../../src/app/zap-templates/app-templates.json", + "type": "gen-templates-json", "category": "matter", - "version": 1, - "description": "Matter SDK ZCL data" + "version": "chip-v1" }, { "pathRelativity": "relativeToZap", - "path": "../../../src/app/zap-templates/app-templates.json", - "type": "gen-templates-json", + "path": "../../../src/app/zap-templates/zcl/zcl.json", + "type": "zcl-properties", "category": "matter", - "version": "chip-v1" + "version": 1, + "description": "Matter SDK ZCL data" } ], "endpointTypes": [ @@ -3127,7 +3127,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter index 5fe6dd615c6d46..21e19e2640fbcb 100644 --- a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter +++ b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter @@ -2850,7 +2850,7 @@ cluster WindowCovering = 258 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -3721,7 +3721,7 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 1; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveToSaturation; diff --git a/examples/virtual-device-app/virtual-device-common/virtual-device-app.zap b/examples/virtual-device-app/virtual-device-common/virtual-device-app.zap index 93728b6f5fed7e..5fdeb3f38b60a8 100644 --- a/examples/virtual-device-app/virtual-device-common/virtual-device-app.zap +++ b/examples/virtual-device-app/virtual-device-common/virtual-device-app.zap @@ -6581,7 +6581,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index a313e96e0a94c6..8c272c7c17dacd 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -1828,7 +1828,7 @@ cluster UserLabel = 65 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -1844,6 +1844,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -1882,6 +1883,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -2481,7 +2483,7 @@ endpoint 0 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x0000; - ram attribute clusterRevision default = 2; + ram attribute clusterRevision default = 3; } } endpoint 1 { diff --git a/examples/window-app/common/window-app.zap b/examples/window-app/common/window-app.zap index 87d2ce831e4647..ae2f7195f18070 100644 --- a/examples/window-app/common/window-app.zap +++ b/examples/window-app/common/window-app.zap @@ -5205,7 +5205,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/window-app/nrfconnect/CMakeLists.txt b/examples/window-app/nrfconnect/CMakeLists.txt index 21eee307f1f388..e6f7ebca632047 100644 --- a/examples/window-app/nrfconnect/CMakeLists.txt +++ b/examples/window-app/nrfconnect/CMakeLists.txt @@ -23,14 +23,6 @@ get_filename_component(WIN_APP_COMMON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../common/ include(${CHIP_ROOT}/config/nrfconnect/app/check-nrfconnect-version.cmake) -# Set Kconfig root files that will be processed as a first Kconfig for used child images. -set(mcuboot_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.mcuboot.root) -set(multiprotocol_rpmsg_KCONFIG_ROOT ${CHIP_ROOT}/config/nrfconnect/chip-module/Kconfig.multiprotocol_rpmsg.root) - -if(NOT CONF_FILE STREQUAL "prj_no_dfu.conf") - set(PM_STATIC_YML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/configuration/${BOARD}/pm_static_dfu.yml) -endif() - list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/nrfconnect/chip-module) find_package(Zephyr HINTS $ENV{ZEPHYR_BASE}) @@ -42,6 +34,7 @@ target_compile_options(app PRIVATE -Werror -Wno-error=maybe-uninitialized) project(chip-nrfconnect-window-app-example) +include(${CHIP_ROOT}/config/nrfconnect/app/check-sysbuild-use.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/enable-gnu-std.cmake) include(${CHIP_ROOT}/config/nrfconnect/app/flashing.cmake) include(${CHIP_ROOT}/src/app/chip_data_model.cmake) diff --git a/examples/window-app/nrfconnect/Kconfig.sysbuild b/examples/window-app/nrfconnect/Kconfig.sysbuild new file mode 100644 index 00000000000000..8877de44e2d570 --- /dev/null +++ b/examples/window-app/nrfconnect/Kconfig.sysbuild @@ -0,0 +1,76 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#### Radio core selection +config NRF_DEFAULT_IPC_RADIO + default y + +# Enable IEEE802.15.4 serialization to network core +config NETCORE_IPC_RADIO_IEEE802154 + default y if SOC_SERIES_NRF53X + +# Enable Bluetooth serialization to network core +config NETCORE_IPC_RADIO_BT_HCI_IPC + default y if SOC_SERIES_NRF53X + +#### Bootloader +choice BOOTLOADER + default BOOTLOADER_MCUBOOT +endchoice + +if BOOTLOADER_MCUBOOT + +#### DFU multi-image support +config DFU_MULTI_IMAGE_PACKAGE_BUILD + default y + +config DFU_MULTI_IMAGE_PACKAGE_APP + default y + +config PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY + default y + +#### DFU network core configuration +if SOC_SERIES_NRF53X + +config MCUBOOT_UPDATEABLE_IMAGES + default 2 + +choice MCUBOOT_MODE + default MCUBOOT_MODE_OVERWRITE_ONLY +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_RSA +endchoice + +config SECURE_BOOT_NETCORE + default y + +config NETCORE_APP_UPDATE + default y + +config DFU_MULTI_IMAGE_PACKAGE_NET + default y + +endif # SOC_SERIES_NRF53X +endif # BOOTLOADER_MCUBOOT + +#### Enable generating factory data +config MATTER_FACTORY_DATA_GENERATE + default y + +source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" diff --git a/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay b/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf52840dk_nrf52840_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay deleted file mode 100644 index f18e3e0cc16434..00000000000000 --- a/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay b/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay deleted file mode 100644 index 0728eff3db8377..00000000000000 --- a/examples/window-app/nrfconnect/child_image/mcuboot/boards/nrf5340dk_nrf5340_cpuapp_release.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/examples/window-app/nrfconnect/child_image/mcuboot/prj.conf b/examples/window-app/nrfconnect/child_image/mcuboot/prj.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/window-app/nrfconnect/child_image/mcuboot/prj.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/window-app/nrfconnect/child_image/mcuboot/prj_release.conf b/examples/window-app/nrfconnect/child_image/mcuboot/prj_release.conf deleted file mode 100644 index 287c7829c6a5cf..00000000000000 --- a/examples/window-app/nrfconnect/child_image/mcuboot/prj_release.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.mcuboot.defaults to set options common for all -# samples using mcuboot. This file should contain only options specific for this sample -# mcuboot configuration or overrides of default values. - -CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" - -# Bootloader size optimization -# Disable not used modules that cannot be set in Kconfig.mcuboot.defaults due to overriding -# in board files. -CONFIG_GPIO=n -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_USE_SEGGER_RTT=n diff --git a/examples/window-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf b/examples/window-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/window-app/nrfconnect/child_image/multiprotocol_rpmsg/prj.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/window-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf b/examples/window-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/window-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_no_dfu.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/window-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf b/examples/window-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf deleted file mode 100644 index f43614c64500d7..00000000000000 --- a/examples/window-app/nrfconnect/child_image/multiprotocol_rpmsg/prj_release.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This target uses Kconfig.multiprotocol_rpmsg.defaults to set options common for all -# samples using multiprotocol_rpmsg. This file should contain only options specific for this sample -# multiprotocol_rpmsg configuration or overrides of default values. - -# Disable not used modules that cannot be set in Kconfig.multiprotocol_rpmsg.defaults due to overriding -# in board files. - -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n diff --git a/examples/window-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml b/examples/window-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml new file mode 100644 index 00000000000000..ce42b39e55ee87 --- /dev/null +++ b/examples/window-app/nrfconnect/pm_static_nrf52840dk_nrf52840.yml @@ -0,0 +1,42 @@ +mcuboot: + address: 0x0 + size: 0x7000 + region: flash_primary +mcuboot_pad: + address: 0x7000 + size: 0x200 +app: + address: 0x7200 + size: 0xf3e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x7000 + size: 0xf4000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x7200 + size: 0xf3e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_secondary: + address: 0x0 + size: 0xf4000 + device: MX25R64 + region: external_flash +external_flash: + address: 0xf4000 + size: 0x70c000 + device: MX25R64 + region: external_flash diff --git a/examples/window-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml b/examples/window-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml new file mode 100644 index 00000000000000..ce42b39e55ee87 --- /dev/null +++ b/examples/window-app/nrfconnect/pm_static_nrf52840dk_nrf52840_release.yml @@ -0,0 +1,42 @@ +mcuboot: + address: 0x0 + size: 0x7000 + region: flash_primary +mcuboot_pad: + address: 0x7000 + size: 0x200 +app: + address: 0x7200 + size: 0xf3e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x7000 + size: 0xf4000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x7200 + size: 0xf3e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_secondary: + address: 0x0 + size: 0xf4000 + device: MX25R64 + region: external_flash +external_flash: + address: 0xf4000 + size: 0x70c000 + device: MX25R64 + region: external_flash diff --git a/examples/window-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml b/examples/window-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/window-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/window-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml b/examples/window-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml new file mode 100644 index 00000000000000..10e8680c363a53 --- /dev/null +++ b/examples/window-app/nrfconnect/pm_static_nrf5340dk_nrf5340_cpuapp_release.yml @@ -0,0 +1,56 @@ +mcuboot: + address: 0x0 + size: 0x8000 + region: flash_primary +mcuboot_pad: + address: 0x8000 + size: 0x200 +app: + address: 0x8200 + size: 0xf2e00 +mcuboot_primary: + orig_span: &id001 + - mcuboot_pad + - app + span: *id001 + address: 0x8000 + size: 0xf3000 + region: flash_primary +mcuboot_primary_app: + orig_span: &id002 + - app + span: *id002 + address: 0x8200 + size: 0xf2e00 +factory_data: + address: 0xfb000 + size: 0x1000 + region: flash_primary +settings_storage: + address: 0xfc000 + size: 0x4000 + region: flash_primary +mcuboot_primary_1: + address: 0x0 + size: 0x40000 + device: flash_ctrl + region: ram_flash +mcuboot_secondary: + address: 0x0 + size: 0xf3000 + device: MX25R64 + region: external_flash +mcuboot_secondary_1: + address: 0xf3000 + size: 0x40000 + device: MX25R64 + region: external_flash +external_flash: + address: 0x133000 + size: 0x6CD000 + device: MX25R64 + region: external_flash +pcd_sram: + address: 0x20000000 + size: 0x2000 + region: sram_primary diff --git a/examples/window-app/nrfconnect/prj.conf b/examples/window-app/nrfconnect/prj.conf index 392e84ee268a54..64d257fe211082 100644 --- a/examples/window-app/nrfconnect/prj.conf +++ b/examples/window-app/nrfconnect/prj.conf @@ -21,6 +21,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32784 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y diff --git a/examples/window-app/nrfconnect/prj_no_dfu.conf b/examples/window-app/nrfconnect/prj_no_dfu.conf deleted file mode 100644 index 570011cc9ef6da..00000000000000 --- a/examples/window-app/nrfconnect/prj_no_dfu.conf +++ /dev/null @@ -1,62 +0,0 @@ -# -# Copyright (c) 2022 Project CHIP Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# This sample uses Kconfig.defaults to set options common for all -# samples. This file should contain only options specific for this sample -# or overrides of default values. - -# Enable CHIP -CONFIG_CHIP=y -CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" -# 32784 == 0x8010 (example window-app) -CONFIG_CHIP_DEVICE_PRODUCT_ID=32784 -CONFIG_STD_CPP17=y - -# Add support for LEDs and buttons on Nordic development kits -CONFIG_DK_LIBRARY=y -CONFIG_PWM=y - -# PWM support -CONFIG_PWM=y - -# OpenThread configs -CONFIG_OPENTHREAD_NORDIC_LIBRARY_MTD=y -CONFIG_OPENTHREAD_MTD=y -CONFIG_OPENTHREAD_FTD=n -CONFIG_CHIP_ENABLE_ICD_SUPPORT=y -CONFIG_CHIP_THREAD_SSED=y -CONFIG_CHIP_ICD_SLOW_POLL_INTERVAL=500 -CONFIG_CHIP_ICD_FAST_POLLING_INTERVAL=500 - -# Bluetooth Low Energy configuration -CONFIG_BT_DEVICE_NAME="MatterWinCov" - -# Stack size settings -CONFIG_IEEE802154_NRF5_RX_STACK_SIZE=1024 - -# Other settings -CONFIG_THREAD_NAME=y -CONFIG_MPU_STACK_GUARD=y -CONFIG_RESET_ON_FATAL_ERROR=n - -# Reduce application size -CONFIG_USE_SEGGER_RTT=n - -# Disable Matter OTA DFU -CONFIG_CHIP_OTA_REQUESTOR=n - -# Disable QSPI NOR -CONFIG_CHIP_QSPI_NOR=n diff --git a/examples/window-app/nrfconnect/prj_release.conf b/examples/window-app/nrfconnect/prj_release.conf index e7859efaa81de6..b15a68ea3caa8b 100644 --- a/examples/window-app/nrfconnect/prj_release.conf +++ b/examples/window-app/nrfconnect/prj_release.conf @@ -25,6 +25,13 @@ CONFIG_CHIP_PROJECT_CONFIG="main/include/CHIPProjectConfig.h" CONFIG_CHIP_DEVICE_PRODUCT_ID=32784 CONFIG_STD_CPP17=y +# Enable Matter pairing automatically on application start. +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y + +# Enable Matter extended announcement and increase duration to 1 hour. +CONFIG_CHIP_BLE_EXT_ADVERTISING=y +CONFIG_CHIP_BLE_ADVERTISING_DURATION=60 + # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y CONFIG_PWM=y diff --git a/examples/window-app/nrfconnect/sysbuild.conf b/examples/window-app/nrfconnect/sysbuild.conf new file mode 100644 index 00000000000000..d0c5eee2b93c39 --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild.conf @@ -0,0 +1,17 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y diff --git a/examples/window-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf b/examples/window-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf new file mode 100644 index 00000000000000..8540585e53358b --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild/ipc_radio/boards/nrf5340dk_nrf5340_cpunet.conf @@ -0,0 +1,58 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Disable serial and UART interface. +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +# RAM usage configuration +CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# BT configuration +CONFIG_BT=y +CONFIG_BT_HCI_RAW=y +CONFIG_BT_MAX_CONN=1 +CONFIG_BT_CTLR_ASSERT_HANDLER=y +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_CENTRAL=n +CONFIG_BT_BUF_ACL_RX_SIZE=502 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 +CONFIG_BT_CTLR_PHY_2M=n + +# 802.15.4 configuration +CONFIG_NRF_802154_SER_RADIO=y +CONFIG_NRF_802154_ENCRYPTION=y +CONFIG_NRF_RTC_TIMER_USER_CHAN_COUNT=2 + +# Debug and assert configuration +CONFIG_ASSERT=y +CONFIG_DEBUG_INFO=y +CONFIG_EXCEPTION_STACK_TRACE=y +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_REBOOT=n + +# IPC +CONFIG_MBOX=y +CONFIG_IPC_SERVICE=y + +# ipc_radio +CONFIG_IPC_RADIO_BT=y +CONFIG_IPC_RADIO_BT_HCI_IPC=y +CONFIG_IPC_RADIO_802154=y diff --git a/examples/window-app/nrfconnect/sysbuild/ipc_radio/prj.conf b/examples/window-app/nrfconnect/sysbuild/ipc_radio/prj.conf new file mode 100644 index 00000000000000..8906415dda4fc7 --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild/ipc_radio/prj.conf @@ -0,0 +1,21 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=n diff --git a/examples/window-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf b/examples/window-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf new file mode 100644 index 00000000000000..7f92a51630cce0 --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild/ipc_radio/prj_release.conf @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_LOG=n + +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/examples/window-app/nrfconnect/sysbuild/mcuboot/app.overlay b/examples/window-app/nrfconnect/sysbuild/mcuboot/app.overlay new file mode 100644 index 00000000000000..74d3dfbfd22f30 --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild/mcuboot/app.overlay @@ -0,0 +1,5 @@ +/ { + chosen { + zephyr,code-partition = &boot_partition; + }; +}; diff --git a/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf b/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf new file mode 100644 index 00000000000000..50610217c762b5 --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.conf @@ -0,0 +1,19 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 diff --git a/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay b/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf52840dk_nrf52840.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf b/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf new file mode 100644 index 00000000000000..2d86fe6442dd39 --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_NORDIC_QSPI_NOR=y +CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 +CONFIG_NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE=16 + +# The following configurations are required to support simultaneous multi image update +CONFIG_PCD_APP=y +CONFIG_UPDATEABLE_IMAGE_NUMBER=2 + +CONFIG_BOOT_SWAP_USING_MOVE=n +# Multi-image updates do not support image swapping yet. +CONFIG_BOOT_UPGRADE_ONLY=y + +# The network core cannot access external flash directly. The flash simulator must be used to +# provide a memory region that is used to forward the new firmware to the network core. +CONFIG_FLASH_SIMULATOR=y +CONFIG_FLASH_SIMULATOR_DOUBLE_WRITES=y +CONFIG_FLASH_SIMULATOR_STATS=n + +CONFIG_ZCBOR=y diff --git a/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay new file mode 100644 index 00000000000000..054f04712058a3 --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild/mcuboot/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -0,0 +1,24 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/ { + chosen { + zephyr,code-partition = &boot_partition; + nordic,pm-ext-flash = &mx25r64; + }; +}; diff --git a/examples/window-app/nrfconnect/sysbuild/mcuboot/prj.conf b/examples/window-app/nrfconnect/sysbuild/mcuboot/prj.conf new file mode 100644 index 00000000000000..3bcb12fe7b8d25 --- /dev/null +++ b/examples/window-app/nrfconnect/sysbuild/mcuboot/prj.conf @@ -0,0 +1,49 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +CONFIG_MAIN_STACK_SIZE=10240 + +CONFIG_BOOT_SWAP_SAVE_ENCTLV=n +CONFIG_BOOT_BOOTSTRAP=n +CONFIG_PM=n + +CONFIG_FLASH=y +CONFIG_FPROTECT=y + +CONFIG_MBEDTLS_CFG_FILE="mcuboot-mbedtls-cfg.h" + +# Use minimal C library instead of the Picolib +CONFIG_MINIMAL_LIBC=y + +# Bootloader size optimization +CONFIG_CONSOLE=n +CONFIG_SERIAL=n +CONFIG_UART_CONSOLE=n +CONFIG_USE_SEGGER_RTT=n +CONFIG_GPIO=n + +CONFIG_BOOT_MAX_IMG_SECTORS=256 + +CONFIG_LOG=n +CONFIG_CONSOLE_HANDLER=n +CONFIG_BOOT_BANNER=n +CONFIG_NCS_BOOT_BANNER=n +CONFIG_TIMESLICING=n +CONFIG_RESET_ON_FATAL_ERROR=n +CONFIG_MULTITHREADING=n +CONFIG_TICKLESS_KERNEL=n +CONFIG_TIMEOUT_64BIT=n +CONFIG_NRF_ENABLE_ICACHE=n diff --git a/integrations/cloudbuild/chef.yaml b/integrations/cloudbuild/chef.yaml index 2795c6b5095cd5..e9ce65dfd45723 100644 --- a/integrations/cloudbuild/chef.yaml +++ b/integrations/cloudbuild/chef.yaml @@ -1,5 +1,5 @@ steps: - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" entrypoint: "bash" args: - "-c" @@ -7,7 +7,7 @@ steps: git config --global --add safe.directory "*" python scripts/checkout_submodules.py --shallow --recursive --platform esp32 nrfconnect silabs linux android id: Submodules - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" # NOTE: silabs boostrap is NOT done with the rest as it requests a conflicting # jinja2 version (asks for 3.1.3 when constraints.txt asks for 3.0.3) env: @@ -23,7 +23,7 @@ steps: - name: pwenv path: /pwenv timeout: 900s - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" env: - PW_ENVIRONMENT_ROOT=/pwenv args: @@ -38,7 +38,7 @@ steps: - name: pwenv path: /pwenv - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" env: - PW_ENVIRONMENT_ROOT=/pwenv args: diff --git a/integrations/cloudbuild/smoke-test.yaml b/integrations/cloudbuild/smoke-test.yaml index 4c02dc8718c590..07a24892ba1863 100644 --- a/integrations/cloudbuild/smoke-test.yaml +++ b/integrations/cloudbuild/smoke-test.yaml @@ -1,5 +1,5 @@ steps: - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" entrypoint: "bash" args: - "-c" @@ -7,7 +7,7 @@ steps: git config --global --add safe.directory "*" python scripts/checkout_submodules.py --shallow --recursive --platform esp32 nrfconnect silabs linux android id: Submodules - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" # NOTE: silabs boostrap is NOT done with the rest as it requests a conflicting # jinja2 version (asks for 3.1.3 when constraints.txt asks for 3.0.3) env: @@ -24,7 +24,7 @@ steps: path: /pwenv timeout: 900s - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" id: ESP32 env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -45,7 +45,7 @@ steps: volumes: - name: pwenv path: /pwenv - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" id: NRFConnect env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -66,7 +66,7 @@ steps: - name: pwenv path: /pwenv - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" id: EFR32 env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -88,7 +88,7 @@ steps: - name: pwenv path: /pwenv - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" id: Linux env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -141,7 +141,7 @@ steps: - name: pwenv path: /pwenv - - name: "ghcr.io/project-chip/chip-build-vscode:54" + - name: "ghcr.io/project-chip/chip-build-vscode:65" id: Android env: - PW_ENVIRONMENT_ROOT=/pwenv diff --git a/scripts/build/builders/nrf.py b/scripts/build/builders/nrf.py index d584490589c662..6f650d23c7656a 100644 --- a/scripts/build/builders/nrf.py +++ b/scripts/build/builders/nrf.py @@ -184,10 +184,6 @@ def generate(self): if self.enable_rpcs: flags.append("-DOVERLAY_CONFIG=rpc.overlay") - if (self.board == NrfBoard.NRF52840DONGLE and - self.app != NrfApp.ALL_CLUSTERS and self.app != NrfApp.ALL_CLUSTERS_MINIMAL): - flags.append("-DCONF_FILE=prj_no_dfu.conf") - if self.options.pregen_dir: flags.append(f"-DCHIP_CODEGEN_PREGEN_DIR={shlex.quote(self.options.pregen_dir)}") @@ -201,7 +197,7 @@ def generate(self): export ZEPHYR_SDK_INSTALL_DIR={zephyr_sdk_dir};''' cmd += ''' -west build --cmake-only -d {outdir} -b {board} {sourcedir}{build_flags} +west build --cmake-only -d {outdir} -b {board} --sysbuild {sourcedir}{build_flags} '''.format( outdir=shlex.quote(self.output_dir), board=self.board.GnArgName(), @@ -228,16 +224,16 @@ def _build(self): def _bundle(self): logging.info(f'Generating flashbundle at {self.output_dir}') - self._Execute(['ninja', '-C', self.output_dir, 'flashing_script'], + self._Execute(['ninja', '-C', os.path.join(self.output_dir, 'nrfconnect'), 'flashing_script'], title='Generating flashable files of ' + self.identifier) def build_outputs(self): yield BuilderOutput( - os.path.join(self.output_dir, 'zephyr', 'zephyr.elf'), + os.path.join(self.output_dir, 'nrfconnect', 'zephyr', 'zephyr.elf'), '%s.elf' % self.app.AppNamePrefix()) if self.options.enable_link_map_file: yield BuilderOutput( - os.path.join(self.output_dir, 'zephyr', 'zephyr.map'), + os.path.join(self.output_dir, 'nrfconnect', 'zephyr', 'zephyr.map'), '%s.map' % self.app.AppNamePrefix()) def bundle_outputs(self): diff --git a/scripts/build/testdata/dry_run_nrf-nrf52840dk-pump.txt b/scripts/build/testdata/dry_run_nrf-nrf52840dk-pump.txt index 500826f734eee9..91865370312d97 100644 --- a/scripts/build/testdata/dry_run_nrf-nrf52840dk-pump.txt +++ b/scripts/build/testdata/dry_run_nrf-nrf52840dk-pump.txt @@ -4,7 +4,7 @@ cd "{root}" # Generating nrf-nrf52840dk-pump bash -c 'source "$ZEPHYR_BASE/zephyr-env.sh"; export ZEPHYR_TOOLCHAIN_VARIANT=zephyr; -west build --cmake-only -d {out}/nrf-nrf52840dk-pump -b nrf52840dk_nrf52840 {root}/examples/pump-app/nrfconnect' +west build --cmake-only -d {out}/nrf-nrf52840dk-pump -b nrf52840dk_nrf52840 --sysbuild {root}/examples/pump-app/nrfconnect' # Building nrf-nrf52840dk-pump ninja -C {out}/nrf-nrf52840dk-pump diff --git a/scripts/examples/gn_psoc6_example.sh b/scripts/examples/gn_psoc6_example.sh index 04f47e6b2f0b5a..e3ae875b8e27a4 100755 --- a/scripts/examples/gn_psoc6_example.sh +++ b/scripts/examples/gn_psoc6_example.sh @@ -17,7 +17,7 @@ # set -e -# Build script for GN P6 examples GitHub workflow. +# Build script for GN PSOC6 examples GitHub workflow. source "$(dirname "$0")/../../scripts/activate.sh" # Install required software diff --git a/scripts/examples/nrfconnect_example.sh b/scripts/examples/nrfconnect_example.sh index 0a7c46d7e9baef..67223afb2a092e 100755 --- a/scripts/examples/nrfconnect_example.sh +++ b/scripts/examples/nrfconnect_example.sh @@ -51,4 +51,4 @@ fi export CCACHE_BASEDIR="$PWD/$APP/nrfconnect" env -west build -p auto -b "$BOARD" -d "$APP/nrfconnect/build" "$APP/nrfconnect" -- "${COMMON_CI_FLAGS[@]}" "$@" +west build -p auto -b "$BOARD" -d "$APP/nrfconnect/build" "$APP/nrfconnect" --sysbuild -- "${COMMON_CI_FLAGS[@]}" "$@" diff --git a/scripts/flashing/psoc6_firmware_utils.py b/scripts/flashing/psoc6_firmware_utils.py index aeef78030a1d74..3e3639b49d3f47 100755 --- a/scripts/flashing/psoc6_firmware_utils.py +++ b/scripts/flashing/psoc6_firmware_utils.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# Copyright (c) 2021 Project CHIP Authors +# Copyright (c) 2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -42,38 +42,24 @@ --skip_reset, --skip-reset Do not reset device after flashing """ - +import os +import platform as plt +import subprocess import sys -from shutil import which import firmware_utils # Additional options that can be use to configure an `Flasher` # object (as dictionary keys) and/or passed as command line options. -P6_OPTIONS = { +PSOC6_OPTIONS = { # Configuration options define properties used in flashing operations. 'configuration': { - 'make': { - 'help': 'File name of the make executable', + 'openocd': { + 'help': 'File name of the hex image', 'default': None, 'argparse': { 'metavar': 'FILE', }, - 'command': [ - "make", - "-C", - {'option': 'sdk_path'}, - ['TARGET={device}'], - ['CY_OPENOCD_PROGRAM_IMG=../../../../{application}'], - {'option': 'mtb_target'} - ], - 'verify': ['{make}', '--version'], - 'error': - """\ - Unable to execute {make}. - - Please ensure that make is installed. - """, }, 'device': { 'help': 'Device family or platform to target', @@ -94,31 +80,100 @@ }, } +# Global variables +FW_LOADER = "fw-loader" +KIT_PROG_STR = "KitProg3 CMSIS-DAP" + +# General utility functions + + +def _get_board_serial_number(tools_path): + """Obtains the MCU serial number""" + board_ser_num = None + # if system is windows, add the .exe extension + exe = FW_LOADER + (".exe" if plt.system() == "Windows" else "") + fw_loader_exe = os.path.join(tools_path, FW_LOADER, "bin", exe) + try: + # runs fw-loader --device-list to get the connected device info + output = subprocess.run([fw_loader_exe, "--device-list"], check=True, capture_output=True).stdout.decode().split("\n") + except subprocess.SubprocessError: + # Do not error here, during matter build this code is interpreted by the python wrapper + # If a device is not connected in the build stage it will complain and generate an error + return None + for line in output: + # look for a line like: Info: Connected - KitProg3 CMSIS-DAP BULK-0F03131601051400 + if KIT_PROG_STR in line: + board_ser_num = line.split("-")[-1].strip() + break + if board_ser_num is None: + raise Exception("Could not detect CMSIS DAP device.") + return board_ser_num + + +def _find_tools_path(): + """Obtains the path to the latest ModusToolbox tools package""" + tools_version = "" + tools_path = os.environ.get("CY_TOOLS_PATHS", None) + # If `CY_TOOLS_PATHS` env variable is set, return that value + if tools_path is not None: + return tools_path + path_to_search = "/Applications/ModusToolbox/" if plt.system() == "Darwin" else os.path.join(os.path.expanduser("~"), "ModusToolbox") + if not os.path.exists(path_to_search): + raise Exception( + "Could not find ModusToolbox installation. Please install ModusToolbox and export CY_TOOLS_PATHS=") + dirs = os.listdir(path_to_search) + for directory in dirs: + # find the latest version of ModusToolbox that is installed + if directory.startswith("tools_"): + if directory > tools_version: + tools_version = directory + return os.path.join(path_to_search, tools_version) + class Flasher(firmware_utils.Flasher): """Manage PSoC6 flashing.""" def __init__(self, **options): super().__init__(platform='PSOC6', module=__name__, **options) - self.define_options(P6_OPTIONS) + self.define_options(PSOC6_OPTIONS) - def erase(self): + def verify(self, image): raise NotImplementedError() - def verify(self, image): + def reset(self): raise NotImplementedError() + def erase(self): + tools_path = _find_tools_path() + open_ocd_dir = os.path.join(tools_path, "openocd", "bin", "openocd") + return self.run_tool( + 'openocd', + [ + "-s", f"{open_ocd_dir}/scripts", + "-c", "source [find interface/kitprog3.cfg]", + "-c", "source [find target/psoc6_2m.cfg]", + "-c", "init; reset init", + "-c", "flash erase_sector 0 0 last; shutdown", + ], + name='Erase device') + def flash(self, image): """Flash image.""" + tools_path = _find_tools_path() + ser_num = _get_board_serial_number(tools_path) + open_ocd_dir = os.path.join(tools_path, "openocd", "bin", "openocd") return self.run_tool( - 'make', - [], - options={"mtb_target": "qprogram", "application": image}, + 'openocd', + [ + "-s", f"{open_ocd_dir}/scripts", + "-c", "source [find interface/kitprog3.cfg]", + "-c", "source [find target/psoc6_2m.cfg]", + "-c", f"adapter serial {ser_num}", + "-c", "init; reset init", + "-c", f"program {image} verify reset exit", + ], name='Flash') - def reset(self): - raise NotImplementedError() - def actions(self): """Perform actions on the device according to self.option.""" self.log(3, 'Options:', self.option) @@ -126,26 +181,27 @@ def actions(self): if self.option.erase: if self.erase().err: return self - - if self.option.application: + elif self.option.reset: + if self.reset().err: + return self + elif self.option.application: application = self.option.application if self.flash(application).err: return self if self.option.verify_application: if self.verify(application).err: return self - - if self.option.reset: - if self.reset().err: - return self - return self def locate_tool(self, tool): - if tool == "make": - return which("make") - else: - return tool + """Gets the path to infineon shipped openocd asset""" + tools_path = _find_tools_path() + if tools_path is None: + raise Exception( + "CY_TOOLS_PATHS environment variable is not set. Please set it to the location of your ModusToolbox tools directory.") + if tool != "openocd": + raise Exception(f"Tool '{tool}' is not supported for flashing PSoC6. Please use openocd.") + return os.path.join(tools_path, "openocd", "bin", "openocd") if __name__ == '__main__': diff --git a/scripts/setup/constraints.txt b/scripts/setup/constraints.txt index 49aff90df0715c..a5af1b462fb335 100644 --- a/scripts/setup/constraints.txt +++ b/scripts/setup/constraints.txt @@ -128,7 +128,7 @@ mobly==1.12.1 # via -r requirements.all.txt msgpack==1.0.4 # via cachecontrol -mypy==0.971 +mypy==1.10.1 # via -r requirements.all.txt mypy-extensions==1.0.0 # via mypy @@ -261,7 +261,7 @@ types-protobuf==4.24.0.2 # via # -r requirements.all.txt # mypy-protobuf -typing-extensions==4.5.0 +typing-extensions==4.6.0 # via mypy urllib3==1.26.14 # via requests diff --git a/scripts/setup/requirements.all.txt b/scripts/setup/requirements.all.txt index 3266eaf8504572..346abfa3936888 100644 --- a/scripts/setup/requirements.all.txt +++ b/scripts/setup/requirements.all.txt @@ -38,7 +38,7 @@ appdirs coloredlogs watchdog build==0.8.0 -mypy==0.971 +mypy==1.10.1 mypy-protobuf==3.5.0 protobuf==4.24.4 types-protobuf==4.24.0.2 @@ -50,4 +50,3 @@ colorama # update tornado for pw_watch tornado - diff --git a/scripts/setup/requirements.nrfconnect.txt b/scripts/setup/requirements.nrfconnect.txt index e2ada120811850..6785f2114a10e7 100644 --- a/scripts/setup/requirements.nrfconnect.txt +++ b/scripts/setup/requirements.nrfconnect.txt @@ -5,3 +5,4 @@ cbor2>=5.4.3 ecdsa>=0.18.0 qrcode==7.4.2 python_stdnum==1.18 +typing-extensions>=4.6.0 diff --git a/scripts/tests/cirque_tests.sh b/scripts/tests/cirque_tests.sh index b6fa0eb7f64e56..a8be290f6c7e2c 100755 --- a/scripts/tests/cirque_tests.sh +++ b/scripts/tests/cirque_tests.sh @@ -44,6 +44,7 @@ CIRQUE_TESTS=( "MobileDeviceTest" "CommissioningTest" "InteractionModelTest" + "IcdWaitForActiveTest" "SplitCommissioningTest" "CommissioningFailureTest" "CommissioningFailureOnReportTest" diff --git a/scripts/tests/linux/log_line_processing.py b/scripts/tests/linux/log_line_processing.py new file mode 100644 index 00000000000000..e7624c12d5f2f2 --- /dev/null +++ b/scripts/tests/linux/log_line_processing.py @@ -0,0 +1,130 @@ +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +import queue +import select +import subprocess +import threading +import time +from typing import List + + +class ProcessOutputCapture: + """ + Captures stdout from a process and redirects such stdout to a given file. + + The capture serves several purposes as opposed to just reading stdout: + - as data is received, it will get written to a separate file + - data is accumulated in memory for later processing (does not starve/block + the process stdout) + - provides read timeouts for incoming data + + Use as part of a resource management block like: + + with ProcessOutputCapture("test.sh", "logs.txt") as p: + p.send_to_program("input\n") + + while True: + l = p.next_output_line(timeout_sec = 1) + if not l: + break + """ + + def __init__(self, command: List[str], output_path: str): + # in/out/err are pipes + self.command = command + self.output_path = output_path + self.output_lines = queue.Queue() + self.process = None + self.io_thread = None + self.done = False + + def _io_thread(self): + """Reads process lines and writes them to an output file. + + It also sends the output lines to `self.output_lines` for later + reading + """ + out_wait = select.poll() + out_wait.register(self.process.stdout, select.POLLIN | select.POLLHUP) + + err_wait = select.poll() + err_wait.register(self.process.stderr, select.POLLIN | select.POLLHUP) + + with open(self.output_path, "wt") as f: + f.write("PROCESS START: %s\n" % time.ctime()) + while not self.done: + changes = out_wait.poll(0.1) + if changes: + out_line = self.process.stdout.readline() + if not out_line: + # stdout closed (otherwise readline should have at least \n) + continue + f.write(out_line) + self.output_lines.put(out_line) + + changes = err_wait.poll(0) + if changes: + err_line = self.process.stderr.readline() + if not err_line: + # stderr closed (otherwise readline should have at least \n) + continue + f.write(f"!!STDERR!! : {err_line}") + f.write("PROCESS END: %s\n" % time.ctime()) + + def __enter__(self): + self.done = False + self.process = subprocess.Popen( + self.command, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + ) + self.io_thread = threading.Thread(target=self._io_thread) + self.io_thread.start() + return self + + def __exit__(self, exception_type, exception_value, traceback): + self.done = True + if self.process: + self.process.terminate() + self.process.wait() + + if self.io_thread: + self.io_thread.join() + + if exception_value: + # When we fail because of an exception, report the entire log content + logging.error(f"-------- START: LOG DUMP FOR {self.command!r} -----") + with open(self.output_path, "rt") as f: + for output_line in f.readlines(): + logging.error(output_line.strip()) + logging.error(f"-------- END: LOG DUMP FOR {self.command!r} -----") + + def next_output_line(self, timeout_sec=None): + """Fetch an item from the output queue, potentially with a timeout.""" + try: + return self.output_lines.get(timeout=timeout_sec) + except queue.Empty: + return None + + def send_to_program(self, input_cmd): + """Sends the given input command string to the program. + + NOTE: remember to append a `\n` for terminal applications + """ + self.process.stdin.write(input_cmd) + self.process.stdin.flush() diff --git a/scripts/tests/run_python_test.py b/scripts/tests/run_python_test.py index 7d7500c10f5a11..91ee73e00d0e8d 100755 --- a/scripts/tests/run_python_test.py +++ b/scripts/tests/run_python_test.py @@ -169,7 +169,8 @@ def main_impl(app: str, factoryreset: bool, factoryreset_app_only: bool, app_arg app_args = [app] + shlex.split(app_args) logging.info(f"Execute: {app_args}") app_process = subprocess.Popen( - app_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=0) + app_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, bufsize=0) + app_process.stdin.close() app_pid = app_process.pid DumpProgramOutputToQueue( log_cooking_threads, Fore.GREEN + "APP " + Style.RESET_ALL, app_process, stream_output, log_queue) @@ -192,7 +193,8 @@ def main_impl(app: str, factoryreset: bool, factoryreset_app_only: bool, app_arg logging.info(f"Execute: {final_script_command}") test_script_process = subprocess.Popen( - final_script_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + final_script_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) + test_script_process.stdin.close() DumpProgramOutputToQueue(log_cooking_threads, Fore.GREEN + "TEST" + Style.RESET_ALL, test_script_process, stream_output, log_queue) diff --git a/scripts/tests/run_tv_casting_test.py b/scripts/tests/run_tv_casting_test.py old mode 100644 new mode 100755 index c5cc34dd052eb3..7b530c7a4a1780 --- a/scripts/tests/run_tv_casting_test.py +++ b/scripts/tests/run_tv_casting_test.py @@ -18,13 +18,14 @@ import logging import os import signal -import subprocess import sys import tempfile import time -from typing import List, TextIO, Tuple +from dataclasses import dataclass +from typing import List, Optional import click +from linux.log_line_processing import ProcessOutputCapture from linux.tv_casting_test_sequence_utils import App, Sequence, Step from linux.tv_casting_test_sequences import START_APP, STOP_APP @@ -35,108 +36,99 @@ a deterministic order. If these lines are not found, it indicates an issue with the casting experience. """ -# Configure logging format. -logging.basicConfig(level=logging.INFO, format='%(levelname)s - %(message)s') -# File names of logs for the Linux tv-casting-app and the Linux tv-app. -LINUX_TV_APP_LOGS = 'Linux-tv-app-logs.txt' -LINUX_TV_CASTING_APP_LOGS = 'Linux-tv-casting-app-logs.txt' +@dataclass +class RunningProcesses: + tv_casting: ProcessOutputCapture = None + tv_app: ProcessOutputCapture = None -class ProcessManager: - """A context manager for managing subprocesses. +# Configure logging format. +logging.basicConfig(level=logging.INFO, format="%(levelname)s - %(message)s") + +# File names of logs for the Linux tv-casting-app and the Linux tv-app. +LINUX_TV_APP_LOGS = "Linux-tv-app-logs.txt" +LINUX_TV_CASTING_APP_LOGS = "Linux-tv-casting-app-logs.txt" - This class provides a context manager for safely starting and stopping a subprocess. - """ - def __init__(self, command: List[str], stdin, stdout, stderr): - self.command = command - self.stdin = stdin - self.stdout = stdout - self.stderr = stderr +class TestStepException(Exception): + """Thrown when a test fails, contains information about the test step that faied""" - def __enter__(self): - self.process = subprocess.Popen(self.command, stdin=self.stdin, stdout=self.stdout, stderr=self.stderr, text=True) - return self.process + def __init__(self, message, sequence_name: str, step: Optional[Step]): + super().__init__(message) + self.sequence_name = sequence_name + self.step = step - def __exit__(self, exception_type, exception_value, traceback): - self.process.terminate() - self.process.wait() + logging.error("EXCEPTION at %s/%r: %s", sequence_name, step, message) def remove_cached_files(cached_file_pattern: str): """Remove any cached files that match the provided pattern.""" - cached_files = glob.glob(cached_file_pattern) # Returns a list of paths that match the pattern. + cached_files = glob.glob( + cached_file_pattern + ) # Returns a list of paths that match the pattern. for cached_file in cached_files: try: os.remove(cached_file) except OSError as e: - logging.error(f'Failed to remove cached file `{cached_file}` with error: `{e.strerror}`') + logging.error( + f"Failed to remove cached file `{cached_file}` with error: `{e.strerror}`" + ) raise # Re-raise the OSError to propagate it up. -def dump_temporary_logs_to_console(log_file_path: str): - """Dump log file to the console; log file will be removed once the function exits.""" - """Write the entire content of `log_file_path` to the console.""" - print(f'\nDumping logs from: {log_file_path}') - - with open(log_file_path, 'r') as file: - for line in file: - print(line.rstrip()) - - -def handle_casting_failure(test_sequence_name: str, log_file_paths: List[str]): - """Log failure of validation of test sequence as error, dump log files to console, exit on error.""" - logging.error(f'{test_sequence_name} - Validation of test sequence failed.') - - for log_file_path in log_file_paths: - try: - dump_temporary_logs_to_console(log_file_path) - except Exception as e: - logging.exception(f'{test_sequence_name} - Failed to dump {log_file_path}: {e}') +def stop_app(test_sequence_name: str, app_name: str, app: ProcessOutputCapture): + """Stop the given `app` subprocess.""" - sys.exit(1) + app.process.terminate() + app_exit_code = app.process.wait() + if app.process.poll() is None: + raise TestStepException( + f"{test_sequence_name}: Failed to stop running {app_name}. Process is still running.", + test_sequence_name, + None, + ) -def stop_app(test_sequence_name: str, app_name: str, app: subprocess.Popen) -> bool: - """Stop the given `app` subprocess.""" + if app_exit_code >= 0: + raise TestStepException( + f"{test_sequence_name}: {app_name} exited with unexpected exit code {app_exit_code}.", + test_sequence_name, + None, + ) - app.terminate() - app_exit_code = app.wait() - - if app.poll() is None: - logging.error(f'{test_sequence_name}: Failed to stop running {app_name}. Process is still running.') - else: - if app_exit_code < 0: - signal_number = -app_exit_code - if signal_number == signal.SIGTERM.value: - logging.info(f'{test_sequence_name}: {app_name} stopped by {signal_number} (SIGTERM) signal.') - return True - else: - logging.error( - f'{test_sequence_name}: {app_name} stopped by signal {signal_number} instead of {signal.SIGTERM.value} (SIGTERM).') - else: - logging.error(f'{test_sequence_name}: {app_name} exited with unexpected exit code {app_exit_code}.') + signal_number = -app_exit_code + if signal_number != signal.SIGTERM.value: + raise TestStepException( + f"{test_sequence_name}: {app_name} stopped by signal {signal_number} instead of {signal.SIGTERM.value} (SIGTERM).", + test_sequence_name, + None, + ) - return False + logging.info( + f"{test_sequence_name}: {app_name} stopped by {signal_number} (SIGTERM) signal." + ) def parse_output_msg_in_subprocess( - tv_casting_app_info: Tuple[subprocess.Popen, TextIO], - tv_app_info: Tuple[subprocess.Popen, TextIO], - log_paths: List[str], - test_sequence_name: str, - test_sequence_step: Step -) -> bool: + processes: RunningProcesses, test_sequence_name: str, test_sequence_step: Step +): """Parse the output of a given `app` subprocess and validate its output against the expected `output_msg` in the given `Step`.""" if not test_sequence_step.output_msg: - logging.error(f'{test_sequence_name} - No output message provided in the test sequence step.') - return False - - app_subprocess, app_log_file = (tv_casting_app_info if test_sequence_step.app == App.TV_CASTING_APP else tv_app_info) + raise TestStepException( + f"{test_sequence_name} - No output message provided in the test sequence step.", + test_sequence_name, + test_sequence_step, + ) + + app_subprocess = ( + processes.tv_casting + if test_sequence_step.app == App.TV_CASTING_APP + else processes.tv_app + ) start_wait_time = time.time() msg_block = [] @@ -144,115 +136,106 @@ def parse_output_msg_in_subprocess( current_index = 0 while current_index < len(test_sequence_step.output_msg): # Check if we exceeded the maximum wait time to parse for the output string(s). - if time.time() - start_wait_time > test_sequence_step.timeout_sec: - logging.error( - f'{test_sequence_name} - Did not find the expected output string(s) in the {test_sequence_step.app.value} subprocess within the timeout: {test_sequence_step.output_msg}') - return False - - output_line = app_subprocess.stdout.readline() + max_wait_time = start_wait_time + test_sequence_step.timeout_sec - time.time() + if max_wait_time < 0: + raise TestStepException( + f"{test_sequence_name} - Did not find the expected output string(s) in the {test_sequence_step.app.value} subprocess within the timeout: {test_sequence_step.output_msg}", + test_sequence_name, + test_sequence_step, + ) + output_line = app_subprocess.next_output_line(max_wait_time) if output_line: - app_log_file.write(output_line) - app_log_file.flush() - - if (test_sequence_step.output_msg[current_index] in output_line): - msg_block.append(output_line.rstrip('\n')) + if test_sequence_step.output_msg[current_index] in output_line: + msg_block.append(output_line.rstrip("\n")) current_index += 1 elif msg_block: - msg_block.append(output_line.rstrip('\n')) - if (test_sequence_step.output_msg[0] in output_line): + msg_block.append(output_line.rstrip("\n")) + if test_sequence_step.output_msg[0] in output_line: msg_block.clear() - msg_block.append(output_line.rstrip('\n')) + msg_block.append(output_line.rstrip("\n")) current_index = 1 # Sanity check that `Discovered Commissioner #0` is the valid commissioner. - elif 'Discovered Commissioner #' in output_line: - logging.error(f'{test_sequence_name} - The valid discovered commissioner should be `Discovered Commissioner #0`.') - handle_casting_failure(test_sequence_name, log_paths) + elif "Discovered Commissioner #" in output_line: + raise TestStepException( + f"{test_sequence_name} - The valid discovered commissioner should be `Discovered Commissioner #0`.", + test_sequence_name, + test_sequence_step, + ) if current_index == len(test_sequence_step.output_msg): - logging.info(f'{test_sequence_name} - Found the expected output string(s) in the {test_sequence_step.app.value} subprocess:') + logging.info( + f"{test_sequence_name} - Found the expected output string(s) in the {test_sequence_step.app.value} subprocess:" + ) for line in msg_block: - logging.info(f'{test_sequence_name} - {line}') + logging.info(f"{test_sequence_name} - {line}") - return True + # successful completion + return + + raise TestStepException("Unexpected exit", test_sequence_name, test_sequence_step) def send_input_cmd_to_subprocess( - tv_casting_app_info: Tuple[subprocess.Popen, TextIO], - tv_app_info: Tuple[subprocess.Popen, TextIO], + processes: RunningProcesses, test_sequence_name: str, - test_sequence_step: Step -) -> bool: + test_sequence_step: Step, +): """Send a given input command (`input_cmd`) from the `Step` to its given `app` subprocess.""" if not test_sequence_step.input_cmd: - logging.error(f'{test_sequence_name} - No input command provided in the test sequence step.') - return False - - app_subprocess, app_log_file = (tv_casting_app_info if test_sequence_step.app == App.TV_CASTING_APP else tv_app_info) + raise TestStepException( + f"{test_sequence_name} - No input command provided in the test sequence step.", + test_sequence_step, + test_sequence_step, + ) + + app_subprocess = ( + processes.tv_casting + if test_sequence_step.app == App.TV_CASTING_APP + else processes.tv_app + ) app_name = test_sequence_step.app.value input_cmd = test_sequence_step.input_cmd - app_subprocess.stdin.write(input_cmd) - app_subprocess.stdin.flush() - - input_cmd = input_cmd.rstrip('\n') - logging.info(f'{test_sequence_name} - Sent `{input_cmd}` to the {app_name} subprocess.') - - return True - - -def handle_output_msg( - tv_casting_app_info: Tuple[subprocess.Popen, TextIO], - tv_app_info: Tuple[subprocess.Popen, TextIO], - log_paths: List[str], - test_sequence_name: str, - test_sequence_step: Step -): - """Handle the output message (`output_msg`) from a test sequence step.""" + app_subprocess.send_to_program(input_cmd) - if not parse_output_msg_in_subprocess(tv_casting_app_info, tv_app_info, log_paths, test_sequence_name, test_sequence_step): - handle_casting_failure(test_sequence_name, log_paths) + input_cmd = input_cmd.rstrip("\n") + logging.info( + f"{test_sequence_name} - Sent `{input_cmd}` to the {app_name} subprocess." + ) def handle_input_cmd( - tv_casting_app_info: Tuple[subprocess.Popen, TextIO], - tv_app_info: Tuple[subprocess.Popen, TextIO], - log_paths: List[str], - test_sequence_name: str, - test_sequence_step: Step + processes: RunningProcesses, test_sequence_name: str, test_sequence_step: Step ): """Handle the input command (`input_cmd`) from a test sequence step.""" - - tv_casting_app_process, tv_casting_app_log_file = tv_casting_app_info - tv_app_process, tv_app_log_file = tv_app_info - if test_sequence_step.input_cmd == STOP_APP: if test_sequence_step.app == App.TV_CASTING_APP: - # Stop the tv-casting-app subprocess. - if not stop_app(test_sequence_name, test_sequence_step.app.value, tv_casting_app_process): - handle_casting_failure(test_sequence_name, log_paths) + stop_app( + test_sequence_name, test_sequence_step.app.value, processes.tv_casting + ) elif test_sequence_step.app == App.TV_APP: - # Stop the tv-app subprocess. - if not stop_app(test_sequence_name, test_sequence_step.app.value, tv_app_process): - handle_casting_failure(test_sequence_name, log_paths) - else: - if not send_input_cmd_to_subprocess(tv_casting_app_info, tv_app_info, test_sequence_name, test_sequence_step): - handle_casting_failure(test_sequence_name, log_paths) + stop_app(test_sequence_name, test_sequence_step.app.value, processes.tv_app) + else: + raise TestStepException( + "Unknown stop app", test_sequence_name, test_sequence_step + ) + return + + send_input_cmd_to_subprocess(processes, test_sequence_name, test_sequence_step) def run_test_sequence_steps( current_index: int, test_sequence_name: str, test_sequence_steps: List[Step], - tv_casting_app_info: Tuple[subprocess.Popen, TextIO], - tv_app_info: Tuple[subprocess.Popen, TextIO], - log_paths: List[str] + processes: RunningProcesses, ): """Run through the test steps from a test sequence starting from the current index and perform actions based on the presence of `output_msg` or `input_cmd`.""" if test_sequence_steps is None: - logging.error('No test sequence steps provided.') + logging.error("No test sequence steps provided.") while current_index < len(test_sequence_steps): # Current step in the list of steps. @@ -260,18 +243,67 @@ def run_test_sequence_steps( # A test sequence step contains either an output_msg or input_cmd entry. if test_sequence_step.output_msg: - handle_output_msg(tv_casting_app_info, tv_app_info, log_paths, test_sequence_name, test_sequence_step) + parse_output_msg_in_subprocess( + processes, + test_sequence_name, + test_sequence_step, + ) elif test_sequence_step.input_cmd: - handle_input_cmd(tv_casting_app_info, tv_app_info, log_paths, test_sequence_name, test_sequence_step) + handle_input_cmd( + processes, + test_sequence_name, + test_sequence_step, + ) current_index += 1 +def cmd_execute_list(app_path): + """Returns the list suitable to pass to a ProcessOutputCapture/subprocess.run for execution.""" + cmd = [] + + # On Unix-like systems, use stdbuf to disable stdout buffering. + # Configure command options to disable stdout buffering during tests. + if sys.platform == "darwin" or sys.platform == "linux": + cmd = ["stdbuf", "-o0", "-i0"] + + cmd.append(app_path) + + # Our applications support better debugging logs. Enable them + cmd.append("--trace-to") + cmd.append("json:log") + + return cmd + + @click.command() -@click.option('--tv-app-rel-path', type=str, default='out/tv-app/chip-tv-app', help='Path to the Linux tv-app executable.') -@click.option('--tv-casting-app-rel-path', type=str, default='out/tv-casting-app/chip-tv-casting-app', help='Path to the Linux tv-casting-app executable.') -@click.option('--commissioner-generated-passcode', type=bool, default=False, help='Enable the commissioner generated passcode test flow.') -def test_casting_fn(tv_app_rel_path, tv_casting_app_rel_path, commissioner_generated_passcode): +@click.option( + "--tv-app-rel-path", + type=str, + default="out/tv-app/chip-tv-app", + help="Path to the Linux tv-app executable.", +) +@click.option( + "--tv-casting-app-rel-path", + type=str, + default="out/tv-casting-app/chip-tv-casting-app", + help="Path to the Linux tv-casting-app executable.", +) +@click.option( + "--commissioner-generated-passcode", + type=bool, + default=False, + help="Enable the commissioner generated passcode test flow.", +) +@click.option( + "--log-directory", + type=str, + default=None, + help="Where to place output logs", +) +def test_casting_fn( + tv_app_rel_path, tv_casting_app_rel_path, commissioner_generated_passcode, log_directory +): """Test if the casting experience between the Linux tv-casting-app and the Linux tv-app continues to work. By default, it uses the provided executable paths and the commissionee generated passcode flow as the test sequence. @@ -294,83 +326,107 @@ def test_casting_fn(tv_app_rel_path, tv_casting_app_rel_path, commissioner_gener # Store the log files to a temporary directory. with tempfile.TemporaryDirectory() as temp_dir: - linux_tv_app_log_path = os.path.join(temp_dir, LINUX_TV_APP_LOGS) - linux_tv_casting_app_log_path = os.path.join(temp_dir, LINUX_TV_CASTING_APP_LOGS) - - with open(linux_tv_app_log_path, 'w') as linux_tv_app_log_file, open(linux_tv_casting_app_log_path, 'w') as linux_tv_casting_app_log_file: - - # Get all the test sequences. - test_sequences = Sequence.get_test_sequences() - - # Get the test sequence that we are interested in validating. - test_sequence_name = 'commissionee_generated_passcode_test' - if commissioner_generated_passcode: - test_sequence_name = 'commissioner_generated_passcode_test' - test_sequence = Sequence.get_test_sequence_by_name(test_sequences, test_sequence_name) - - if not test_sequence: - logging.error('No test sequence found by the test sequence name provided.') - handle_casting_failure(None, []) - - # At this point, we have retrieved the test sequence of interest. - test_sequence_steps = test_sequence.steps + if log_directory: + linux_tv_app_log_path = os.path.join(log_directory, LINUX_TV_APP_LOGS) + linux_tv_casting_app_log_path = os.path.join( + log_directory, LINUX_TV_CASTING_APP_LOGS + ) + else: + linux_tv_app_log_path = os.path.join(temp_dir, LINUX_TV_APP_LOGS) + linux_tv_casting_app_log_path = os.path.join( + temp_dir, LINUX_TV_CASTING_APP_LOGS + ) + + # Get all the test sequences. + test_sequences = Sequence.get_test_sequences() + + # Get the test sequence that we are interested in validating. + test_sequence_name = "commissionee_generated_passcode_test" + if commissioner_generated_passcode: + test_sequence_name = "commissioner_generated_passcode_test" + test_sequence = Sequence.get_test_sequence_by_name( + test_sequences, test_sequence_name + ) + + if not test_sequence: + raise TestStepException( + "No test sequence found by the test sequence name provided.", + test_sequence_name, + None, + ) + + # At this point, we have retrieved the test sequence of interest. + test_sequence_steps = test_sequence.steps + + current_index = 0 + if test_sequence_steps[current_index].input_cmd != START_APP: + raise ValueError( + f"{test_sequence_name}: The first step in the test sequence must contain `START_APP` as `input_cmd` to indicate starting the tv-app." + ) + elif test_sequence_steps[current_index].app != App.TV_APP: + raise ValueError( + f"{test_sequence_name}: The first step in the test sequence must be to start up the tv-app." + ) + current_index += 1 - # Configure command options to disable stdout buffering during tests. - disable_stdout_buffering_cmd = [] - # On Unix-like systems, use stdbuf to disable stdout buffering. - if sys.platform == 'darwin' or sys.platform == 'linux': - disable_stdout_buffering_cmd = ['stdbuf', '-o0', '-i0'] + tv_app_abs_path = os.path.abspath(tv_app_rel_path) + # Run the Linux tv-app subprocess. + with ProcessOutputCapture( + cmd_execute_list(tv_app_abs_path), linux_tv_app_log_path + ) as tv_app_process: + # Verify that the tv-app is up and running. + parse_output_msg_in_subprocess( + RunningProcesses(tv_app=tv_app_process), + test_sequence_name, + test_sequence_steps[current_index], + ) + current_index += 1 - current_index = 0 if test_sequence_steps[current_index].input_cmd != START_APP: raise ValueError( - f'{test_sequence_name}: The first step in the test sequence must contain `START_APP` as `input_cmd` to indicate starting the tv-app.') - elif test_sequence_steps[current_index].app != App.TV_APP: - raise ValueError(f'{test_sequence_name}: The first step in the test sequence must be to start up the tv-app.') + f"{test_sequence_name}: The third step in the test sequence must contain `START_APP` as `input_cmd` to indicate starting the tv-casting-app." + ) + elif test_sequence_steps[current_index].app != App.TV_CASTING_APP: + raise ValueError( + f"{test_sequence_name}: The third step in the test sequence must be to start up the tv-casting-app." + ) current_index += 1 - tv_app_abs_path = os.path.abspath(tv_app_rel_path) - # Run the Linux tv-app subprocess. - with ProcessManager(disable_stdout_buffering_cmd + [tv_app_abs_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as tv_app_process: - tv_app_info = (tv_app_process, linux_tv_app_log_file) - - # Verify that the tv-app is up and running. - handle_output_msg(None, tv_app_info, [linux_tv_app_log_path], - test_sequence_name, test_sequence_steps[current_index]) + tv_casting_app_abs_path = os.path.abspath(tv_casting_app_rel_path) + # Run the Linux tv-casting-app subprocess. + with ProcessOutputCapture( + cmd_execute_list(tv_casting_app_abs_path), linux_tv_casting_app_log_path + ) as tv_casting_app_process: + processes = RunningProcesses( + tv_casting=tv_casting_app_process, tv_app=tv_app_process + ) + + # Verify that the server initialization is completed in the tv-casting-app output. + parse_output_msg_in_subprocess( + processes, + test_sequence_name, + test_sequence_steps[current_index], + ) current_index += 1 - if test_sequence_steps[current_index].input_cmd != START_APP: - raise ValueError( - f'{test_sequence_name}: The third step in the test sequence must contain `START_APP` as `input_cmd` to indicate starting the tv-casting-app.') - elif test_sequence_steps[current_index].app != App.TV_CASTING_APP: - raise ValueError( - f'{test_sequence_name}: The third step in the test sequence must be to start up the tv-casting-app.') - current_index += 1 - - tv_casting_app_abs_path = os.path.abspath(tv_casting_app_rel_path) - # Run the Linux tv-casting-app subprocess. - with ProcessManager(disable_stdout_buffering_cmd + [tv_casting_app_abs_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as tv_casting_app_process: - log_paths = [linux_tv_app_log_path, linux_tv_casting_app_log_path] - tv_casting_app_info = (tv_casting_app_process, linux_tv_casting_app_log_file) - - # Verify that the server initialization is completed in the tv-casting-app output. - handle_output_msg(tv_casting_app_info, tv_app_info, log_paths, - test_sequence_name, test_sequence_steps[current_index]) - current_index += 1 - - run_test_sequence_steps(current_index, test_sequence_name, test_sequence_steps, - tv_casting_app_info, tv_app_info, log_paths) + run_test_sequence_steps( + current_index, + test_sequence_name, + test_sequence_steps, + processes, + ) -if __name__ == '__main__': +if __name__ == "__main__": # Start with a clean slate by removing any previously cached entries. try: - cached_file_pattern = '/tmp/chip_*' + cached_file_pattern = "/tmp/chip_*" remove_cached_files(cached_file_pattern) except OSError: logging.error( - f'Error while removing cached files with file pattern: {cached_file_pattern}') + f"Error while removing cached files with file pattern: {cached_file_pattern}" + ) sys.exit(1) # Test casting (discovery and commissioning) between the Linux tv-casting-app and the tv-app. diff --git a/scripts/tools/generate_esp32_chip_factory_bin.py b/scripts/tools/generate_esp32_chip_factory_bin.py index eab2ec6b43c229..b19748ca31b197 100755 --- a/scripts/tools/generate_esp32_chip_factory_bin.py +++ b/scripts/tools/generate_esp32_chip_factory_bin.py @@ -21,6 +21,7 @@ import logging import os import sys +from enum import Enum from types import SimpleNamespace import cryptography.x509 @@ -45,6 +46,40 @@ INVALID_PASSCODES = [00000000, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321] + +class Product_Finish_Enum(Enum): + other = 0 + matte = 1 + satin = 2 + polished = 3 + rugged = 4 + fabric = 5 + + +class Product_Color_Enum(Enum): + black = 0 + navy = 1 + green = 2 + teal = 3 + maroon = 4 + purple = 5 + olive = 6 + gray = 7 + blue = 8 + lime = 9 + aqua = 10 + red = 11 + fuchsia = 12 + yellow = 13 + white = 14 + nickel = 15 + chrome = 16 + brass = 17 + copper = 18 + silver = 19 + gold = 20 + + TOOLS = {} FACTORY_PARTITION_CSV = 'nvs_partition.csv' @@ -149,6 +184,31 @@ 'encoding': 'hex2bin', 'value': None, }, + 'product-finish': { + 'type': 'data', + 'encoding': 'u32', + 'value': None, + }, + 'product-color': { + 'type': 'data', + 'encoding': 'u32', + 'value': None, + }, + 'part-number': { + 'type': 'data', + 'encoding': 'string', + 'value': None, + }, + 'product-label': { + 'type': 'data', + 'encoding': 'string', + 'value': None, + }, + 'product-url': { + 'type': 'data', + 'encoding': 'string', + 'value': None, + }, } @@ -301,6 +361,16 @@ def populate_factory_data(args, spake2p_params): FACTORY_DATA['hardware-ver']['value'] = args.hw_ver if args.hw_ver_str: FACTORY_DATA['hw-ver-str']['value'] = args.hw_ver_str + if args.product_finish: + FACTORY_DATA['product-finish']['value'] = Product_Finish_Enum[args.product_finish].value + if args.product_color: + FACTORY_DATA['product-color']['value'] = Product_Color_Enum[args.product_color].value + if args.part_number: + FACTORY_DATA['part-number']['value'] = args.part_number + if args.product_url: + FACTORY_DATA['product-url']['value'] = args.product_url + if args.product_label: + FACTORY_DATA['product-label']['value'] = args.product_label # SupportedModes are stored as multiple entries # - sm-sz/ : number of supported modes for the endpoint @@ -471,6 +541,18 @@ def any_base_int(s): return int(s, 0) parser.add_argument('--supported-modes', type=str, nargs='+', required=False, help='List of supported modes, eg: mode1/label1/ep/"tagValue1\\mfgCode, tagValue2\\mfgCode" mode2/label2/ep/"tagValue1\\mfgCode, tagValue2\\mfgCode" mode3/label3/ep/"tagValue1\\mfgCode, tagValue2\\mfgCode"') + product_finish_choices = [finish.name for finish in Product_Finish_Enum] + parser.add_argument("--product-finish", type=str, choices=product_finish_choices, + help='Product finishes choices for product appearance') + + product_color_choices = [color.name for color in Product_Color_Enum] + parser.add_argument("--product-color", type=str, choices=product_color_choices, + help='Product colors choices for product appearance') + + parser.add_argument("--part-number", type=str, help='human readable product number') + parser.add_argument("--product-label", type=str, help='human readable product label') + parser.add_argument("--product-url", type=str, help='link to product specific web page') + parser.add_argument('-s', '--size', type=any_base_int, default=0x6000, help='The size of the partition.bin, default: 0x6000') parser.add_argument('--target', default='esp32', @@ -509,7 +591,8 @@ def set_up_factory_data(args): def generate_factory_partiton_binary(args): generate_nvs_csv(args.output_dir, FACTORY_PARTITION_CSV) if args.generate_bin: - generate_nvs_bin(args.encrypt, args.size, FACTORY_PARTITION_CSV, FACTORY_PARTITION_BIN, args.output_dir) + csv_file = os.path.join(args.output_dir, FACTORY_PARTITION_CSV) + generate_nvs_bin(args.encrypt, args.size, csv_file, FACTORY_PARTITION_BIN, args.output_dir) print_flashing_help(args.encrypt, args.output_dir, FACTORY_PARTITION_BIN) clean_up() diff --git a/scripts/tools/memory/platform/p6.cfg b/scripts/tools/memory/platform/psoc6.cfg similarity index 76% rename from scripts/tools/memory/platform/p6.cfg rename to scripts/tools/memory/platform/psoc6.cfg index 7b6184d378e4f6..ea67d5c7e2f622 100644 --- a/scripts/tools/memory/platform/p6.cfg +++ b/scripts/tools/memory/platform/psoc6.cfg @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Memory tools default configuation for Infineon P6. +# Memory tools default configuation for Infineon PSOC6. { 'section': { @@ -30,17 +30,13 @@ # 'end': [], # } # }, - 'region': { - # Regions are sets of sections that can be used for aggregate reports. - 'sections': { - 'FLASH': [ - '.text', - '.rodata', - ], - 'RAM': [ - '.bss', - '.data', - ], - } - }, +# 'region': { +# # Regions are sets of sections that can be used for aggregate reports. +# 'sections': { +# 'FLASH': [ +# ], +# 'RAM': [ +# ] +# } +# }, } diff --git a/scripts/tools/zap/tests/inputs/all-clusters-app.zap b/scripts/tools/zap/tests/inputs/all-clusters-app.zap index 825cf1cd6242c0..570e1711e53d6b 100644 --- a/scripts/tools/zap/tests/inputs/all-clusters-app.zap +++ b/scripts/tools/zap/tests/inputs/all-clusters-app.zap @@ -19,18 +19,18 @@ "package": [ { "pathRelativity": "relativeToZap", - "path": "../../../../../src/app/zap-templates/zcl/zcl-with-test-extensions.json", - "type": "zcl-properties", + "path": "../../../../../src/app/zap-templates/app-templates.json", + "type": "gen-templates-json", "category": "matter", - "version": 1, - "description": "Matter SDK ZCL data with some extensions" + "version": "chip-v1" }, { "pathRelativity": "relativeToZap", - "path": "../../../../../src/app/zap-templates/app-templates.json", - "type": "gen-templates-json", + "path": "../../../../../src/app/zap-templates/zcl/zcl-with-test-extensions.json", + "type": "zcl-properties", "category": "matter", - "version": "chip-v1" + "version": 1, + "description": "Matter SDK ZCL data with some extensions" } ], "endpointTypes": [ @@ -7303,7 +7303,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -17807,7 +17807,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/scripts/tools/zap/tests/inputs/lighting-app.zap b/scripts/tools/zap/tests/inputs/lighting-app.zap index 53b5cb008a201b..9935fea81069d3 100644 --- a/scripts/tools/zap/tests/inputs/lighting-app.zap +++ b/scripts/tools/zap/tests/inputs/lighting-app.zap @@ -4922,7 +4922,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5813,7 +5813,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h index 69486db49cfb77..a77bd74f11f267 100644 --- a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h +++ b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h @@ -261,7 +261,7 @@ #define GENERATED_DEFAULTS_COUNT (30) // This is an array of EmberAfAttributeMinMaxValue structures. -#define GENERATED_MIN_MAX_DEFAULT_COUNT 49 +#define GENERATED_MIN_MAX_DEFAULT_COUNT 50 #define GENERATED_MIN_MAX_DEFAULTS \ { \ \ @@ -275,7 +275,8 @@ { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x2 }, /* switch actions */ \ \ /* Endpoint: 1, Cluster: Level Control (server) */ \ - { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x3 }, /* Options */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x3 }, /* Options */ \ + { (uint16_t) 0x32, (uint16_t) 0x1, (uint16_t) 0xFF }, /* DefaultMoveRate */ \ \ /* Endpoint: 1, Cluster: Binary Input (Basic) (server) */ \ { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x1 }, /* out of service */ \ @@ -306,7 +307,7 @@ { (uint16_t) 0xBB8, (uint16_t) -0x6AB3, (uint16_t) 0x7FFF }, /* MaxHeatSetpointLimit */ \ { (uint16_t) 0x640, (uint16_t) -0x6AB3, (uint16_t) 0x7FFF }, /* MinCoolSetpointLimit */ \ { (uint16_t) 0xC80, (uint16_t) -0x6AB3, (uint16_t) 0x7FFF }, /* MaxCoolSetpointLimit */ \ - { (uint16_t) 0x19, (uint16_t) 0x0, (uint16_t) 0x19 }, /* MinSetpointDeadBand */ \ + { (uint16_t) 0x19, (uint16_t) 0x0, (uint16_t) 0x7F }, /* MinSetpointDeadBand */ \ { (uint16_t) 0x4, (uint16_t) 0x0, (uint16_t) 0x5 }, /* ControlSequenceOfOperation */ \ { (uint16_t) 0x1, (uint16_t) 0x0, (uint16_t) 0x9 }, /* SystemMode */ \ \ @@ -354,7 +355,7 @@ } // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 1057 +#define GENERATED_ATTRIBUTE_COUNT 1056 #define GENERATED_ATTRIBUTES \ { \ \ @@ -828,16 +829,16 @@ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* OnTransitionTime */ \ { ZAP_EMPTY_DEFAULT(), 0x00000013, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* OffTransitionTime */ \ - { ZAP_SIMPLE_DEFAULT(50), 0x00000014, 1, ZAP_TYPE(INT8U), \ - ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* DefaultMoveRate */ \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(4), 0x00000014, 1, ZAP_TYPE(INT8U), \ + ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* DefaultMoveRate */ \ { ZAP_SIMPLE_DEFAULT(255), 0x00004000, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* StartUpCurrentLevel */ \ { ZAP_SIMPLE_DEFAULT(3), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(5), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + { ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Binary Input (Basic) (server) */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(4), 0x00000051, 1, ZAP_TYPE(BOOLEAN), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(5), 0x00000051, 1, ZAP_TYPE(BOOLEAN), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* out of service */ \ { ZAP_EMPTY_DEFAULT(), 0x00000055, 1, ZAP_TYPE(BOOLEAN), ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* present value */ \ { ZAP_SIMPLE_DEFAULT(0x00), 0x0000006F, 1, ZAP_TYPE(BITMAP8), 0 }, /* status flags */ \ @@ -965,7 +966,7 @@ \ /* Endpoint: 1, Cluster: Laundry Washer Controls (server) */ \ { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SpinSpeeds */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(5), 0x00000001, 1, ZAP_TYPE(INT8U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(6), 0x00000001, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* SpinSpeedCurrent */ \ { ZAP_EMPTY_DEFAULT(), 0x00000002, 1, ZAP_TYPE(ENUM8), ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* NumberOfRinses */ \ { ZAP_EMPTY_DEFAULT(), 0x00000003, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* SupportedRinses */ \ @@ -1026,7 +1027,7 @@ { ZAP_SIMPLE_DEFAULT(0), 0x00000008, 1, ZAP_TYPE(ENUM8), 0 }, /* InterconnectSmokeAlarm */ \ { ZAP_SIMPLE_DEFAULT(0), 0x00000009, 1, ZAP_TYPE(ENUM8), 0 }, /* InterconnectCOAlarm */ \ { ZAP_SIMPLE_DEFAULT(0), 0x0000000A, 1, ZAP_TYPE(ENUM8), 0 }, /* ContaminationState */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(6), 0x0000000B, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(7), 0x0000000B, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* SmokeSensitivityLevel */ \ { ZAP_SIMPLE_DEFAULT(0), 0x0000000C, 4, ZAP_TYPE(EPOCH_S), 0 }, /* ExpiryDate */ \ { ZAP_SIMPLE_DEFAULT(3), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ @@ -1138,7 +1139,7 @@ { ZAP_SIMPLE_DEFAULT(0xFF), 0x00000005, 1, ZAP_TYPE(ENUM8), ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* TargetState */ \ { ZAP_SIMPLE_DEFAULT(0xFF), 0x00000006, 1, ZAP_TYPE(PERCENT), ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* CurrentLevel */ \ { ZAP_SIMPLE_DEFAULT(0xFF), 0x00000007, 1, ZAP_TYPE(PERCENT), ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* TargetLevel */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(7), 0x00000008, 1, ZAP_TYPE(PERCENT), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(8), 0x00000008, 1, ZAP_TYPE(PERCENT), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* DefaultOpenLevel */ \ { ZAP_SIMPLE_DEFAULT(0), 0x00000009, 2, ZAP_TYPE(BITMAP16), 0 }, /* ValveFault */ \ { ZAP_SIMPLE_DEFAULT(1), 0x0000000A, 1, ZAP_TYPE(INT8U), 0 }, /* LevelStep */ \ @@ -1238,7 +1239,7 @@ ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* NextChargeRequiredEnergy */ \ { ZAP_EMPTY_DEFAULT(), 0x00000026, 1, ZAP_TYPE(PERCENT), \ ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* NextChargeTargetSoC */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(8), 0x00000027, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(9), 0x00000027, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* ApproximateEVEfficiency */ \ { ZAP_EMPTY_DEFAULT(), 0x00000040, 4, ZAP_TYPE(INT32U), \ @@ -1315,7 +1316,7 @@ ZAP_ATTRIBUTE_MASK(TOKENIZE) }, /* InstalledOpenLimitTilt */ \ { ZAP_SIMPLE_DEFAULT(0xFFFF), 0x00000013, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(TOKENIZE) }, /* InstalledClosedLimitTilt */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(9), 0x00000017, 1, ZAP_TYPE(BITMAP8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(10), 0x00000017, 1, ZAP_TYPE(BITMAP8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* Mode */ \ { ZAP_SIMPLE_DEFAULT(0x00), 0x0000001A, 2, ZAP_TYPE(BITMAP16), 0 }, /* SafetyStatus */ \ { ZAP_SIMPLE_DEFAULT(0x17), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ @@ -1353,9 +1354,9 @@ { ZAP_EMPTY_DEFAULT(), 0x00000016, 3, ZAP_TYPE(INT24U), ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* Power */ \ { ZAP_SIMPLE_DEFAULT(0x00000000), 0x00000017, 4, ZAP_TYPE(INT32U), \ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LifetimeEnergyConsumed */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(10), 0x00000020, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(11), 0x00000020, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* OperationMode */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(11), 0x00000021, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(12), 0x00000021, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ControlMode */ \ { ZAP_SIMPLE_DEFAULT(0x1F), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ { ZAP_SIMPLE_DEFAULT(4), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ @@ -1366,23 +1367,23 @@ { ZAP_SIMPLE_DEFAULT(0x0BB8), 0x00000004, 2, ZAP_TYPE(TEMPERATURE), 0 }, /* AbsMaxHeatSetpointLimit */ \ { ZAP_SIMPLE_DEFAULT(0x0640), 0x00000005, 2, ZAP_TYPE(TEMPERATURE), 0 }, /* AbsMinCoolSetpointLimit */ \ { ZAP_SIMPLE_DEFAULT(0x0C80), 0x00000006, 2, ZAP_TYPE(TEMPERATURE), 0 }, /* AbsMaxCoolSetpointLimit */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(12), 0x00000011, 2, ZAP_TYPE(INT16S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(13), 0x00000011, 2, ZAP_TYPE(INT16S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* OccupiedCoolingSetpoint */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(13), 0x00000012, 2, ZAP_TYPE(INT16S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(14), 0x00000012, 2, ZAP_TYPE(INT16S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* OccupiedHeatingSetpoint */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(14), 0x00000015, 2, ZAP_TYPE(INT16S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(15), 0x00000015, 2, ZAP_TYPE(INT16S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MinHeatSetpointLimit */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(15), 0x00000016, 2, ZAP_TYPE(INT16S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(16), 0x00000016, 2, ZAP_TYPE(INT16S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MaxHeatSetpointLimit */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(16), 0x00000017, 2, ZAP_TYPE(INT16S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(17), 0x00000017, 2, ZAP_TYPE(INT16S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MinCoolSetpointLimit */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(17), 0x00000018, 2, ZAP_TYPE(INT16S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(18), 0x00000018, 2, ZAP_TYPE(INT16S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MaxCoolSetpointLimit */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(18), 0x00000019, 1, ZAP_TYPE(INT8S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(19), 0x00000019, 1, ZAP_TYPE(INT8S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MinSetpointDeadBand */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(19), 0x0000001B, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(20), 0x0000001B, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ControlSequenceOfOperation */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(20), 0x0000001C, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(21), 0x0000001C, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* SystemMode */ \ { ZAP_EMPTY_DEFAULT(), 0x00000048, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* PresetTypes */ \ { ZAP_EMPTY_DEFAULT(), 0x00000049, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* ScheduleTypes */ \ @@ -1401,21 +1402,19 @@ { ZAP_EMPTY_DEFAULT(), 0x00000052, 1, ZAP_TYPE(BOOLEAN), 0 }, /* PresetsSchedulesEditable */ \ { ZAP_SIMPLE_DEFAULT(0), 0x00000053, 1, ZAP_TYPE(BITMAP8), 0 }, /* TemperatureSetpointHoldPolicy */ \ { ZAP_EMPTY_DEFAULT(), 0x00000054, 4, ZAP_TYPE(EPOCH_S), \ - ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* SetpointHoldExpiryTimestamp */ \ - { ZAP_EMPTY_DEFAULT(), 0x00000055, 0, ZAP_TYPE(STRUCT), \ - ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* QueuedPreset */ \ - { ZAP_SIMPLE_DEFAULT(0x0023), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* SetpointHoldExpiryTimestamp */ \ + { ZAP_SIMPLE_DEFAULT(0x0023), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ + { ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Fan Control (server) */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(21), 0x00000000, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(22), 0x00000000, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* FanMode */ \ { ZAP_SIMPLE_DEFAULT(0x02), 0x00000001, 1, ZAP_TYPE(ENUM8), 0 }, /* FanModeSequence */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(22), 0x00000002, 1, ZAP_TYPE(PERCENT), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(23), 0x00000002, 1, ZAP_TYPE(PERCENT), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* PercentSetting */ \ { ZAP_SIMPLE_DEFAULT(0x00), 0x00000003, 1, ZAP_TYPE(PERCENT), 0 }, /* PercentCurrent */ \ { ZAP_SIMPLE_DEFAULT(100), 0x00000004, 1, ZAP_TYPE(INT8U), 0 }, /* SpeedMax */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(23), 0x00000005, 1, ZAP_TYPE(INT8U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(24), 0x00000005, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* SpeedSetting */ \ { ZAP_SIMPLE_DEFAULT(0x00), 0x00000006, 1, ZAP_TYPE(INT8U), 0 }, /* SpeedCurrent */ \ { ZAP_SIMPLE_DEFAULT(0x03), 0x00000007, 1, ZAP_TYPE(BITMAP8), 0 }, /* RockSupport */ \ @@ -1427,11 +1426,11 @@ { ZAP_SIMPLE_DEFAULT(4), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Thermostat User Interface Configuration (server) */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(24), 0x00000000, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(25), 0x00000000, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* TemperatureDisplayMode */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(25), 0x00000001, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(26), 0x00000001, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* KeypadLockout */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(26), 0x00000002, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(27), 0x00000002, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ScheduleProgrammingVisibility */ \ { ZAP_SIMPLE_DEFAULT(0), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ { ZAP_SIMPLE_DEFAULT(2), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ @@ -1467,25 +1466,25 @@ { ZAP_EMPTY_DEFAULT(), 0x00000028, 2, ZAP_TYPE(INT16U), 0 }, /* Primary6X */ \ { ZAP_EMPTY_DEFAULT(), 0x00000029, 2, ZAP_TYPE(INT16U), 0 }, /* Primary6Y */ \ { ZAP_EMPTY_DEFAULT(), 0x0000002A, 1, ZAP_TYPE(INT8U), ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* Primary6Intensity */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(27), 0x00000030, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(28), 0x00000030, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* WhitePointX */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(28), 0x00000031, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(29), 0x00000031, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* WhitePointY */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(29), 0x00000032, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(30), 0x00000032, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ColorPointRX */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(30), 0x00000033, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(31), 0x00000033, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ColorPointRY */ \ { ZAP_EMPTY_DEFAULT(), 0x00000034, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* ColorPointRIntensity */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(31), 0x00000036, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(32), 0x00000036, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ColorPointGX */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(32), 0x00000037, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(33), 0x00000037, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ColorPointGY */ \ { ZAP_EMPTY_DEFAULT(), 0x00000038, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* ColorPointGIntensity */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(33), 0x0000003A, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(34), 0x0000003A, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ColorPointBX */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(34), 0x0000003B, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(35), 0x0000003B, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* ColorPointBY */ \ { ZAP_EMPTY_DEFAULT(), 0x0000003C, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* ColorPointBIntensity */ \ @@ -1501,23 +1500,23 @@ { ZAP_SIMPLE_DEFAULT(0x0000), 0x0000400B, 2, ZAP_TYPE(INT16U), 0 }, /* ColorTempPhysicalMinMireds */ \ { ZAP_SIMPLE_DEFAULT(0xFEFF), 0x0000400C, 2, ZAP_TYPE(INT16U), 0 }, /* ColorTempPhysicalMaxMireds */ \ { ZAP_EMPTY_DEFAULT(), 0x0000400D, 2, ZAP_TYPE(INT16U), 0 }, /* CoupleColorTempToLevelMinMireds */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(35), 0x00004010, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(36), 0x00004010, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* StartUpColorTemperatureMireds */ \ { ZAP_SIMPLE_DEFAULT(0x1F), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + { ZAP_SIMPLE_DEFAULT(7), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Ballast Configuration (server) */ \ { ZAP_SIMPLE_DEFAULT(0x01), 0x00000000, 1, ZAP_TYPE(INT8U), 0 }, /* PhysicalMinLevel */ \ { ZAP_SIMPLE_DEFAULT(0xFE), 0x00000001, 1, ZAP_TYPE(INT8U), 0 }, /* PhysicalMaxLevel */ \ { ZAP_SIMPLE_DEFAULT(0x00), 0x00000002, 1, ZAP_TYPE(BITMAP8), 0 }, /* BallastStatus */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(36), 0x00000010, 1, ZAP_TYPE(INT8U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(37), 0x00000010, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MinLevel */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(37), 0x00000011, 1, ZAP_TYPE(INT8U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(38), 0x00000011, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MaxLevel */ \ { ZAP_EMPTY_DEFAULT(), 0x00000014, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* IntrinsicBallastFactor */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(38), 0x00000015, 1, ZAP_TYPE(INT8U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(39), 0x00000015, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* BallastFactorAdjustment */ \ { ZAP_EMPTY_DEFAULT(), 0x00000020, 1, ZAP_TYPE(INT8U), 0 }, /* LampQuantity */ \ @@ -1527,7 +1526,7 @@ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LampRatedHours */ \ { ZAP_SIMPLE_DEFAULT(0x000000), 0x00000033, 3, ZAP_TYPE(INT24U), \ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LampBurnHours */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(39), 0x00000034, 1, ZAP_TYPE(BITMAP8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(40), 0x00000034, 1, ZAP_TYPE(BITMAP8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* LampAlarmMode */ \ { ZAP_SIMPLE_DEFAULT(0xFFFFFF), 0x00000035, 3, ZAP_TYPE(INT24U), \ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* LampBurnHoursTripPoint */ \ @@ -1874,13 +1873,13 @@ { ZAP_EMPTY_DEFAULT(), 0x00000024, 1, ZAP_TYPE(ENUM8), ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* enum_attr */ \ { ZAP_EMPTY_DEFAULT(), 0x00000025, 0, ZAP_TYPE(STRUCT), \ ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* struct_attr */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(40), 0x00000026, 1, ZAP_TYPE(INT8U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(41), 0x00000026, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* range_restricted_int8u */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(41), 0x00000027, 1, ZAP_TYPE(INT8S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(42), 0x00000027, 1, ZAP_TYPE(INT8S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* range_restricted_int8s */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(42), 0x00000028, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(43), 0x00000028, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* range_restricted_int16u */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(43), 0x00000029, 2, ZAP_TYPE(INT16S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(44), 0x00000029, 2, ZAP_TYPE(INT16S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* range_restricted_int16s */ \ { ZAP_EMPTY_DEFAULT(), 0x0000002A, 0, ZAP_TYPE(ARRAY), \ ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* list_long_octet_string */ \ @@ -1951,16 +1950,16 @@ { ZAP_EMPTY_DEFAULT(), 0x00004025, 0, ZAP_TYPE(STRUCT), \ ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* nullable_struct */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(44), 0x00004026, 1, ZAP_TYPE(INT8U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(45), 0x00004026, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* nullable_range_restricted_int8u */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(45), 0x00004027, 1, ZAP_TYPE(INT8S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(46), 0x00004027, 1, ZAP_TYPE(INT8S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* nullable_range_restricted_int8s */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(46), 0x00004028, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(47), 0x00004028, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* nullable_range_restricted_int16u */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(47), 0x00004029, 2, ZAP_TYPE(INT16S), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(48), 0x00004029, 2, ZAP_TYPE(INT16S), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* nullable_range_restricted_int16s */ \ { ZAP_EMPTY_DEFAULT(), 0x0000402A, 1, ZAP_TYPE(INT8U), \ @@ -1985,7 +1984,7 @@ { ZAP_SIMPLE_DEFAULT(1), 0x00004000, 1, ZAP_TYPE(BOOLEAN), 0 }, /* GlobalSceneControl */ \ { ZAP_SIMPLE_DEFAULT(0), 0x00004001, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* OnTime */ \ { ZAP_SIMPLE_DEFAULT(0), 0x00004002, 2, ZAP_TYPE(INT16U), ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* OffWaitTime */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(48), 0x00004003, 1, ZAP_TYPE(ENUM8), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(49), 0x00004003, 1, ZAP_TYPE(ENUM8), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* StartUpOnOff */ \ { ZAP_SIMPLE_DEFAULT(0x0001), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ { ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ @@ -3750,7 +3749,7 @@ /* Endpoint: 1, Cluster: Thermostat (server) */ \ .clusterId = 0x00000201, \ .attributes = ZAP_ATTRIBUTE_INDEX(616), \ - .attributeCount = 29, \ + .attributeCount = 28, \ .clusterSize = 74, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayThermostatServer, \ @@ -3762,7 +3761,7 @@ { \ /* Endpoint: 1, Cluster: Fan Control (server) */ \ .clusterId = 0x00000202, \ - .attributes = ZAP_ATTRIBUTE_INDEX(645), \ + .attributes = ZAP_ATTRIBUTE_INDEX(644), \ .attributeCount = 14, \ .clusterSize = 18, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -3775,7 +3774,7 @@ { \ /* Endpoint: 1, Cluster: Thermostat User Interface Configuration (server) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(659), \ + .attributes = ZAP_ATTRIBUTE_INDEX(658), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -3788,7 +3787,7 @@ { \ /* Endpoint: 1, Cluster: Color Control (server) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(664), \ + .attributes = ZAP_ATTRIBUTE_INDEX(663), \ .attributeCount = 54, \ .clusterSize = 345, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(SHUTDOWN_FUNCTION), \ @@ -3801,7 +3800,7 @@ { \ /* Endpoint: 1, Cluster: Ballast Configuration (server) */ \ .clusterId = 0x00000301, \ - .attributes = ZAP_ATTRIBUTE_INDEX(718), \ + .attributes = ZAP_ATTRIBUTE_INDEX(717), \ .attributeCount = 16, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3814,7 +3813,7 @@ { \ /* Endpoint: 1, Cluster: Illuminance Measurement (server) */ \ .clusterId = 0x00000400, \ - .attributes = ZAP_ATTRIBUTE_INDEX(734), \ + .attributes = ZAP_ATTRIBUTE_INDEX(733), \ .attributeCount = 7, \ .clusterSize = 15, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3827,7 +3826,7 @@ { \ /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(741), \ + .attributes = ZAP_ATTRIBUTE_INDEX(740), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3840,7 +3839,7 @@ { \ /* Endpoint: 1, Cluster: Pressure Measurement (server) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(747), \ + .attributes = ZAP_ATTRIBUTE_INDEX(746), \ .attributeCount = 5, \ .clusterSize = 12, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3853,7 +3852,7 @@ { \ /* Endpoint: 1, Cluster: Flow Measurement (server) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(752), \ + .attributes = ZAP_ATTRIBUTE_INDEX(751), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3866,7 +3865,7 @@ { \ /* Endpoint: 1, Cluster: Relative Humidity Measurement (server) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(758), \ + .attributes = ZAP_ATTRIBUTE_INDEX(757), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3879,7 +3878,7 @@ { \ /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(764), \ + .attributes = ZAP_ATTRIBUTE_INDEX(763), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3892,7 +3891,7 @@ { \ /* Endpoint: 1, Cluster: Carbon Monoxide Concentration Measurement (server) */ \ .clusterId = 0x0000040C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(769), \ + .attributes = ZAP_ATTRIBUTE_INDEX(768), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3905,7 +3904,7 @@ { \ /* Endpoint: 1, Cluster: Carbon Dioxide Concentration Measurement (server) */ \ .clusterId = 0x0000040D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(782), \ + .attributes = ZAP_ATTRIBUTE_INDEX(781), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3918,7 +3917,7 @@ { \ /* Endpoint: 1, Cluster: Nitrogen Dioxide Concentration Measurement (server) */ \ .clusterId = 0x00000413, \ - .attributes = ZAP_ATTRIBUTE_INDEX(795), \ + .attributes = ZAP_ATTRIBUTE_INDEX(794), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3931,7 +3930,7 @@ { \ /* Endpoint: 1, Cluster: Ozone Concentration Measurement (server) */ \ .clusterId = 0x00000415, \ - .attributes = ZAP_ATTRIBUTE_INDEX(808), \ + .attributes = ZAP_ATTRIBUTE_INDEX(807), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3944,7 +3943,7 @@ { \ /* Endpoint: 1, Cluster: PM2.5 Concentration Measurement (server) */ \ .clusterId = 0x0000042A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(821), \ + .attributes = ZAP_ATTRIBUTE_INDEX(820), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3957,7 +3956,7 @@ { \ /* Endpoint: 1, Cluster: Formaldehyde Concentration Measurement (server) */ \ .clusterId = 0x0000042B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(834), \ + .attributes = ZAP_ATTRIBUTE_INDEX(833), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3970,7 +3969,7 @@ { \ /* Endpoint: 1, Cluster: PM1 Concentration Measurement (server) */ \ .clusterId = 0x0000042C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(847), \ + .attributes = ZAP_ATTRIBUTE_INDEX(846), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3983,7 +3982,7 @@ { \ /* Endpoint: 1, Cluster: PM10 Concentration Measurement (server) */ \ .clusterId = 0x0000042D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(860), \ + .attributes = ZAP_ATTRIBUTE_INDEX(859), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3996,7 +3995,7 @@ { \ /* Endpoint: 1, Cluster: Total Volatile Organic Compounds Concentration Measurement (server) */ \ .clusterId = 0x0000042E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(873), \ + .attributes = ZAP_ATTRIBUTE_INDEX(872), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -4009,7 +4008,7 @@ { \ /* Endpoint: 1, Cluster: Radon Concentration Measurement (server) */ \ .clusterId = 0x0000042F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(886), \ + .attributes = ZAP_ATTRIBUTE_INDEX(885), \ .attributeCount = 13, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -4022,7 +4021,7 @@ { \ /* Endpoint: 1, Cluster: Wake on LAN (server) */ \ .clusterId = 0x00000503, \ - .attributes = ZAP_ATTRIBUTE_INDEX(899), \ + .attributes = ZAP_ATTRIBUTE_INDEX(898), \ .attributeCount = 3, \ .clusterSize = 19, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -4035,7 +4034,7 @@ { \ /* Endpoint: 1, Cluster: Low Power (server) */ \ .clusterId = 0x00000508, \ - .attributes = ZAP_ATTRIBUTE_INDEX(902), \ + .attributes = ZAP_ATTRIBUTE_INDEX(901), \ .attributeCount = 2, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -4048,7 +4047,7 @@ { \ /* Endpoint: 1, Cluster: Electrical Measurement (server) */ \ .clusterId = 0x00000B04, \ - .attributes = ZAP_ATTRIBUTE_INDEX(904), \ + .attributes = ZAP_ATTRIBUTE_INDEX(903), \ .attributeCount = 13, \ .clusterSize = 32, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -4061,7 +4060,7 @@ { \ /* Endpoint: 1, Cluster: Unit Testing (server) */ \ .clusterId = 0xFFF1FC05, \ - .attributes = ZAP_ATTRIBUTE_INDEX(917), \ + .attributes = ZAP_ATTRIBUTE_INDEX(916), \ .attributeCount = 84, \ .clusterSize = 2290, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -4074,7 +4073,7 @@ { \ /* Endpoint: 2, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(1001), \ + .attributes = ZAP_ATTRIBUTE_INDEX(1000), \ .attributeCount = 4, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -4087,7 +4086,7 @@ { \ /* Endpoint: 2, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(1005), \ + .attributes = ZAP_ATTRIBUTE_INDEX(1004), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -4100,7 +4099,7 @@ { \ /* Endpoint: 2, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(1008), \ + .attributes = ZAP_ATTRIBUTE_INDEX(1007), \ .attributeCount = 7, \ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(SHUTDOWN_FUNCTION), \ @@ -4113,7 +4112,7 @@ { \ /* Endpoint: 2, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(1015), \ + .attributes = ZAP_ATTRIBUTE_INDEX(1014), \ .attributeCount = 7, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -4126,7 +4125,7 @@ { \ /* Endpoint: 2, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(1022), \ + .attributes = ZAP_ATTRIBUTE_INDEX(1021), \ .attributeCount = 9, \ .clusterSize = 72, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -4139,7 +4138,7 @@ { \ /* Endpoint: 2, Cluster: Scenes Management (server) */ \ .clusterId = 0x00000062, \ - .attributes = ZAP_ATTRIBUTE_INDEX(1031), \ + .attributes = ZAP_ATTRIBUTE_INDEX(1030), \ .attributeCount = 5, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(SHUTDOWN_FUNCTION), \ @@ -4152,7 +4151,7 @@ { \ /* Endpoint: 2, Cluster: Occupancy Sensing (server) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(1036), \ + .attributes = ZAP_ATTRIBUTE_INDEX(1035), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -4165,7 +4164,7 @@ { \ /* Endpoint: 65534, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(1041), \ + .attributes = ZAP_ATTRIBUTE_INDEX(1040), \ .attributeCount = 6, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -4178,7 +4177,7 @@ { \ /* Endpoint: 65534, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(1047), \ + .attributes = ZAP_ATTRIBUTE_INDEX(1046), \ .attributeCount = 10, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h b/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h index 3f42a085adb376..ab7e45dab37b66 100644 --- a/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h +++ b/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h @@ -71,7 +71,7 @@ #define GENERATED_DEFAULTS_COUNT (3) // This is an array of EmberAfAttributeMinMaxValue structures. -#define GENERATED_MIN_MAX_DEFAULT_COUNT 3 +#define GENERATED_MIN_MAX_DEFAULT_COUNT 4 #define GENERATED_MIN_MAX_DEFAULTS \ { \ \ @@ -79,7 +79,8 @@ { (uint16_t) 0xFF, (uint16_t) 0x0, (uint16_t) 0x2 }, /* StartUpOnOff */ \ \ /* Endpoint: 1, Cluster: Level Control (server) */ \ - { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x3 }, /* Options */ \ + { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x3 }, /* Options */ \ + { (uint16_t) 0x32, (uint16_t) 0x1, (uint16_t) 0xFF }, /* DefaultMoveRate */ \ \ /* Endpoint: 1, Cluster: Color Control (server) */ \ { \ @@ -481,13 +482,13 @@ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* OnTransitionTime */ \ { ZAP_EMPTY_DEFAULT(), 0x00000013, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* OffTransitionTime */ \ - { ZAP_SIMPLE_DEFAULT(50), 0x00000014, 1, ZAP_TYPE(INT8U), \ - ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* DefaultMoveRate */ \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(2), 0x00000014, 1, ZAP_TYPE(INT8U), \ + ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* DefaultMoveRate */ \ { ZAP_SIMPLE_DEFAULT(255), 0x00004000, 1, ZAP_TYPE(INT8U), \ ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* StartUpCurrentLevel */ \ { ZAP_SIMPLE_DEFAULT(3), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(5), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + { ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ { ZAP_EMPTY_DEFAULT(), 0x00000000, 0, ZAP_TYPE(ARRAY), ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) }, /* DeviceTypeList */ \ @@ -528,11 +529,11 @@ { ZAP_SIMPLE_DEFAULT(0x0000), 0x0000400B, 2, ZAP_TYPE(INT16U), 0 }, /* ColorTempPhysicalMinMireds */ \ { ZAP_SIMPLE_DEFAULT(0xFEFF), 0x0000400C, 2, ZAP_TYPE(INT16U), 0 }, /* ColorTempPhysicalMaxMireds */ \ { ZAP_EMPTY_DEFAULT(), 0x0000400D, 2, ZAP_TYPE(INT16U), 0 }, /* CoupleColorTempToLevelMinMireds */ \ - { ZAP_MIN_MAX_DEFAULTS_INDEX(2), 0x00004010, 2, ZAP_TYPE(INT16U), \ + { ZAP_MIN_MAX_DEFAULTS_INDEX(3), 0x00004010, 2, ZAP_TYPE(INT16U), \ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* StartUpColorTemperatureMireds */ \ { ZAP_SIMPLE_DEFAULT(0x1F), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + { ZAP_SIMPLE_DEFAULT(7), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ { ZAP_EMPTY_DEFAULT(), 0x00000000, 1, ZAP_TYPE(BITMAP8), 0 }, /* Occupancy */ \ diff --git a/src/app/AttributeValueEncoder.h b/src/app/AttributeValueEncoder.h index 5c196f91f2e426..89436789f91a84 100644 --- a/src/app/AttributeValueEncoder.h +++ b/src/app/AttributeValueEncoder.h @@ -162,6 +162,7 @@ class AttributeValueEncoder private: // We made EncodeListItem() private, and ListEncoderHelper will expose it by Encode() friend class ListEncodeHelper; + friend class TestOnlyAttributeValueEncoderAccessor; template CHIP_ERROR EncodeListItem(Ts &&... aArgs) diff --git a/src/app/BUILD.gn b/src/app/BUILD.gn index 0ca8c63d37bb62..8e6ca6dadc569b 100644 --- a/src/app/BUILD.gn +++ b/src/app/BUILD.gn @@ -58,16 +58,6 @@ declare_args() { chip_im_static_global_interaction_model_engine = current_os != "linux" && current_os != "mac" && current_os != "ios" && current_os != "android" - - # Data model interface usage: - # - disabled: does not use data model interface at all - # - check: runs BOTH datamodel and non-data-model (if possible) functionality and compares results - # - enabled: runs only the data model interface (does not use the legacy code) - if (current_os == "linux") { - chip_use_data_model_interface = "check" - } else { - chip_use_data_model_interface = "disabled" - } } buildconfig_header("app_buildconfig") { @@ -219,6 +209,7 @@ static_library("interaction-model") { "WriteClient.h", "reporting/Engine.cpp", "reporting/Engine.h", + "reporting/Read.h", "reporting/ReportScheduler.h", "reporting/ReportSchedulerImpl.cpp", "reporting/ReportSchedulerImpl.h", @@ -260,6 +251,29 @@ static_library("interaction-model") { public_configs = [ "${chip_root}/src:includes" ] + if (chip_use_data_model_interface == "disabled") { + sources += [ + "reporting/Read-Ember.cpp", + "reporting/Read-Ember.h", + ] + } else if (chip_use_data_model_interface == "check") { + sources += [ + "reporting/Read-Checked.cpp", + "reporting/Read-Checked.h", + "reporting/Read-DataModel.cpp", + "reporting/Read-DataModel.h", + "reporting/Read-Ember.cpp", + "reporting/Read-Ember.h", + ] + public_deps += [ "${chip_root}/src/app/data-model-interface" ] + } else { # enabled + sources += [ + "reporting/Read-DataModel.cpp", + "reporting/Read-DataModel.h", + ] + public_deps += [ "${chip_root}/src/app/data-model-interface" ] + } + if (chip_enable_read_client) { sources += [ "ReadClient.cpp" ] } @@ -371,6 +385,9 @@ source_set("command-handler-interface") { "CommandHandler.cpp", "CommandHandler.h", "CommandHandlerExchangeInterface.h", + "CommandHandlerInterface.h", + "CommandHandlerInterfaceRegistry.cpp", + "CommandHandlerInterfaceRegistry.h", ] public_deps = [ diff --git a/src/app/CommandHandlerInterface.h b/src/app/CommandHandlerInterface.h index 6a0d8a4bc36e5c..4146556779756c 100644 --- a/src/app/CommandHandlerInterface.h +++ b/src/app/CommandHandlerInterface.h @@ -23,10 +23,8 @@ #include #include #include // So we can encode lists -#include #include #include -#include namespace chip { namespace app { diff --git a/src/app/CommandHandlerInterfaceRegistry.cpp b/src/app/CommandHandlerInterfaceRegistry.cpp new file mode 100644 index 00000000000000..74ea7d48d04955 --- /dev/null +++ b/src/app/CommandHandlerInterfaceRegistry.cpp @@ -0,0 +1,139 @@ +/** + * Copyright (c) 2024 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include + +using namespace chip::app; + +namespace { + +CommandHandlerInterface * gCommandHandlerList = nullptr; + +} + +namespace chip { +namespace app { +namespace CommandHandlerInterfaceRegistry { + +void UnregisterAllHandlers() +{ + + CommandHandlerInterface * handlerIter = gCommandHandlerList; + + // + // Walk our list of command handlers and de-register them, before finally + // nulling out the list entirely. + // + while (handlerIter) + { + CommandHandlerInterface * nextHandler = handlerIter->GetNext(); + handlerIter->SetNext(nullptr); + handlerIter = nextHandler; + } + + gCommandHandlerList = nullptr; +} + +CHIP_ERROR RegisterCommandHandler(CommandHandlerInterface * handler) +{ + VerifyOrReturnError(handler != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + + for (auto * cur = gCommandHandlerList; cur; cur = cur->GetNext()) + { + if (cur->Matches(*handler)) + { + ChipLogError(InteractionModel, "Duplicate command handler registration failed"); + return CHIP_ERROR_INCORRECT_STATE; + } + } + + handler->SetNext(gCommandHandlerList); + gCommandHandlerList = handler; + + return CHIP_NO_ERROR; +} + +void UnregisterAllCommandHandlersForEndpoint(EndpointId endpointId) +{ + + CommandHandlerInterface * prev = nullptr; + + for (auto * cur = gCommandHandlerList; cur; cur = cur->GetNext()) + { + if (cur->MatchesEndpoint(endpointId)) + { + if (prev == nullptr) + { + gCommandHandlerList = cur->GetNext(); + } + else + { + prev->SetNext(cur->GetNext()); + } + + cur->SetNext(nullptr); + } + else + { + prev = cur; + } + } +} + +CHIP_ERROR UnregisterCommandHandler(CommandHandlerInterface * handler) +{ + VerifyOrReturnError(handler != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + CommandHandlerInterface * prev = nullptr; + + for (auto * cur = gCommandHandlerList; cur; cur = cur->GetNext()) + { + if (cur->Matches(*handler)) + { + if (prev == nullptr) + { + gCommandHandlerList = cur->GetNext(); + } + else + { + prev->SetNext(cur->GetNext()); + } + + cur->SetNext(nullptr); + + return CHIP_NO_ERROR; + } + + prev = cur; + } + + return CHIP_ERROR_KEY_NOT_FOUND; +} + +CommandHandlerInterface * GetCommandHandler(EndpointId endpointId, ClusterId clusterId) +{ + for (auto * cur = gCommandHandlerList; cur; cur = cur->GetNext()) + { + if (cur->Matches(endpointId, clusterId)) + { + return cur; + } + } + + return nullptr; +} + +} // namespace CommandHandlerInterfaceRegistry +} // namespace app +} // namespace chip diff --git a/src/app/CommandHandlerInterfaceRegistry.h b/src/app/CommandHandlerInterfaceRegistry.h new file mode 100644 index 00000000000000..14e00335fd859d --- /dev/null +++ b/src/app/CommandHandlerInterfaceRegistry.h @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2024 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include + +namespace chip { +namespace app { +namespace CommandHandlerInterfaceRegistry { + +/// Remove the entire linked list of handlers +void UnregisterAllHandlers(); + +/// Add a new handler to the list of registered command handlers +/// +/// At most one command handler can exist for a given endpoint/cluster combination. Trying +/// to register conflicting handlers will result in a `CHIP_ERROR_INCORRECT_STATE` error. +CHIP_ERROR RegisterCommandHandler(CommandHandlerInterface * handler); + +/// Unregister all commandHandlers that `MatchesEndpoint` for the given endpointId. +void UnregisterAllCommandHandlersForEndpoint(EndpointId endpointId); + +/// Unregister a single handler. +/// +/// If the handler is not registered, a `CHIP_ERROR_KEY_NOT_FOUND` is returned. +CHIP_ERROR UnregisterCommandHandler(CommandHandlerInterface * handler); + +/// Find the command handler for the given endpoint/cluster combination or return +/// nullptr if no such command handler exists. +CommandHandlerInterface * GetCommandHandler(EndpointId endpointId, ClusterId clusterId); + +} // namespace CommandHandlerInterfaceRegistry +} // namespace app +} // namespace chip diff --git a/src/app/InteractionModelEngine.cpp b/src/app/InteractionModelEngine.cpp index cb595e5bf239d1..dcdbd3f10d2f85 100644 --- a/src/app/InteractionModelEngine.cpp +++ b/src/app/InteractionModelEngine.cpp @@ -27,9 +27,10 @@ #include -#include "access/RequestPath.h" -#include "access/SubjectDescriptor.h" +#include +#include #include +#include #include #include #include @@ -92,6 +93,15 @@ CHIP_ERROR InteractionModelEngine::Init(Messaging::ExchangeManager * apExchangeM StatusIB::RegisterErrorFormatter(); +#if CHIP_CONFIG_USE_EMBER_DATA_MODEL && CHIP_CONFIG_USE_DATA_MODEL_INTERFACE + ChipLogError(InteractionModel, "WARNING ┌────────────────────────────────────────────────────"); + ChipLogError(InteractionModel, "WARNING │ Interaction Model Engine running in 'Checked' mode."); + ChipLogError(InteractionModel, "WARNING │ This executes BOTH ember and data-model code paths."); + ChipLogError(InteractionModel, "WARNING │ which is inefficient and consumes more flash space."); + ChipLogError(InteractionModel, "WARNING │ This should be done for testing only."); + ChipLogError(InteractionModel, "WARNING └────────────────────────────────────────────────────"); +#endif + return CHIP_NO_ERROR; } @@ -99,20 +109,9 @@ void InteractionModelEngine::Shutdown() { mpExchangeMgr->GetSessionManager()->SystemLayer()->CancelTimer(ResumeSubscriptionsTimerCallback, this); - CommandHandlerInterface * handlerIter = mCommandHandlerList; - - // - // Walk our list of command handlers and de-register them, before finally - // nulling out the list entirely. - // - while (handlerIter) - { - CommandHandlerInterface * nextHandler = handlerIter->GetNext(); - handlerIter->SetNext(nullptr); - handlerIter = nextHandler; - } - - mCommandHandlerList = nullptr; + // TODO: individual object clears the entire command handler interface registry. + // This may not be expected. + CommandHandlerInterfaceRegistry::UnregisterAllHandlers(); mCommandResponderObjs.ReleaseAll(); @@ -1682,7 +1681,8 @@ CHIP_ERROR InteractionModelEngine::PushFront(SingleLinkedListNode *& aObjectL void InteractionModelEngine::DispatchCommand(CommandHandlerImpl & apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & apPayload) { - CommandHandlerInterface * handler = FindCommandHandler(aCommandPath.mEndpointId, aCommandPath.mClusterId); + CommandHandlerInterface * handler = + CommandHandlerInterfaceRegistry::GetCommandHandler(aCommandPath.mEndpointId, aCommandPath.mClusterId); if (handler) { @@ -1706,91 +1706,14 @@ Protocols::InteractionModel::Status InteractionModelEngine::CommandExists(const return ServerClusterCommandExists(aCommandPath); } -CHIP_ERROR InteractionModelEngine::RegisterCommandHandler(CommandHandlerInterface * handler) -{ - VerifyOrReturnError(handler != nullptr, CHIP_ERROR_INVALID_ARGUMENT); - - for (auto * cur = mCommandHandlerList; cur; cur = cur->GetNext()) - { - if (cur->Matches(*handler)) - { - ChipLogError(InteractionModel, "Duplicate command handler registration failed"); - return CHIP_ERROR_INCORRECT_STATE; - } - } - - handler->SetNext(mCommandHandlerList); - mCommandHandlerList = handler; - - return CHIP_NO_ERROR; -} - -void InteractionModelEngine::UnregisterCommandHandlers(EndpointId endpointId) -{ - CommandHandlerInterface * prev = nullptr; - - for (auto * cur = mCommandHandlerList; cur; cur = cur->GetNext()) - { - if (cur->MatchesEndpoint(endpointId)) - { - if (prev == nullptr) - { - mCommandHandlerList = cur->GetNext(); - } - else - { - prev->SetNext(cur->GetNext()); - } - - cur->SetNext(nullptr); - } - else - { - prev = cur; - } - } -} - -CHIP_ERROR InteractionModelEngine::UnregisterCommandHandler(CommandHandlerInterface * handler) +InteractionModel::DataModel * InteractionModelEngine::SetDataModel(InteractionModel::DataModel * model) { - VerifyOrReturnError(handler != nullptr, CHIP_ERROR_INVALID_ARGUMENT); - CommandHandlerInterface * prev = nullptr; + // Alternting data model should not be done while IM is actively handling requests. + VerifyOrDie(mReadHandlers.begin() == mReadHandlers.end()); - for (auto * cur = mCommandHandlerList; cur; cur = cur->GetNext()) - { - if (cur->Matches(*handler)) - { - if (prev == nullptr) - { - mCommandHandlerList = cur->GetNext(); - } - else - { - prev->SetNext(cur->GetNext()); - } - - cur->SetNext(nullptr); - - return CHIP_NO_ERROR; - } - - prev = cur; - } - - return CHIP_ERROR_KEY_NOT_FOUND; -} - -CommandHandlerInterface * InteractionModelEngine::FindCommandHandler(EndpointId endpointId, ClusterId clusterId) -{ - for (auto * cur = mCommandHandlerList; cur; cur = cur->GetNext()) - { - if (cur->Matches(endpointId, clusterId)) - { - return cur; - } - } - - return nullptr; + InteractionModel::DataModel * oldModel = GetDataModel(); + mDataModel = model; + return oldModel; } InteractionModel::DataModel * InteractionModelEngine::GetDataModel() const diff --git a/src/app/InteractionModelEngine.h b/src/app/InteractionModelEngine.h index e2d299cce67280..9d420f7f654176 100644 --- a/src/app/InteractionModelEngine.h +++ b/src/app/InteractionModelEngine.h @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -126,10 +125,6 @@ class InteractionModelEngine : public Messaging::UnsolicitedMessageHandler, * @param[in] apFabricTable A pointer to the FabricTable object. * @param[in] apCASESessionMgr An optional pointer to a CASESessionManager (used for re-subscriptions). * - * @retval #CHIP_ERROR_INCORRECT_STATE If the state is not equal to - * kState_NotInitialized. - * @retval #CHIP_NO_ERROR On success. - * */ CHIP_ERROR Init(Messaging::ExchangeManager * apExchangeMgr, FabricTable * apFabricTable, reporting::ReportScheduler * reportScheduler, CASESessionManager * apCASESessionMgr = nullptr, @@ -216,11 +211,6 @@ class InteractionModelEngine : public Messaging::UnsolicitedMessageHandler, CHIP_ERROR PushFrontDataVersionFilterList(SingleLinkedListNode *& aDataVersionFilterList, DataVersionFilter & aDataVersionFilter); - CHIP_ERROR RegisterCommandHandler(CommandHandlerInterface * handler); - CHIP_ERROR UnregisterCommandHandler(CommandHandlerInterface * handler); - CommandHandlerInterface * FindCommandHandler(EndpointId endpointId, ClusterId clusterId); - void UnregisterCommandHandlers(EndpointId endpointId); - /* * Register an application callback to be notified of notable events when handling reads/subscribes. */ @@ -414,6 +404,13 @@ class InteractionModelEngine : public Messaging::UnsolicitedMessageHandler, InteractionModel::DataModel * GetDataModel() const; + // MUST NOT be used while the interaction model engine is running as interaction + // model functionality (e.g. active reads/writes/subscriptions) rely on data model + // state + // + // Returns the old data model value. + InteractionModel::DataModel * SetDataModel(InteractionModel::DataModel * model); + private: friend class reporting::Engine; friend class TestCommandInteraction; @@ -617,8 +614,6 @@ class InteractionModelEngine : public Messaging::UnsolicitedMessageHandler, Messaging::ExchangeManager * mpExchangeMgr = nullptr; - CommandHandlerInterface * mCommandHandlerList = nullptr; - #if CHIP_CONFIG_ENABLE_ICD_SERVER ICDManager * mICDManager = nullptr; #endif // CHIP_CONFIG_ENABLE_ICD_SERVER diff --git a/src/app/cluster-building-blocks/QuieterReporting.h b/src/app/cluster-building-blocks/QuieterReporting.h index d44f12b0f2b0bf..bf6b4fe36346d2 100644 --- a/src/app/cluster-building-blocks/QuieterReporting.h +++ b/src/app/cluster-building-blocks/QuieterReporting.h @@ -142,15 +142,6 @@ class QuieterReportingAttribute }; } - /** - * @brief Factory to generate a functor that forces reportable now. - * @return a functor usable for the `changedPredicate` arg of `SetValue()` - */ - static SufficientChangePredicate GetForceReportablePredicate() - { - return [](const SufficientChangePredicateCandidate & candidate) -> bool { return true; }; - } - Nullable value() const { return mValue; } QuieterReportingPolicyFlags & policy() { return mPolicyFlags; } const QuieterReportingPolicyFlags & policy() const { return mPolicyFlags; } @@ -163,6 +154,7 @@ class QuieterReportingAttribute * - The policies from `QuieterReportingPolicyEnum` and set via `SetPolicy()` are self-explanatory by name. * - The changedPredicate will be called with last dirty and new and may override * the dirty state altogether when it returns true. Use sparingly and default to a functor returning false. + * The changedPredicate is only called on change. * * Internal recording will be done about last dirty value and last dirty timestamp based on the policies having applied. * @@ -172,13 +164,13 @@ class QuieterReportingAttribute * @return AttributeDirtyState::kMustReport if attribute must be marked dirty right away, or * AttributeDirtyState::kNoReportNeeded otherwise. */ - AttributeDirtyState SetValue(const chip::app::DataModel::Nullable & newValue, Timestamp now, - SufficientChangePredicate changedPredicate) + AttributeDirtyState SetValue(const DataModel::Nullable & newValue, Timestamp now, SufficientChangePredicate changedPredicate) { - bool isChangeOfNull = newValue.IsNull() ^ mValue.IsNull(); - bool areBothValuesNonNull = !newValue.IsNull() && !mValue.IsNull(); + bool isChangeOfNull = newValue.IsNull() != mValue.IsNull(); + bool areBothValuesNonNull = !newValue.IsNull() && !mValue.IsNull(); + bool areBothValuesDifferent = areBothValuesNonNull && (newValue.Value() != mValue.Value()); - bool changeToFromZero = areBothValuesNonNull && (newValue.Value() == 0 || mValue.Value() == 0); + bool changeToFromZero = areBothValuesNonNull && areBothValuesDifferent && (newValue.Value() == 0 || mValue.Value() == 0); bool isIncrement = areBothValuesNonNull && (newValue.Value() > mValue.Value()); bool isDecrement = areBothValuesNonNull && (newValue.Value() < mValue.Value()); @@ -188,13 +180,17 @@ class QuieterReportingAttribute isNewlyDirty = isNewlyDirty || (mPolicyFlags.Has(QuieterReportingPolicyEnum::kMarkDirtyOnDecrement) && isDecrement); isNewlyDirty = isNewlyDirty || (mPolicyFlags.Has(QuieterReportingPolicyEnum::kMarkDirtyOnIncrement) && isIncrement); - SufficientChangePredicateCandidate candidate{ - mLastDirtyTimestampMillis, // lastDirtyTimestamp - now, // nowTimestamp - mLastDirtyValue, // lastDirtyValue - newValue // newValue - }; - isNewlyDirty = isNewlyDirty || changedPredicate(candidate); + // Only execute predicate on value change from last marked dirty. + if (newValue != mLastDirtyValue) + { + SufficientChangePredicateCandidate candidate{ + mLastDirtyTimestampMillis, // lastDirtyTimestamp + now, // nowTimestamp + mLastDirtyValue, // lastDirtyValue + newValue // newValue + }; + isNewlyDirty = isNewlyDirty || changedPredicate(candidate); + } mValue = newValue; @@ -217,20 +213,20 @@ class QuieterReportingAttribute * @return AttributeDirtyState::kMustReport if attribute must be marked dirty right away, or * AttributeDirtyState::kNoReportNeeded otherwise. */ - AttributeDirtyState SetValue(const chip::app::DataModel::Nullable & newValue, Timestamp now) + AttributeDirtyState SetValue(const DataModel::Nullable & newValue, Timestamp now) { return SetValue(newValue, now, [](const SufficientChangePredicateCandidate &) -> bool { return false; }); } protected: // Current value of the attribute. - chip::app::DataModel::Nullable mValue; + DataModel::Nullable mValue; // Last value that was marked as dirty (to use in comparisons for change, e.g. by SufficientChangePredicate). - chip::app::DataModel::Nullable mLastDirtyValue; + DataModel::Nullable mLastDirtyValue; // Enabled internal change detection policies. QuieterReportingPolicyFlags mPolicyFlags{ 0 }; // Timestamp associated with the last time the attribute was marked dirty (to use in comparisons for change). - chip::System::Clock::Milliseconds64 mLastDirtyTimestampMillis{}; + chip::System::Clock::Timestamp mLastDirtyTimestampMillis{}; }; } // namespace detail diff --git a/src/app/cluster-building-blocks/tests/TestQuieterReporting.cpp b/src/app/cluster-building-blocks/tests/TestQuieterReporting.cpp index a7750380285438..ad7800d556afa4 100644 --- a/src/app/cluster-building-blocks/tests/TestQuieterReporting.cpp +++ b/src/app/cluster-building-blocks/tests/TestQuieterReporting.cpp @@ -74,6 +74,10 @@ TEST(TestQuieterReporting, ChangeToFromZeroPolicyWorks) EXPECT_EQ(attribute.SetValue(0, now), AttributeDirtyState::kMustReport); EXPECT_EQ(attribute.value().ValueOr(INT_MAX), 0); + // 0 --> 0, expect NOT marked dirty. + EXPECT_EQ(attribute.SetValue(0, now), AttributeDirtyState::kNoReportNeeded); + EXPECT_EQ(attribute.value().ValueOr(INT_MAX), 0); + // 0 --> 11, expect marked dirty. EXPECT_EQ(attribute.SetValue(11, now), AttributeDirtyState::kMustReport); EXPECT_EQ(attribute.value().ValueOr(INT_MAX), 11); @@ -209,9 +213,6 @@ TEST(TestQuieterReporting, SufficientChangePredicateWorks) EXPECT_EQ(attribute.SetValue(10, now), AttributeDirtyState::kNoReportNeeded); EXPECT_EQ(attribute.value().ValueOr(INT_MAX), 10); - // Forcing dirty can be done with a force-true predicate - EXPECT_EQ(attribute.SetValue(10, now, attribute.GetForceReportablePredicate()), AttributeDirtyState::kMustReport); - auto predicate = attribute.GetPredicateForSufficientTimeSinceLastDirty(1000_ms); now = fakeClock.Advance(100_ms); @@ -250,6 +251,14 @@ TEST(TestQuieterReporting, SufficientChangePredicateWorks) EXPECT_EQ(attribute.SetValue(14, now, predicate), AttributeDirtyState::kNoReportNeeded); EXPECT_EQ(attribute.value().ValueOr(INT_MAX), 14); + // Forcing dirty can NOT done with a force-true predicate. + decltype(attribute)::SufficientChangePredicate forceTruePredicate{ + [](const decltype(attribute)::SufficientChangePredicateCandidate &) -> bool { return true; } + }; + now = fakeClock.Advance(1_ms); + EXPECT_EQ(attribute.SetValue(12, now, forceTruePredicate), AttributeDirtyState::kNoReportNeeded); + EXPECT_EQ(attribute.value().ValueOr(INT_MAX), 12); + // Change to a value that marks dirty no matter what (e.g. null). Should be dirty even // before delay. now = fakeClock.Advance(1_ms); diff --git a/src/app/clusters/color-control-server/color-control-server.cpp b/src/app/clusters/color-control-server/color-control-server.cpp index 6c2dcb2353331c..55c8cd9e7a77de 100644 --- a/src/app/clusters/color-control-server/color-control-server.cpp +++ b/src/app/clusters/color-control-server/color-control-server.cpp @@ -491,7 +491,19 @@ bool ColorControlServer::stopMoveStepCommand(app::CommandHandler * commandObj, c EndpointId endpoint = commandPath.mEndpointId; Status status = Status::Success; - if (shouldExecuteIfOff(endpoint, optionsMask, optionsOverride)) + // StopMoveStep command has no effect on an active color loop. + // Fetch if it is supported and active. + uint8_t isColorLoopActive = 0; + if (ColorControlServer::Instance().HasFeature(endpoint, ColorControlServer::Feature::kColorLoop)) + { + // In case of get failure, isColorLoopActive will remain at the init value 0 (not active) + if (Attributes::ColorLoopActive::Get(endpoint, &isColorLoopActive) != Status::Success) + { + ChipLogError(Zcl, "Failed to retrieve ColorLoopActive value"); + } + } + + if (shouldExecuteIfOff(endpoint, optionsMask, optionsOverride) && !isColorLoopActive) { status = stopAllColorTransitions(endpoint); @@ -1165,7 +1177,7 @@ bool ColorControlServer::computeNewHueValue(ColorControlServer::ColorHueTransiti return true; } - // Check if we are in a color loop. If not, we are in a moveHue + // Check if we are in a color loop. If not, we are in a moveHue uint8_t isColorLoop = 0; Attributes::ColorLoopActive::Get(p->endpoint, &isColorLoop); @@ -1387,7 +1399,8 @@ bool ColorControlServer::moveHueCommand(app::CommandHandler * commandObj, const VerifyOrExit(colorHueTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // check moveMode before any operation is done on the transition states + // check moveMode and rate before any operation is done on the transition states + // rate value is ignored if the MoveMode is stop if (moveMode == HueMoveMode::kUnknownEnumValue || (rate == 0 && moveMode != HueMoveMode::kStop)) { commandObj->AddStatus(commandPath, Status::InvalidCommand); @@ -1669,8 +1682,8 @@ bool ColorControlServer::stepHueCommand(app::CommandHandler * commandObj, const ColorHueTransitionState * colorHueTransitionState = getColorHueTransitionState(endpoint); VerifyOrExit(colorHueTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // Confirm validity of the step mode received - if (stepMode == HueStepMode::kUnknownEnumValue) + // Confirm validity of the step mode and step size received + if (stepMode == HueStepMode::kUnknownEnumValue || stepSize == 0) { commandObj->AddStatus(commandPath, Status::InvalidCommand); return true; @@ -1756,7 +1769,8 @@ bool ColorControlServer::moveSaturationCommand(app::CommandHandler * commandObj, Color16uTransitionState * colorSaturationTransitionState = getSaturationTransitionState(endpoint); VerifyOrExit(colorSaturationTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // check moveMode before any operation is done on the transition states + // check moveMode and rate before any operation is done on the transition states + // rate value is ignored if the MoveMode is stop if (moveMode == SaturationMoveMode::kUnknownEnumValue || (rate == 0 && moveMode != SaturationMoveMode::kStop)) { commandObj->AddStatus(commandPath, Status::InvalidCommand); @@ -1867,8 +1881,8 @@ bool ColorControlServer::stepSaturationCommand(app::CommandHandler * commandObj, Color16uTransitionState * colorSaturationTransitionState = getSaturationTransitionState(endpoint); VerifyOrExit(colorSaturationTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // Confirm validity of the step mode received - if (stepMode == SaturationStepMode::kUnknownEnumValue) + // Confirm validity of the step mode and step size received + if (stepMode == SaturationStepMode::kUnknownEnumValue || stepSize == 0) { commandObj->AddStatus(commandPath, Status::InvalidCommand); return true; @@ -1947,7 +1961,11 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons return true; } - Attributes::ColorLoopActive::Get(endpoint, &isColorLoopActive); + // In case of get failure, isColorLoopActive will remain at the init value 0 (not active) + if (Attributes::ColorLoopActive::Get(endpoint, &isColorLoopActive) != Status::Success) + { + ChipLogError(Zcl, "Failed to retrieve ColorLoopActive value"); + } deactiveColorLoop = updateFlags.Has(ColorLoopUpdateFlags::kUpdateAction) && (action == ColorLoopAction::kDeactivate); @@ -2277,6 +2295,7 @@ bool ColorControlServer::moveColorCommand(app::CommandHandler * commandObj, cons if (rateX == 0 && rateY == 0) { + // any current transition has been stopped. We are done. commandObj->AddStatus(commandPath, Status::Success); return true; } @@ -2364,6 +2383,12 @@ bool ColorControlServer::stepColorCommand(app::CommandHandler * commandObj, cons VerifyOrExit(colorXTransitionState != nullptr, status = Status::UnsupportedEndpoint); VerifyOrExit(colorYTransitionState != nullptr, status = Status::UnsupportedEndpoint); + if (stepX == 0 && stepY == 0) + { + commandObj->AddStatus(commandPath, Status::InvalidCommand); + return true; + } + if (!shouldExecuteIfOff(endpoint, optionsMask, optionsOverride)) { commandObj->AddStatus(commandPath, Status::Success); @@ -2693,7 +2718,8 @@ bool ColorControlServer::moveColorTempCommand(app::CommandHandler * commandObj, Color16uTransitionState * colorTempTransitionState = getTempTransitionState(endpoint); VerifyOrExit(colorTempTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // check moveMode before any operation is done on the transition states + // check moveMode and rate before any operation is done on the transition states + // rate value is ignored if the MoveMode is stop if (moveMode == HueMoveMode::kUnknownEnumValue || (rate == 0 && moveMode != HueMoveMode::kStop)) { commandObj->AddStatus(commandPath, Status::InvalidCommand); @@ -2815,8 +2841,8 @@ bool ColorControlServer::stepColorTempCommand(app::CommandHandler * commandObj, Color16uTransitionState * colorTempTransitionState = getTempTransitionState(endpoint); VerifyOrExit(colorTempTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // Confirm validity of the step mode received - if (stepMode == HueStepMode::kUnknownEnumValue) + // Confirm validity of the step mode and step size received + if (stepMode == HueStepMode::kUnknownEnumValue || stepSize == 0) { commandObj->AddStatus(commandPath, Status::InvalidCommand); return true; diff --git a/src/app/clusters/device-energy-management-server/device-energy-management-server.cpp b/src/app/clusters/device-energy-management-server/device-energy-management-server.cpp index 035a3daef71b88..dc6e2a44de618a 100644 --- a/src/app/clusters/device-energy-management-server/device-energy-management-server.cpp +++ b/src/app/clusters/device-energy-management-server/device-energy-management-server.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -37,7 +38,7 @@ namespace DeviceEnergyManagement { CHIP_ERROR Instance::Init() { - ReturnErrorOnFailure(InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INCORRECT_STATE); return CHIP_NO_ERROR; @@ -45,7 +46,7 @@ CHIP_ERROR Instance::Init() void Instance::Shutdown() { - InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); + CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); unregisterAttributeAccessOverride(this); } diff --git a/src/app/clusters/energy-evse-server/energy-evse-server.cpp b/src/app/clusters/energy-evse-server/energy-evse-server.cpp index 2e2f6867e094c1..af825217e2565a 100644 --- a/src/app/clusters/energy-evse-server/energy-evse-server.cpp +++ b/src/app/clusters/energy-evse-server/energy-evse-server.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -37,7 +38,7 @@ namespace EnergyEvse { CHIP_ERROR Instance::Init() { - ReturnErrorOnFailure(InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INCORRECT_STATE); return CHIP_NO_ERROR; @@ -45,7 +46,7 @@ CHIP_ERROR Instance::Init() void Instance::Shutdown() { - InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); + CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); unregisterAttributeAccessOverride(this); } diff --git a/src/app/clusters/level-control/level-control.cpp b/src/app/clusters/level-control/level-control.cpp index 6ae7d141a4edfe..3f15620181dfd0 100644 --- a/src/app/clusters/level-control/level-control.cpp +++ b/src/app/clusters/level-control/level-control.cpp @@ -950,14 +950,21 @@ static void moveHandler(app::CommandHandler * commandObj, const app::ConcreteCom app::DataModel::Nullable rate, chip::Optional> optionsMask, chip::Optional> optionsOverride) { - EndpointId endpoint = commandPath.mEndpointId; - CommandId commandId = commandPath.mCommandId; - - EmberAfLevelControlState * state = getState(endpoint); Status status; - app::DataModel::Nullable currentLevel; uint8_t difference; + EmberAfLevelControlState * state; + app::DataModel::Nullable currentLevel; + EndpointId endpoint = commandPath.mEndpointId; + CommandId commandId = commandPath.mCommandId; + // Validate the received rate and moveMode first. + if (rate == static_cast(0) || moveMode == MoveModeEnum::kUnknownEnumValue) + { + status = Status::InvalidCommand; + goto send_default_response; + } + + state = getState(endpoint); if (state == nullptr) { status = Status::Failure; @@ -970,18 +977,51 @@ static void moveHandler(app::CommandHandler * commandObj, const app::ConcreteCom goto send_default_response; } - if (!rate.IsNull() && (rate.Value() == 0)) + uint8_t eventDuration; // use this local var so state->eventDurationMs is only set once the command is validated. +#ifndef IGNORE_LEVEL_CONTROL_CLUSTER_TRANSITION + // If the Rate field is null, the device should move at the default move rate, if available, + // Otherwise, move as fast as possible + if (rate.IsNull()) { - // Move at a rate of zero is no move at all. Immediately succeed without touching anything. - ChipLogProgress(Zcl, "Immediate success due to move rate of 0 (would move at no rate)."); - status = Status::Success; - goto send_default_response; + app::DataModel::Nullable defaultMoveRate; + status = Attributes::DefaultMoveRate::Get(endpoint, defaultMoveRate); + if (status != Status::Success || defaultMoveRate.IsNull()) + { + ChipLogProgress(Zcl, "ERR: reading default move rate %x", to_underlying(status)); + eventDuration = FASTEST_TRANSITION_TIME_MS; + } + else + { + // This should never occur, but old devices could have this, now invalid, value stored. + if (defaultMoveRate.Value() == 0) + { + // The spec is not explicit about what should be done if this happens. + // For now Error out if DefaultMoveRate is equal to 0 as this is invalid + // until spec defines a behaviour. + status = Status::InvalidCommand; + goto send_default_response; + } + // Already checked that defaultMoveRate.Value() != 0. + eventDuration = static_cast(MILLISECOND_TICKS_PER_SECOND / defaultMoveRate.Value()); + } + } + else + { + // Already confirmed rate.Value() != 0. + eventDuration = static_cast(MILLISECOND_TICKS_PER_SECOND / rate.Value()); } +#else + // Transition/rate is not supported so always use fastest transition time and ignore + // both the provided transition time as well as OnOffTransitionTime. + ChipLogProgress(Zcl, "Device does not support transition, ignoring rate"); + eventDuration = FASTEST_TRANSITION_TIME_MS; +#endif // IGNORE_LEVEL_CONTROL_CLUSTER_TRANSITION // Cancel any currently active command before fiddling with the state. cancelEndpointTimerCallback(endpoint); - status = Attributes::CurrentLevel::Get(endpoint, currentLevel); + state->eventDurationMs = eventDuration; + status = Attributes::CurrentLevel::Get(endpoint, currentLevel); if (status != Status::Success) { ChipLogProgress(Zcl, "ERR: reading current level %x", to_underlying(status)); @@ -1034,41 +1074,6 @@ static void moveHandler(app::CommandHandler * commandObj, const app::ConcreteCom } } -#ifndef IGNORE_LEVEL_CONTROL_CLUSTER_TRANSITION - // If the Rate field is null, the device should move at the default move rate, if available, - // Otherwise, move as fast as possible - if (rate.IsNull()) - { - app::DataModel::Nullable defaultMoveRate; - status = Attributes::DefaultMoveRate::Get(endpoint, defaultMoveRate); - if (status != Status::Success || defaultMoveRate.IsNull()) - { - ChipLogProgress(Zcl, "ERR: reading default move rate %x", to_underlying(status)); - state->eventDurationMs = FASTEST_TRANSITION_TIME_MS; - } - else - { - // nonsensical case, means "don't move", so we're done - if (defaultMoveRate.Value() == 0) - { - status = Status::Success; - goto send_default_response; - } - // Already checked that defaultMoveRate.Value() != 0. - state->eventDurationMs = MILLISECOND_TICKS_PER_SECOND / defaultMoveRate.Value(); - } - } - else - { - state->eventDurationMs = MILLISECOND_TICKS_PER_SECOND / std::max(static_cast(1u), rate.Value()); - } -#else - // Transition/rate is not supported so always use fastest transition time and ignore - // both the provided transition time as well as OnOffTransitionTime. - ChipLogProgress(Zcl, "Device does not support transition, ignoring rate"); - state->eventDurationMs = FASTEST_TRANSITION_TIME_MS; -#endif // IGNORE_LEVEL_CONTROL_CLUSTER_TRANSITION - state->transitionTimeMs = difference * state->eventDurationMs; state->elapsedTimeMs = 0; @@ -1089,14 +1094,22 @@ static void stepHandler(app::CommandHandler * commandObj, const app::ConcreteCom uint8_t stepSize, app::DataModel::Nullable transitionTimeDs, chip::Optional> optionsMask, chip::Optional> optionsOverride) { - EndpointId endpoint = commandPath.mEndpointId; - CommandId commandId = commandPath.mCommandId; - - EmberAfLevelControlState * state = getState(endpoint); Status status; + EmberAfLevelControlState * state; app::DataModel::Nullable currentLevel; + + EndpointId endpoint = commandPath.mEndpointId; + CommandId commandId = commandPath.mCommandId; uint8_t actualStepSize = stepSize; + // Validate the received stepSize and stepMode first. + if (stepSize == 0 || stepMode == StepModeEnum::kUnknownEnumValue) + { + status = Status::InvalidCommand; + goto send_default_response; + } + + state = getState(endpoint); if (state == nullptr) { status = Status::Failure; @@ -1158,6 +1171,7 @@ static void stepHandler(app::CommandHandler * commandObj, const app::ConcreteCom } break; default: + // Should never happen as it is verified at function entry. status = Status::InvalidCommand; goto send_default_response; } diff --git a/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp b/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp index d47742570ed2e0..49022891f0b1e9 100644 --- a/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp +++ b/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -53,7 +54,7 @@ Instance::Instance(Delegate * aDelegate, EndpointId aEndpointId, ClusterId aClus Instance::~Instance() { - InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); + CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); unregisterAttributeAccessOverride(this); } @@ -88,7 +89,7 @@ CHIP_ERROR Instance::Init() Zcl, "Microwave Oven Control: feature bits error, if feature supports PowerNumberLimits it must support PowerAsNumber")); - ReturnErrorOnFailure(InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INCORRECT_STATE); // If the PowerInWatts feature is supported, get the count of supported watt levels so we can later // ensure incoming watt level values are valid. diff --git a/src/app/clusters/mode-base-server/mode-base-server.cpp b/src/app/clusters/mode-base-server/mode-base-server.cpp index bb6aac6837c0bf..643dd3dd76bee2 100644 --- a/src/app/clusters/mode-base-server/mode-base-server.cpp +++ b/src/app/clusters/mode-base-server/mode-base-server.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -63,7 +64,7 @@ void Instance::Shutdown() return; } UnregisterThisInstance(); - chip::app::InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); + CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); unregisterAttributeAccessOverride(this); } @@ -77,7 +78,7 @@ CHIP_ERROR Instance::Init() LoadPersistentAttributes(); - ReturnErrorOnFailure(chip::app::InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INCORRECT_STATE); RegisterThisInstance(); ReturnErrorOnFailure(mDelegate->Init()); diff --git a/src/app/clusters/network-commissioning/network-commissioning.cpp b/src/app/clusters/network-commissioning/network-commissioning.cpp index f2e74033d8266c..2cfe46c70993dc 100644 --- a/src/app/clusters/network-commissioning/network-commissioning.cpp +++ b/src/app/clusters/network-commissioning/network-commissioning.cpp @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include #include @@ -358,7 +358,7 @@ Instance::Instance(EndpointId aEndpointId, EthernetDriver * apDelegate) : CHIP_ERROR Instance::Init() { - ReturnErrorOnFailure(InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INCORRECT_STATE); ReturnErrorOnFailure(DeviceLayer::PlatformMgrImpl().AddEventHandler(OnPlatformEventHandler, reinterpret_cast(this))); ReturnErrorOnFailure(mpBaseDriver->Init(this)); diff --git a/src/app/clusters/on-off-server/on-off-server.cpp b/src/app/clusters/on-off-server/on-off-server.cpp index 8332403d68ebd4..726da2d29f7c4d 100644 --- a/src/app/clusters/on-off-server/on-off-server.cpp +++ b/src/app/clusters/on-off-server/on-off-server.cpp @@ -89,6 +89,12 @@ void UpdateModeBaseCurrentModeToOnMode(EndpointId endpoint) #endif // MATTER_DM_PLUGIN_MODE_BASE +template +bool IsKnownEnumValue(EnumType value) +{ + return (EnsureKnownEnumValue(value) != EnumType::kUnknownEnumValue); +} + } // namespace #ifdef MATTER_DM_PLUGIN_LEVEL_CONTROL @@ -609,6 +615,35 @@ bool OnOffServer::offWithEffectCommand(app::CommandHandler * commandObj, const a chip::EndpointId endpoint = commandPath.mEndpointId; Status status = Status::Success; + if (effectId != EffectIdentifierEnum::kUnknownEnumValue) + { + // Depending on effectId value, effectVariant enum type varies. + // The following check validates that effectVariant value is valid in relation to the applicable enum type. + // DelayedAllOffEffectVariantEnum or DyingLightEffectVariantEnum + if (effectId == EffectIdentifierEnum::kDelayedAllOff && + !IsKnownEnumValue(static_cast(effectVariant))) + { + // The server does not support the given variant, it SHALL use the default variant. + effectVariant = to_underlying(DelayedAllOffEffectVariantEnum::kDelayedOffFastFade); + } + else if (effectId == EffectIdentifierEnum::kDyingLight && + !IsKnownEnumValue(static_cast(effectVariant))) + { + // The server does not support the given variant, it SHALL use the default variant. + effectVariant = to_underlying(DyingLightEffectVariantEnum::kDyingLightFadeOff); + } + } + else + { + status = Status::ConstraintError; + } + + if (status != Status::Success) + { + commandObj->AddStatus(commandPath, status); + return true; + } + if (SupportsLightingApplications(endpoint)) { #ifdef MATTER_DM_PLUGIN_SCENES_MANAGEMENT diff --git a/src/app/clusters/operational-state-server/operational-state-server.cpp b/src/app/clusters/operational-state-server/operational-state-server.cpp index 50b4cd0178a8af..b6ae0d7a221253 100644 --- a/src/app/clusters/operational-state-server/operational-state-server.cpp +++ b/src/app/clusters/operational-state-server/operational-state-server.cpp @@ -20,9 +20,11 @@ * @brief Implementation for the Operational State Server Cluster ***************************************************************************/ #include "operational-state-server.h" + #include #include #include +#include #include #include #include @@ -47,7 +49,7 @@ Instance::Instance(Delegate * aDelegate, EndpointId aEndpointId) : Instance(aDel Instance::~Instance() { - InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); + CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); unregisterAttributeAccessOverride(this); } @@ -60,7 +62,7 @@ CHIP_ERROR Instance::Init() return CHIP_ERROR_INVALID_ARGUMENT; } - ReturnErrorOnFailure(InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INCORRECT_STATE); diff --git a/src/app/clusters/resource-monitoring-server/resource-monitoring-server.cpp b/src/app/clusters/resource-monitoring-server/resource-monitoring-server.cpp index 25a0be188ad7af..4d1197a73b83b8 100644 --- a/src/app/clusters/resource-monitoring-server/resource-monitoring-server.cpp +++ b/src/app/clusters/resource-monitoring-server/resource-monitoring-server.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -58,7 +59,7 @@ Instance::Instance(Delegate * aDelegate, EndpointId aEndpointId, ClusterId aClus Instance::~Instance() { - InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); + CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); unregisterAttributeAccessOverride(this); } @@ -71,7 +72,7 @@ CHIP_ERROR Instance::Init() LoadPersistentAttributes(); - ReturnErrorOnFailure(chip::app::InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INCORRECT_STATE); ChipLogDetail(Zcl, "ResourceMonitoring: calling mDelegate->Init()"); ReturnErrorOnFailure(mDelegate->Init()); diff --git a/src/app/clusters/sample-mei-server/sample-mei-server.cpp b/src/app/clusters/sample-mei-server/sample-mei-server.cpp index afeca910b455fe..ac461aab008b45 100644 --- a/src/app/clusters/sample-mei-server/sample-mei-server.cpp +++ b/src/app/clusters/sample-mei-server/sample-mei-server.cpp @@ -6,9 +6,9 @@ #include #include #include +#include #include #include -#include #include #include #include @@ -30,7 +30,7 @@ void MatterSampleMeiPluginServerInitCallback() { ChipLogProgress(Zcl, "Sample MEI Init. Ep %d, Total Ep %u", MATTER_DM_SAMPLE_MEI_CLUSTER_SERVER_ENDPOINT_COUNT, static_cast(kNumSupportedEndpoints)); - ReturnOnFailure(InteractionModelEngine::GetInstance()->RegisterCommandHandler(&SampleMeiServer::Instance())); + ReturnOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(&SampleMeiServer::Instance())); VerifyOrReturn(registerAttributeAccessOverride(&SampleMeiServer::Instance()), CHIP_ERROR_INCORRECT_STATE); } diff --git a/src/app/clusters/scenes-server/scenes-server.cpp b/src/app/clusters/scenes-server/scenes-server.cpp index 860e29236fa868..e657a82f4654fe 100644 --- a/src/app/clusters/scenes-server/scenes-server.cpp +++ b/src/app/clusters/scenes-server/scenes-server.cpp @@ -17,10 +17,12 @@ */ #include "scenes-server.h" + #include #include #include #include +#include #include #include #include @@ -337,7 +339,7 @@ CHIP_ERROR ScenesServer::Init() // Prevents re-initializing VerifyOrReturnError(!mIsInitialized, CHIP_ERROR_INCORRECT_STATE); - ReturnErrorOnFailure(chip::app::InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(chip::app::CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INCORRECT_STATE); mGroupProvider = Credentials::GetGroupDataProvider(); @@ -351,7 +353,7 @@ CHIP_ERROR ScenesServer::Init() void ScenesServer::Shutdown() { - chip::app::InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); + chip::app::CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); mGroupProvider = nullptr; mIsInitialized = false; diff --git a/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp b/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp index 2c0d76f79b649b..e6bc0daac67668 100644 --- a/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp +++ b/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp @@ -24,9 +24,9 @@ #include #include #include +#include #include #include -#include #include #include #include @@ -231,5 +231,5 @@ bool emberAfSoftwareDiagnosticsClusterResetWatermarksCallback(app::CommandHandle void MatterSoftwareDiagnosticsPluginServerInitCallback() { registerAttributeAccessOverride(&gAttrAccess); - InteractionModelEngine::GetInstance()->RegisterCommandHandler(&gCommandHandler); + CommandHandlerInterfaceRegistry::RegisterCommandHandler(&gCommandHandler); } diff --git a/src/app/clusters/thermostat-server/thermostat-server.cpp b/src/app/clusters/thermostat-server/thermostat-server.cpp index 214594667b9eb8..e802a9201f33dc 100644 --- a/src/app/clusters/thermostat-server/thermostat-server.cpp +++ b/src/app/clusters/thermostat-server/thermostat-server.cpp @@ -122,10 +122,6 @@ CHIP_ERROR ThermostatAttrAccess::Read(const ConcreteReadAttributePath & aPath, A return aEncoder.EncodeList([](const auto & encoder) -> CHIP_ERROR { return CHIP_NO_ERROR; }); } break; - case QueuedPreset::Id: { - DataModel::Nullable value; - return aEncoder.Encode(value); - } default: // return CHIP_NO_ERROR and just read from the attribute store in default break; } @@ -166,10 +162,6 @@ CHIP_ERROR ThermostatAttrAccess::Write(const ConcreteDataAttributePath & aPath, return CHIP_ERROR_NOT_IMPLEMENTED; } break; - case QueuedPreset::Id: { - return CHIP_ERROR_NOT_IMPLEMENTED; - } - break; default: // return CHIP_NO_ERROR and just write to the attribute store in default break; } @@ -417,7 +409,7 @@ MatterThermostatClusterServerPreAttributeChangedCallback(const app::ConcreteAttr requested = *value; if (!AutoSupported) return imcode::UnsupportedAttribute; - if (requested < 0 || requested > 25) + if (requested < 0 || requested > 127) return imcode::InvalidValue; return imcode::Success; } @@ -532,14 +524,6 @@ bool emberAfThermostatClusterCommitPresetsSchedulesRequestCallback( return false; } -bool emberAfThermostatClusterCancelSetActivePresetRequestCallback( - chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, - const chip::app::Clusters::Thermostat::Commands::CancelSetActivePresetRequest::DecodableType & commandData) -{ - // TODO - return false; -} - bool emberAfThermostatClusterSetTemperatureSetpointHoldPolicyCallback( chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, const chip::app::Clusters::Thermostat::Commands::SetTemperatureSetpointHoldPolicy::DecodableType & commandData) diff --git a/src/app/clusters/thread-network-directory-server/thread-network-directory-server.cpp b/src/app/clusters/thread-network-directory-server/thread-network-directory-server.cpp index 888972b3075c33..d1f3de7c58bbc8 100644 --- a/src/app/clusters/thread-network-directory-server/thread-network-directory-server.cpp +++ b/src/app/clusters/thread-network-directory-server/thread-network-directory-server.cpp @@ -18,6 +18,7 @@ #include "thread-network-directory-server.h" #include +#include #include #include #include @@ -47,13 +48,13 @@ ThreadNetworkDirectoryServer::ThreadNetworkDirectoryServer(EndpointId endpoint, ThreadNetworkDirectoryServer::~ThreadNetworkDirectoryServer() { unregisterAttributeAccessOverride(this); - InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); + CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); } CHIP_ERROR ThreadNetworkDirectoryServer::Init() { VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INTERNAL); - ReturnErrorOnFailure(InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); return CHIP_NO_ERROR; } diff --git a/src/app/clusters/wifi-network-management-server/wifi-network-management-server.cpp b/src/app/clusters/wifi-network-management-server/wifi-network-management-server.cpp index 1a739e354bd3df..f99ccdf5aafad3 100644 --- a/src/app/clusters/wifi-network-management-server/wifi-network-management-server.cpp +++ b/src/app/clusters/wifi-network-management-server/wifi-network-management-server.cpp @@ -18,10 +18,9 @@ #include "wifi-network-management-server.h" #include +#include #include #include -#include -#include #include #include @@ -55,34 +54,23 @@ bool IsValidWpaPersonalCredential(ByteSpan credential) return false; } -Global gWiFiNetworkManagementServerInstance; - } // namespace -WiFiNetworkManagementServer & WiFiNetworkManagementServer::Instance() -{ - return gWiFiNetworkManagementServerInstance.get(); -} - -WiFiNetworkManagementServer::WiFiNetworkManagementServer() : - AttributeAccessInterface(NullOptional, WiFiNetworkManagement::Id), - CommandHandlerInterface(NullOptional, WiFiNetworkManagement::Id) +WiFiNetworkManagementServer::WiFiNetworkManagementServer(EndpointId endpoint) : + AttributeAccessInterface(MakeOptional(endpoint), WiFiNetworkManagement::Id), + CommandHandlerInterface(MakeOptional(endpoint), WiFiNetworkManagement::Id) {} WiFiNetworkManagementServer::~WiFiNetworkManagementServer() { unregisterAttributeAccessOverride(this); - InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); + CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); } -CHIP_ERROR WiFiNetworkManagementServer::Init(EndpointId endpoint) +CHIP_ERROR WiFiNetworkManagementServer::Init() { - VerifyOrReturnError(endpoint != kInvalidEndpointId, CHIP_ERROR_INVALID_ARGUMENT); - VerifyOrReturnError(mEndpointId == kInvalidEndpointId, CHIP_ERROR_INCORRECT_STATE); - - mEndpointId = endpoint; VerifyOrReturnError(registerAttributeAccessOverride(this), CHIP_ERROR_INTERNAL); - ReturnErrorOnFailure(InteractionModelEngine::GetInstance()->RegisterCommandHandler(this)); + ReturnErrorOnFailure(CommandHandlerInterfaceRegistry::RegisterCommandHandler(this)); return CHIP_NO_ERROR; } @@ -92,7 +80,7 @@ CHIP_ERROR WiFiNetworkManagementServer::ClearNetworkCredentials() mSsidLen = 0; mPassphrase.SetLength(0); - MatterReportingAttributeChangeCallback(mEndpointId, WiFiNetworkManagement::Id, Ssid::Id); + MatterReportingAttributeChangeCallback(GetEndpointId(), WiFiNetworkManagement::Id, Ssid::Id); return CHIP_NO_ERROR; } @@ -114,7 +102,7 @@ CHIP_ERROR WiFiNetworkManagementServer::SetNetworkCredentials(ByteSpan ssid, Byt // Note: The spec currently defines no way to signal a passphrase change if (ssidChanged) { - MatterReportingAttributeChangeCallback(mEndpointId, WiFiNetworkManagement::Id, Ssid::Id); + MatterReportingAttributeChangeCallback(GetEndpointId(), WiFiNetworkManagement::Id, Ssid::Id); } return CHIP_NO_ERROR; } @@ -160,17 +148,4 @@ void WiFiNetworkManagementServer::HandleNetworkPassphraseRequest(HandlerContext } // namespace app } // namespace chip -#if defined(MATTER_DM_WIFI_NETWORK_MANAGEMENT_CLUSTER_SERVER_ENDPOINT_COUNT) && \ - MATTER_DM_WIFI_NETWORK_MANAGEMENT_CLUSTER_SERVER_ENDPOINT_COUNT > 1 -#error Only a single Wi-Fi Network Management Cluster instance is supported. -#endif - void MatterWiFiNetworkManagementPluginServerInitCallback() {} - -void emberAfWiFiNetworkManagementClusterServerInitCallback(EndpointId endpoint) -{ - // We could delay constructing the instance until this point; however it's not - // clear if this is inconvenient in terms of forcing the application to initialize - // the network credentials later than it otherwise would. - LogErrorOnFailure(chip::app::Clusters::WiFiNetworkManagementServer::Instance().Init(endpoint)); -} diff --git a/src/app/clusters/wifi-network-management-server/wifi-network-management-server.h b/src/app/clusters/wifi-network-management-server/wifi-network-management-server.h index aa3cba89636a77..ce438edf79ff73 100644 --- a/src/app/clusters/wifi-network-management-server/wifi-network-management-server.h +++ b/src/app/clusters/wifi-network-management-server/wifi-network-management-server.h @@ -20,9 +20,7 @@ #include #include #include -#include #include -#include #include void emberAfWiFiNetworkManagementClusterServerInitCallback(chip::EndpointId); @@ -34,30 +32,26 @@ namespace Clusters { class WiFiNetworkManagementServer : private AttributeAccessInterface, private CommandHandlerInterface { public: - static WiFiNetworkManagementServer & Instance(); + WiFiNetworkManagementServer(EndpointId endpoint); + ~WiFiNetworkManagementServer(); + + CHIP_ERROR Init(); CHIP_ERROR ClearNetworkCredentials(); CHIP_ERROR SetNetworkCredentials(ByteSpan ssid, ByteSpan passphrase); -private: - friend Global; - friend void ::emberAfWiFiNetworkManagementClusterServerInitCallback(chip::EndpointId); - - WiFiNetworkManagementServer(); - ~WiFiNetworkManagementServer(); - CHIP_ERROR Init(EndpointId endpoint); - WiFiNetworkManagementServer(WiFiNetworkManagementServer const &) = delete; WiFiNetworkManagementServer & operator=(WiFiNetworkManagementServer const &) = delete; +private: + EndpointId GetEndpointId() { return AttributeAccessInterface::GetEndpointId().Value(); } + CHIP_ERROR Read(const ConcreteReadAttributePath & aPath, AttributeValueEncoder & aEncoder) override; void InvokeCommand(HandlerContext & handlerContext) override; void HandleNetworkPassphraseRequest(HandlerContext & ctx, const WiFiNetworkManagement::Commands::NetworkPassphraseRequest::DecodableType & req); - EndpointId mEndpointId = kInvalidEndpointId; - uint8_t mSsid[32]; uint8_t mSsidLen = 0; static_assert(std::numeric_limits::max() >= sizeof(mSsid)); diff --git a/src/app/common/templates/config-data.yaml b/src/app/common/templates/config-data.yaml index e7121b2757e2f3..fd060149c8ff20 100644 --- a/src/app/common/templates/config-data.yaml +++ b/src/app/common/templates/config-data.yaml @@ -59,7 +59,6 @@ ClustersWithInitFunctions: - Mode Select - Sample MEI - Scenes Management - - Wi-Fi Network Management ClustersWithAttributeChangedFunctions: - Bridged Device Basic diff --git a/src/app/common_flags.gni b/src/app/common_flags.gni index 91057654fdcccf..be1149b2b67eb5 100644 --- a/src/app/common_flags.gni +++ b/src/app/common_flags.gni @@ -21,4 +21,14 @@ declare_args() { # Flag that controls whether the time-to-wait from BUSY responses is # communicated to OperationalSessionSetup API consumers. chip_enable_busy_handling_for_operational_session_setup = true + + # Data model interface usage: + # - disabled: does not use data model interface at all + # - check: runs BOTH datamodel and non-data-model (if possible) functionality and compares results + # - enabled: runs only the data model interface (does not use the legacy code) + if (current_os == "linux") { + chip_use_data_model_interface = "check" + } else { + chip_use_data_model_interface = "disabled" + } } diff --git a/src/app/data-model-interface/OperationTypes.h b/src/app/data-model-interface/OperationTypes.h index d19621db71d26a..c9e5ae642158b3 100644 --- a/src/app/data-model-interface/OperationTypes.h +++ b/src/app/data-model-interface/OperationTypes.h @@ -65,7 +65,6 @@ enum class ReadFlags : uint32_t struct ReadAttributeRequest : OperationRequest { ConcreteAttributePath path; - std::optional dataVersion; BitFlags readFlags; }; diff --git a/src/app/reporting/Engine.cpp b/src/app/reporting/Engine.cpp index dfa64cf3b8f9de..50e23498aeeadb 100644 --- a/src/app/reporting/Engine.cpp +++ b/src/app/reporting/Engine.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -79,25 +80,6 @@ bool Engine::IsClusterDataVersionMatch(const SingleLinkedListNode Cluster %" PRIx32 ", Attribute %" PRIx32 " is dirty", aPath.mClusterId, - aPath.mAttributeId); - - DataModelCallbacks::GetInstance()->AttributeOperation(DataModelCallbacks::OperationType::Read, - DataModelCallbacks::OperationOrder::Pre, aPath); - - ReturnErrorOnFailure(ReadSingleClusterData(aSubjectDescriptor, aIsFabricFiltered, aPath, aAttributeReportIBs, aEncoderState)); - - DataModelCallbacks::GetInstance()->AttributeOperation(DataModelCallbacks::OperationType::Read, - DataModelCallbacks::OperationOrder::Post, aPath); - - return CHIP_NO_ERROR; -} - static bool IsOutOfWriterSpaceError(CHIP_ERROR err) { return err == CHIP_ERROR_NO_MEMORY || err == CHIP_ERROR_BUFFER_TOO_SMALL; @@ -200,8 +182,8 @@ CHIP_ERROR Engine::BuildSingleReportDataAttributeReportIBs(ReportDataMessage::Bu ConcreteReadAttributePath pathForRetrieval(readPath); // Load the saved state from previous encoding session for chunking of one single attribute (list chunking). AttributeEncodeState encodeState = apReadHandler->GetAttributeEncodeState(); - err = RetrieveClusterData(apReadHandler->GetSubjectDescriptor(), apReadHandler->IsFabricFiltered(), attributeReportIBs, - pathForRetrieval, &encodeState); + err = Impl::RetrieveClusterData(mpImEngine->GetDataModel(), apReadHandler->GetSubjectDescriptor(), + apReadHandler->IsFabricFiltered(), attributeReportIBs, pathForRetrieval, &encodeState); if (err != CHIP_NO_ERROR) { // If error is not an "out of writer space" error, rollback and encode status. diff --git a/src/app/reporting/Engine.h b/src/app/reporting/Engine.h index 0bf7a9f83de1ae..070db9947b5f1c 100644 --- a/src/app/reporting/Engine.h +++ b/src/app/reporting/Engine.h @@ -168,9 +168,6 @@ class Engine bool * apHasMoreChunks, bool * apHasEncodedData); CHIP_ERROR BuildSingleReportDataEventReports(ReportDataMessage::Builder & reportDataBuilder, ReadHandler * apReadHandler, bool aBufferIsUsed, bool * apHasMoreChunks, bool * apHasEncodedData); - CHIP_ERROR RetrieveClusterData(const Access::SubjectDescriptor & aSubjectDescriptor, bool aIsFabricFiltered, - AttributeReportIBs::Builder & aAttributeReportIBs, - const ConcreteReadAttributePath & aClusterInfo, AttributeEncodeState * apEncoderState); CHIP_ERROR CheckAccessDeniedEventPaths(TLV::TLVWriter & aWriter, bool & aHasEncodedData, ReadHandler * apReadHandler); // If version match, it means don't send, if version mismatch, it means send. diff --git a/src/app/reporting/Read-Checked.cpp b/src/app/reporting/Read-Checked.cpp new file mode 100644 index 00000000000000..76a6d1378eb653 --- /dev/null +++ b/src/app/reporting/Read-Checked.cpp @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include + +#include +#include +#include + +namespace chip { +namespace app { +namespace reporting { +namespace CheckedImpl { +namespace { + +/// Checkpoints and saves the state (including error state) for a +/// AttributeReportIBs::Builder +class ScopedAttributeReportIBsBuilderState +{ +public: + ScopedAttributeReportIBsBuilderState(AttributeReportIBs::Builder & builder) : mBuilder(builder), mError(mBuilder.GetError()) + { + mBuilder.Checkpoint(mCheckpoint); + } + + ~ScopedAttributeReportIBsBuilderState() + { + mBuilder.Rollback(mCheckpoint); + mBuilder.ResetError(mError); + } + +private: + AttributeReportIBs::Builder & mBuilder; + chip::TLV::TLVWriter mCheckpoint; + CHIP_ERROR mError; +}; + +} // namespace + +CHIP_ERROR RetrieveClusterData(InteractionModel::DataModel * dataModel, const Access::SubjectDescriptor & subjectDescriptor, + bool isFabricFiltered, AttributeReportIBs::Builder & reportBuilder, + const ConcreteReadAttributePath & path, AttributeEncodeState * encoderState) +{ + ChipLogDetail(DataManagement, " Cluster %" PRIx32 ", Attribute %" PRIx32 " is dirty", path.mClusterId, + path.mAttributeId); + DataModelCallbacks::GetInstance()->AttributeOperation(DataModelCallbacks::OperationType::Read, + DataModelCallbacks::OperationOrder::Pre, path); + + CHIP_ERROR errEmber = CHIP_NO_ERROR; + uint32_t lengthWrittenEmber = 0; + + // a copy for DM logic only. Ember changes state directly + // IMPORTANT: the copy MUST be taken BEFORE ember processes/changes encoderState inline. + AttributeEncodeState stateDm(encoderState); + + { + ScopedAttributeReportIBsBuilderState builderState(reportBuilder); // temporary only + errEmber = + EmberImpl::RetrieveClusterData(dataModel, subjectDescriptor, isFabricFiltered, reportBuilder, path, encoderState); + lengthWrittenEmber = reportBuilder.GetWriter()->GetLengthWritten(); + } + + CHIP_ERROR errDM = DataModelImpl::RetrieveClusterData(dataModel, subjectDescriptor, isFabricFiltered, reportBuilder, path, + encoderState != nullptr ? &stateDm : nullptr); + + if (errEmber != errDM) + { + // Note log + chipDie instead of VerifyOrDie so that breakpoints (and usage of rr) + // is easier to debug. + ChipLogError(Test, "Different return codes between ember and DM"); + ChipLogError(Test, " Ember error: %" CHIP_ERROR_FORMAT, errEmber.Format()); + ChipLogError(Test, " DM error: %" CHIP_ERROR_FORMAT, errDM.Format()); + + // For time-dependent data, we may have size differences here: one data fitting in buffer + // while another not, resulting in different errors (success vs out of space). + // + // Make unit tests strict; otherwise allow it with potentially odd mismatch errors + // (in which case logs will be odd, however we also expect Checked versions to only + // run for a short period until we switch over to either ember or DM completely). +#if CONFIG_BUILD_FOR_HOST_UNIT_TEST + chipDie(); +#endif + } + + // data should be identical for most cases EXCEPT that for time-deltas (e.g. seconds since boot or similar) + // it may actually differ. As a result, the amount of data written in bytes MUST be the same, however if the rest of the + // data is not the same, we just print it out as a warning for manual inspection + // + // We have no direct access to TLV buffer data (especially given backing store splits) + // so for now we check that data length was identical. + // + // NOTE: RetrieveClusterData is responsible for encoding StatusIB errors in case of failures + // so we validate length written requirements for BOTH success and failure. + // + // NOTE: data length is NOT reliable if the data content differs in encoding length. E.g. numbers changing + // from 0xFF to 0x100 or similar will use up more space. + // For unit tests we make the validation strict, however for runtime we just report an + // error for different sizes. + if (lengthWrittenEmber != reportBuilder.GetWriter()->GetLengthWritten()) + { + ChipLogError(Test, "Different written length: %" PRIu32 " (Ember) vs %" PRIu32 " (DataModel)", lengthWrittenEmber, + reportBuilder.GetWriter()->GetLengthWritten()); +#if CONFIG_BUILD_FOR_HOST_UNIT_TEST + chipDie(); +#endif + } + + // For chunked reads, the encoder state MUST be identical (since this is what controls + // where chunking resumes). + if ((errEmber == CHIP_ERROR_NO_MEMORY) || (errEmber == CHIP_ERROR_BUFFER_TOO_SMALL)) + { + // Encoder state MUST match on partial reads (used by chunking) + // specifically ReadViaAccessInterface in ember-compatibility-functions only + // sets the encoder state in case an error occurs. + if (encoderState != nullptr) + { + if (encoderState->AllowPartialData() != stateDm.AllowPartialData()) + { + ChipLogError(Test, "Different partial data"); + // NOTE: die on unit tests only, since partial data size may differ across + // time-dependent data (very rarely because fast code, but still possible) +#if CONFIG_BUILD_FOR_HOST_UNIT_TEST + chipDie(); +#endif + } + if (encoderState->CurrentEncodingListIndex() != stateDm.CurrentEncodingListIndex()) + { + ChipLogError(Test, "Different partial data"); + // NOTE: die on unit tests only, since partial data size may differ across + // time-dependent data (very rarely because fast code, but still possible) +#if CONFIG_BUILD_FOR_HOST_UNIT_TEST + chipDie(); +#endif + } + } + } + + DataModelCallbacks::GetInstance()->AttributeOperation(DataModelCallbacks::OperationType::Read, + DataModelCallbacks::OperationOrder::Post, path); + + return errDM; +} + +} // namespace CheckedImpl +} // namespace reporting +} // namespace app +} // namespace chip diff --git a/src/app/reporting/Read-Checked.h b/src/app/reporting/Read-Checked.h new file mode 100644 index 00000000000000..6df9715fcc3da9 --- /dev/null +++ b/src/app/reporting/Read-Checked.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include +#include +#include +#include +#include + +namespace chip { +namespace app { +namespace reporting { +namespace CheckedImpl { + +CHIP_ERROR RetrieveClusterData(InteractionModel::DataModel * dataModel, const Access::SubjectDescriptor & subjectDescriptor, + bool isFabricFiltered, AttributeReportIBs::Builder & reportBuilder, + const ConcreteReadAttributePath & path, AttributeEncodeState * encoderState); + +} // namespace CheckedImpl +} // namespace reporting +} // namespace app +} // namespace chip diff --git a/src/app/reporting/Read-DataModel.cpp b/src/app/reporting/Read-DataModel.cpp new file mode 100644 index 00000000000000..c004853cdaa495 --- /dev/null +++ b/src/app/reporting/Read-DataModel.cpp @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include + +#include +#include +#include + +namespace chip { +namespace app { +namespace reporting { +namespace DataModelImpl { +namespace { + +bool IsOutOfSpaceError(CHIP_ERROR err) +{ + return (err == CHIP_ERROR_NO_MEMORY || err == CHIP_ERROR_BUFFER_TOO_SMALL); +} + +} // namespace + +CHIP_ERROR RetrieveClusterData(InteractionModel::DataModel * dataModel, const Access::SubjectDescriptor & subjectDescriptor, + bool isFabricFiltered, AttributeReportIBs::Builder & reportBuilder, + const ConcreteReadAttributePath & path, AttributeEncodeState * encoderState) +{ + // Odd ifdef is to only do this if the `Read-Check` does not do it already. +#if !CHIP_CONFIG_USE_EMBER_DATA_MODEL + ChipLogDetail(DataManagement, " Cluster %" PRIx32 ", Attribute %" PRIx32 " is dirty", path.mClusterId, + path.mAttributeId); + DataModelCallbacks::GetInstance()->AttributeOperation(DataModelCallbacks::OperationType::Read, + DataModelCallbacks::OperationOrder::Pre, path); +#endif // !CHIP_CONFIG_USE_EMBER_DATA_MODEL + + InteractionModel::ReadAttributeRequest readRequest; + + if (isFabricFiltered) + { + readRequest.readFlags.Set(InteractionModel::ReadFlags::kFabricFiltered); + } + readRequest.subjectDescriptor = subjectDescriptor; + readRequest.path = path; + + DataVersion version = 0; + if (std::optional clusterInfo = dataModel->GetClusterInfo(path); clusterInfo.has_value()) + { + version = clusterInfo->dataVersion; + } + else + { + ChipLogError(DataManagement, "Read request on unknown cluster - no data version available"); + } + + TLV::TLVWriter checkpoint; + reportBuilder.Checkpoint(checkpoint); + + AttributeValueEncoder attributeValueEncoder(reportBuilder, subjectDescriptor, path, version, isFabricFiltered, encoderState); + CHIP_ERROR err = dataModel->ReadAttribute(readRequest, attributeValueEncoder); + + if (err == CHIP_NO_ERROR) + { + // Odd ifdef is to only do this if the `Read-Check` does not do it already. +#if !CHIP_CONFIG_USE_EMBER_DATA_MODEL + // TODO: this callback being only executed on success is awkward. The Write callback is always done + // for both read and write. + // + // For now this preserves existing/previous code logic, however we should consider to ALWAYS + // call this. + DataModelCallbacks::GetInstance()->AttributeOperation(DataModelCallbacks::OperationType::Read, + DataModelCallbacks::OperationOrder::Post, path); +#endif // !CHIP_CONFIG_USE_EMBER_DATA_MODEL + return CHIP_NO_ERROR; + } + + // Encoder state is relevant for errors in case they are retryable. + // + // Generally only IsOutOfSpaceError(err) would be retryable, however we save the state + // for all errors in case this is information that is useful (retry or error position). + if (encoderState != nullptr) + { + *encoderState = attributeValueEncoder.GetState(); + } + + // Out of space errors may be chunked data, reporting those cases would be very confusing + // as they are not fully errors. Report only others (which presumably are not recoverable + // and will be sent to the client as well). + if (!IsOutOfSpaceError(err)) + { + ChipLogError(DataManagement, "Failed to read attribute: %" CHIP_ERROR_FORMAT, err.Format()); + } + return err; +} + +} // namespace DataModelImpl +} // namespace reporting +} // namespace app +} // namespace chip diff --git a/src/app/reporting/Read-DataModel.h b/src/app/reporting/Read-DataModel.h new file mode 100644 index 00000000000000..231429c4a2e242 --- /dev/null +++ b/src/app/reporting/Read-DataModel.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include +#include +#include +#include +#include + +namespace chip { +namespace app { +namespace reporting { +namespace DataModelImpl { + +CHIP_ERROR RetrieveClusterData(InteractionModel::DataModel * dataModel, const Access::SubjectDescriptor & subjectDescriptor, + bool isFabricFiltered, AttributeReportIBs::Builder & reportBuilder, + const ConcreteReadAttributePath & path, AttributeEncodeState * encoderState); + +} // namespace DataModelImpl +} // namespace reporting +} // namespace app +} // namespace chip diff --git a/src/app/reporting/Read-Ember.cpp b/src/app/reporting/Read-Ember.cpp new file mode 100644 index 00000000000000..290c4e627ac7bb --- /dev/null +++ b/src/app/reporting/Read-Ember.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include + +#include +#include +#include + +namespace chip { +namespace app { +namespace reporting { +namespace EmberImpl { + +CHIP_ERROR RetrieveClusterData(InteractionModel::DataModel * dataModel, const Access::SubjectDescriptor & subjectDescriptor, + bool isFabricFiltered, AttributeReportIBs::Builder & reportBuilder, + const ConcreteReadAttributePath & path, AttributeEncodeState * encoderState) +{ + // Odd ifdef is to only do this if the `Read-Check` does not do it already. +#if !CHIP_CONFIG_USE_DATA_MODEL_INTERFACE + ChipLogDetail(DataManagement, " Cluster %" PRIx32 ", Attribute %" PRIx32 " is dirty", path.mClusterId, + path.mAttributeId); + + DataModelCallbacks::GetInstance()->AttributeOperation(DataModelCallbacks::OperationType::Read, + DataModelCallbacks::OperationOrder::Pre, path); +#endif // !CHIP_CONFIG_USE_DATA_MODEL_INTERFACE + + ReturnErrorOnFailure(ReadSingleClusterData(subjectDescriptor, isFabricFiltered, path, reportBuilder, encoderState)); + + // Odd ifdef is to only do this if the `Read-Check` does not do it already. +#if !CHIP_CONFIG_USE_DATA_MODEL_INTERFACE + DataModelCallbacks::GetInstance()->AttributeOperation(DataModelCallbacks::OperationType::Read, + DataModelCallbacks::OperationOrder::Post, path); +#endif // !CHIP_CONFIG_USE_DATA_MODEL_INTERFACE + + return CHIP_NO_ERROR; +} + +} // namespace EmberImpl +} // namespace reporting +} // namespace app +} // namespace chip diff --git a/src/app/reporting/Read-Ember.h b/src/app/reporting/Read-Ember.h new file mode 100644 index 00000000000000..0181734d205053 --- /dev/null +++ b/src/app/reporting/Read-Ember.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include +#include +#include +#include +#include + +namespace chip { +namespace app { +namespace reporting { +namespace EmberImpl { + +CHIP_ERROR RetrieveClusterData(InteractionModel::DataModel * dataModel, const Access::SubjectDescriptor & subjectDescriptor, + bool isFabricFiltered, AttributeReportIBs::Builder & reportBuilder, + const ConcreteReadAttributePath & path, AttributeEncodeState * encoderState); + +} // namespace EmberImpl +} // namespace reporting +} // namespace app +} // namespace chip diff --git a/src/app/reporting/Read.h b/src/app/reporting/Read.h new file mode 100644 index 00000000000000..c568c5356ab472 --- /dev/null +++ b/src/app/reporting/Read.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include + +#if CHIP_CONFIG_USE_EMBER_DATA_MODEL && CHIP_CONFIG_USE_DATA_MODEL_INTERFACE +#include +#else +#if CHIP_CONFIG_USE_DATA_MODEL_INTERFACE +#include +#else +#include +#endif // CHIP_CONFIG_USE_DATA_MODEL_INTERFACE +#endif // CHIP_CONFIG_USE_EMBER_DATA_MODEL && CHIP_CONFIG_USE_DATA_MODEL_INTERFACE + +namespace chip { +namespace app { +namespace reporting { + +#if CHIP_CONFIG_USE_EMBER_DATA_MODEL && CHIP_CONFIG_USE_DATA_MODEL_INTERFACE +namespace Impl = CheckedImpl; +#else +#if CHIP_CONFIG_USE_DATA_MODEL_INTERFACE +namespace Impl = DataModelImpl; +#else +namespace Impl = EmberImpl; +#endif // CHIP_CONFIG_USE_DATA_MODEL_INTERFACE +#endif // CHIP_CONFIG_USE_EMBER_DATA_MODEL && CHIP_CONFIG_USE_DATA_MODEL_INTERFACE + +} // namespace reporting +} // namespace app +} // namespace chip diff --git a/src/app/server/Dnssd.cpp b/src/app/server/Dnssd.cpp index 3cdcd35f9a7e98..d3de7044bbda8b 100644 --- a/src/app/server/Dnssd.cpp +++ b/src/app/server/Dnssd.cpp @@ -188,7 +188,7 @@ void DnssdServer::GetPrimaryOrFallbackMACAddress(chip::MutableByteSpan mac) /// Set MDNS operational advertisement CHIP_ERROR DnssdServer::AdvertiseOperational() { - VerifyOrDie(mFabricTable != nullptr); + VerifyOrReturnError(mFabricTable != nullptr, CHIP_ERROR_INCORRECT_STATE); for (const FabricInfo & fabricInfo : *mFabricTable) { @@ -213,6 +213,9 @@ CHIP_ERROR DnssdServer::AdvertiseOperational() AddICDKeyToAdvertisement(advertiseParameters); #endif +#if INET_CONFIG_ENABLE_TCP_ENDPOINT + advertiseParameters.SetTCPSupportModes(chip::Dnssd::TCPModeAdvertise::kTCPClientServer); +#endif auto & mdnsAdvertiser = chip::Dnssd::ServiceAdvertiser::Instance(); ChipLogProgress(Discovery, "Advertise operational node " ChipLogFormatX64 "-" ChipLogFormatX64, diff --git a/src/app/server/Dnssd.h b/src/app/server/Dnssd.h index 105318ca5a08be..3103a2010c03f6 100644 --- a/src/app/server/Dnssd.h +++ b/src/app/server/Dnssd.h @@ -96,6 +96,7 @@ class DLL_EXPORT DnssdServer : public ICDStateObserver void SetICDManager(ICDManager * manager) { mICDManager = manager; }; #endif + /// Start operational advertising CHIP_ERROR AdvertiseOperational(); diff --git a/src/app/tests/BUILD.gn b/src/app/tests/BUILD.gn index 0f0694dcc51574..59d8f2c325fd8c 100644 --- a/src/app/tests/BUILD.gn +++ b/src/app/tests/BUILD.gn @@ -143,9 +143,17 @@ source_set("app-test-stubs") { sources = [ "test-ember-api.cpp", "test-ember-api.h", + + # The overrides in these files are overrides from ember-compatibility-functions + # and the data model interface is NOT aware of such functionality + # + # TODO: ideally tests should have been written via mock ember, however mock ember did + # not exist at that time. We should completely re-write how these tests access + # the data via the DataModel interface "test-interaction-model-api.cpp", "test-interaction-model-api.h", ] + public_configs = [ "${chip_root}/src/lib/support/pw_log_chip:config" ] public_deps = [ diff --git a/src/app/tests/TestAclAttribute.cpp b/src/app/tests/TestAclAttribute.cpp index fac82e484d7450..c11adde08d6208 100644 --- a/src/app/tests/TestAclAttribute.cpp +++ b/src/app/tests/TestAclAttribute.cpp @@ -118,7 +118,17 @@ class TestAclAttribute : public Test::AppContext Access::GetAccessControl().Finish(); Access::GetAccessControl().Init(GetTestAccessControlDelegate(), gDeviceTypeResolver); + mOldModel = InteractionModelEngine::GetInstance()->SetDataModel(&TestImCustomDataModel::Instance()); } + + void TearDown() override + { + AppContext::TearDown(); + InteractionModelEngine::GetInstance()->SetDataModel(mOldModel); + } + +private: + chip::app::InteractionModel::DataModel * mOldModel = nullptr; }; // Read Client sends a malformed subscribe request, interaction model engine fails to parse the request and generates a status diff --git a/src/app/tests/TestReadInteraction.cpp b/src/app/tests/TestReadInteraction.cpp index 57d23d1eb0db81..5c712b7c0a9a4a 100644 --- a/src/app/tests/TestReadInteraction.cpp +++ b/src/app/tests/TestReadInteraction.cpp @@ -272,9 +272,11 @@ class TestReadInteraction : public chip::Test::AppContext ASSERT_EQ(mEventCounter.Init(0), CHIP_NO_ERROR); chip::app::EventManagement::CreateEventManagement(&GetExchangeManager(), ArraySize(logStorageResources), gCircularEventBuffer, logStorageResources, &mEventCounter); + mOldModel = InteractionModelEngine::GetInstance()->SetDataModel(&TestImCustomDataModel::Instance()); } void TearDown() { + InteractionModelEngine::GetInstance()->SetDataModel(mOldModel); chip::app::EventManagement::DestroyEventManagement(); AppContext::TearDown(); } @@ -329,6 +331,7 @@ class TestReadInteraction : public chip::Test::AppContext protected: chip::MonotonicallyIncreasingCounter mEventCounter; static bool sSyncScheduler; + chip::app::InteractionModel::DataModel * mOldModel = nullptr; }; bool TestReadInteraction::sSyncScheduler = false; diff --git a/src/app/tests/TestReportingEngine.cpp b/src/app/tests/TestReportingEngine.cpp index 4468eeaaf12ade..c18fbdbf1f2dcc 100644 --- a/src/app/tests/TestReportingEngine.cpp +++ b/src/app/tests/TestReportingEngine.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -55,6 +56,18 @@ namespace reporting { class TestReportingEngine : public chip::Test::AppContext { public: + void SetUp() override + { + chip::Test::AppContext::SetUp(); + mOldModel = InteractionModelEngine::GetInstance()->SetDataModel(&TestImCustomDataModel::Instance()); + } + + void TearDown() override + { + InteractionModelEngine::GetInstance()->SetDataModel(mOldModel); + chip::Test::AppContext::TearDown(); + } + template static bool VerifyDirtySetContent(const Args &... args); static bool InsertToDirtySet(const AttributePathParams & aPath); @@ -64,6 +77,8 @@ class TestReportingEngine : public chip::Test::AppContext void TestMergeAttributePathWhenDirtySetPoolExhausted(); private: + chip::app::InteractionModel::DataModel * mOldModel = nullptr; + struct ExpectedDirtySetContent : public AttributePathParams { ExpectedDirtySetContent(const AttributePathParams & path) : AttributePathParams(path) {} diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml index 0c21f1a6ffcfb1..398ec48f36f4d2 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml @@ -346,6 +346,58 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends MoveHue command to DUT with MoveMode=0x01 (up) and + Rate=0 (units/s)" + PICS: CC.S.F00 && CC.S.C01.Rsp + command: "MoveHue" + arguments: + values: + - name: "MoveMode" + value: 1 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5b: TH sends MoveHue command to DUT with MoveMode=0x03 (down) + and Rate=0 (units/s)" + PICS: CC.S.F00 && CC.S.C01.Rsp + command: "MoveHue" + arguments: + values: + - name: "MoveMode" + value: 3 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5c: TH sends MoveHue command to DUT with MoveMode=0x00 (stop) + and Rate=0 (units/s)" + PICS: CC.S.F00 && CC.S.C01.Rsp + command: "MoveHue" + arguments: + values: + - name: "MoveMode" + value: 0 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml index 53175d974716ea..91cdcbffe7d255 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml @@ -287,6 +287,46 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends StepHue command to DUT with StepMode=0x01 (up), + StepSize=0" + PICS: CC.S.F00 && CC.S.C02.Rsp + command: "StepHue" + arguments: + values: + - name: "StepMode" + value: 1 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5b: TH sends StepHue command to DUT with StepMode=0x03 (down), + StepSize=0" + PICS: CC.S.F00 && CC.S.C02.Rsp + command: "StepHue" + arguments: + values: + - name: "StepMode" + value: 3 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml index 4b6630f18d4b92..0438a6e376f0ee 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml @@ -357,6 +357,42 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 6a: TH sends MoveSaturation command to DUT with MoveMode=0x01 + (up) and Rate=0 (units/s)" + command: "MoveSaturation" + PICS: CC.S.F00 && CC.S.C04.Rsp + arguments: + values: + - name: "MoveMode" + value: 1 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 6b: TH sends MoveSaturation command to DUT with MoveMode=0x03 + (down) and Rate=0 (units/s)" + command: "MoveSaturation" + PICS: CC.S.F00 && CC.S.C04.Rsp + arguments: + values: + - name: "MoveMode" + value: 3 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml index 8a6a953fb25af8..02826ab6bfef76 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml @@ -327,6 +327,46 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends StepSaturation command to DUT with StepMode=0x01 + (up), StepSize=0" + PICS: CC.S.F00 && CC.S.C05.Rsp + command: "StepSaturation" + arguments: + values: + - name: "StepMode" + value: 1 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5b: TH sends StepSaturation command to DUT with StepMode=0x03 + (down), StepSize=0" + PICS: CC.S.F00 && CC.S.C05.Rsp + command: "StepSaturation" + arguments: + values: + - name: "StepMode" + value: 3 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml index 17da61ef9ccb57..0c88fdaa0cb906 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml @@ -217,6 +217,21 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends MoveColor command to DUT with RateX=0 and RateY=0" + command: "MoveColor" + PICS: CC.S.F03 && CC.S.C08.Rsp + arguments: + values: + - name: "RateX" + value: 0 + - name: "RateY" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml index 4e8eba6ced993f..1f949647cefe4f 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml @@ -189,6 +189,25 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends StepColor command to DUT with StepX = 0, StepY = 0" + command: "StepColor" + PICS: CC.S.F03 && CC.S.C09.Rsp + arguments: + values: + - name: "StepX" + value: 0 + - name: "StepY" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml index f5259372823048..2283df1214e72e 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml @@ -364,8 +364,73 @@ tests: constraints: minValue: 0 maxValue: 3 + - label: - "Step 6a: TH sends MoveColorTemperature command to DUT with MoveMode = + "Step 6a: TH sends _MoveColorTemperature command_ to DUT with + MoveMode=0x01 (up) and Rate=0 (units/s)" + PICS: CC.S.F04 && CC.S.C4b.Rsp + command: MoveColorTemperature + arguments: + values: + - name: "MoveMode" + value: 1 + - name: "Rate" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 6b: TH sends _MoveColorTemperature command_ to DUT with + MoveMode=0x03 (down) and Rate=0 (units/s)" + PICS: CC.S.F04 && CC.S.C4b.Rsp + command: MoveColorTemperature + arguments: + values: + - name: "MoveMode" + value: 3 + - name: "Rate" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 6c: TH sends _MoveColorTemperature command_ to DUT with + MoveMode=0x00 (stop) and Rate=0 (units/s)" + PICS: CC.S.F04 && CC.S.C4b.Rsp + command: MoveColorTemperature + arguments: + values: + - name: "MoveMode" + value: 0 + - name: "Rate" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + + - label: + "Step 7a: TH sends MoveColorTemperature command to DUT with MoveMode = 0x03(down), Rate = 65535 (max value) with ColorTemperatureMinimumMireds of 0" PICS: CC.S.F04 && CC.S.C4b.Rsp @@ -394,7 +459,7 @@ tests: - name: "ms" value: 1000 - - label: "Step 6b: TH reads ColorTemperatureMireds attribute from DUT." + - label: "Step 7b: TH reads ColorTemperatureMireds attribute from DUT." PICS: CC.S.F04 && CC.S.A0007 && CC.S.C4b.Rsp command: "readAttribute" attribute: "ColorTemperatureMireds" @@ -405,7 +470,7 @@ tests: maxValue: ColorTempPhysicalMaxMiredsValue - label: - "Step 7a: TH sends MoveColorTemperature command to DUT with MoveMode = + "Step 8a: TH sends MoveColorTemperature command to DUT with MoveMode = 0x01(up), Rate = 65535 (max value) with ColorTemperatureMaximumMireds of 0" PICS: CC.S.F04 && CC.S.C4b.Rsp @@ -434,7 +499,7 @@ tests: - name: "ms" value: 1000 - - label: "Step 7b: TH reads ColorTemperatureMireds attribute from DUT." + - label: "Step 8b: TH reads ColorTemperatureMireds attribute from DUT." PICS: CC.S.F04 && CC.S.A0007 && CC.S.C4b.Rsp command: "readAttribute" attribute: "ColorTemperatureMireds" diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml index 437ef78af33f27..5222aec2aa198c 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml @@ -288,7 +288,55 @@ tests: maxValue: 3 - label: - "Step 5a: TH sends StepColorTemperature command to DUT with StepMode = + "Step 5a: TH sends StepColorTemperature command to DUT with + StepMode=0x01 (up), StepSize=0" + PICS: CC.S.F04 && CC.S.C4c.Rsp + command: "StepColorTemperature" + arguments: + values: + - name: "StepMode" + value: 1 + - name: "StepSize" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5ab TH sends StepColorTemperature command to DUT with + StepMode=0x03 (down), StepSize=0" + PICS: CC.S.F04 && CC.S.C4c.Rsp + command: "StepColorTemperature" + arguments: + values: + - name: "StepMode" + value: 3 + - name: "StepSize" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 6a: TH sends StepColorTemperature command to DUT with StepMode = 0x01 (up), StepSize = ColorTempPhysicalMaxMireds and TransitionTime = 0 (instant)." PICS: CC.S.F04 && CC.S.C4c.Rsp @@ -319,7 +367,7 @@ tests: - name: "ms" value: 100 - - label: "Step 5b: TH reads ColorTemperatureMireds attribute from DUT." + - label: "Step 6b: TH reads ColorTemperatureMireds attribute from DUT." PICS: CC.S.F04 && CC.S.A0007 && CC.S.C4c.Rsp command: "readAttribute" attribute: "ColorTemperatureMireds" @@ -330,7 +378,7 @@ tests: maxValue: ColorTempPhysicalMaxMiredsValue - label: - "Step 6a: TH sends StepColorTemperature command to DUT with StepMode = + "Step 7a: TH sends StepColorTemperature command to DUT with StepMode = 0x03 (down), StepSize = ColorTempPhysicalMaxMireds and TransitionTime = 0 (instant)." PICS: CC.S.F04 && CC.S.C4c.Rsp @@ -361,7 +409,7 @@ tests: - name: "ms" value: 100 - - label: "Step 6b: TH reads ColorTemperatureMireds attribute from DUT." + - label: "Step 7b: TH reads ColorTemperatureMireds attribute from DUT." PICS: CC.S.F04 && CC.S.A0007 && CC.S.C4c.Rsp command: "readAttribute" attribute: "ColorTemperatureMireds" diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml index b9ded89a132a6f..18f1113d4928b6 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml @@ -329,6 +329,58 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends EnhancedMoveHue command to DUT with MoveMode=0x01 + (up) and Rate=0 (units/s)" + PICS: CC.S.F01 && CC.S.C41.Rsp" + command: "EnhancedMoveHue" + arguments: + values: + - name: "MoveMode" + value: 1 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5b: TH sends EnhancedMoveHue command to DUT with MoveMode=0x03 + (down) and Rate=0 (units/s)" + PICS: CC.S.F01 && CC.S.C41.Rsp + command: "EnhancedMoveHue" + arguments: + values: + - name: "MoveMode" + value: 3 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5c: TH sends EnhancedMoveHue command to DUT with MoveMode=0x00 + (stop) and Rate=0 (units/s)" + PICS: CC.S.F01 && CC.S.C41.Rsp + command: "EnhancedMoveHue" + arguments: + values: + - name: "MoveMode" + value: 0 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + - label: "Turn Off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml index 53bf4ba4883f3c..bfdfd26ed3ca1a 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml @@ -299,6 +299,46 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 7a: TH sends EnhancedStepHue command to DUT with StepMode=0x01 + (up), StepSize=0" + PICS: CC.S.F01 && CC.S.C42.Rsp + command: "EnhancedStepHue" + arguments: + values: + - name: "StepMode" + value: 1 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 7b: TH sends EnhancedStepHue command to DUT with StepMode=0x03 + (down), StepSize=0" + PICS: CC.S.F01 && CC.S.C42.Rsp + command: "EnhancedStepHue" + arguments: + values: + - name: "StepMode" + value: 3 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn Off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_ICDM_1_1.yaml b/src/app/tests/suites/certification/Test_TC_ICDM_1_1.yaml index 08bdb9322b2b1a..fb507fd7a89663 100755 --- a/src/app/tests/suites/certification/Test_TC_ICDM_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ICDM_1_1.yaml @@ -35,7 +35,7 @@ tests: command: "readAttribute" attribute: "ClusterRevision" response: - value: 2 + value: 3 constraints: type: int16u diff --git a/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml index b930badc0971a1..8e9ee05b33e9ff 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_2_1.yaml @@ -215,7 +215,7 @@ tests: response: constraints: type: int8u - minValue: 0 + minValue: 1 maxValue: 255 - label: "Step 13: TH reads the Options attribute from the DUT" diff --git a/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml index 14ac5ea5a69ffd..65e5ede6845c2c 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_4_1.yaml @@ -269,7 +269,7 @@ tests: - label: "Step 4h: TH sends a Move command to the DUT with MoveMode =0x00 (up) - and Rate =0 (units/s), expect success" + and Rate =0 (units/s), expect failure" PICS: LVL.S.C01.Rsp command: "Move" arguments: @@ -282,6 +282,8 @@ tests: value: 1 - name: "OptionsOverride" value: 1 + response: + error: INVALID_COMMAND - label: "Wait 5s" cluster: "DelayCommands" diff --git a/src/app/tests/suites/certification/Test_TC_S_2_2.yaml b/src/app/tests/suites/certification/Test_TC_S_2_2.yaml index ead80fedb78436..81011a13251a70 100644 --- a/src/app/tests/suites/certification/Test_TC_S_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_S_2_2.yaml @@ -81,7 +81,20 @@ tests: value: maxScenesMinusOne / 2 - label: - "Step 0a :TH sends KeySetWrite command in the GroupKeyManagement + "Step 0a :TH reads attribute {ServerList} from the Descriptor cluster + of the endpoint that implements the Scenes Management server on the + DUT. DUT responds with a list of server clusters containing the groups + cluster." + cluster: "Descriptor" + command: "readAttribute" + attribute: "ServerList" + response: + constraints: + type: list + contains: [4] + + - label: + "Step 0b :TH sends KeySetWrite command in the GroupKeyManagement cluster to DUT using a key that is pre-installed on the TH. GroupKeySet fields are as follows:" cluster: "Group Key Management" @@ -103,7 +116,7 @@ tests: } - label: - "Step 0b: TH binds GroupIds 0x0001 and 0x0002 with GroupKeySetID + "Step 0c: TH binds GroupIds 0x0001 and 0x0002 with GroupKeySetID 0x01a1 in the GroupKeyMap attribute list on GroupKeyManagement cluster by writing the GroupKeyMap attribute with two entries as follows:" cluster: "Group Key Management" @@ -117,7 +130,7 @@ tests: { FabricIndex: 1, GroupId: G2, GroupKeySetID: 0x01a1 }, ] - - label: "Step 0c: TH sends a RemoveAllGroups command to DUT." + - label: "Step 0d: TH sends a RemoveAllGroups command to DUT." PICS: G.S.C04.Rsp cluster: "Groups" endpoint: endpoint diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml index faf34fdea43e92..4558b08745a949 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_2_1.yaml @@ -243,8 +243,8 @@ tests: response: constraints: type: int8s - minValue: -25 - maxValue: 25 + minValue: -127 + maxValue: 127 - label: "Step 13a: TH reads attribute OccupiedCoolingSetpoint from the DUT" PICS: TSTAT.S.F01 && TSTAT.S.A0017 && TSTAT.S.A0018 @@ -426,7 +426,7 @@ tests: constraints: type: int8s minValue: 0 - maxValue: 25 + maxValue: 127 - label: "Step 22: TH reads the RemoteSensing attribute from the DUT" PICS: TSTAT.S.A001a diff --git a/src/app/tests/test-interaction-model-api.cpp b/src/app/tests/test-interaction-model-api.cpp index ae3f559424f97c..444516a79ddf1a 100644 --- a/src/app/tests/test-interaction-model-api.cpp +++ b/src/app/tests/test-interaction-model-api.cpp @@ -13,25 +13,38 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -#include "lib/support/CHIPMem.h" #include -#include #include #include +#include #include #include #include #include #include +using namespace chip::app::InteractionModel; + namespace chip { uint8_t Test::attributeDataTLV[CHIP_CONFIG_DEFAULT_UDP_MTU_SIZE]; size_t Test::attributeDataTLVLen = 0; namespace app { +class TestOnlyAttributeValueEncoderAccessor +{ +public: + TestOnlyAttributeValueEncoderAccessor(AttributeValueEncoder & encoder) : mEncoder(encoder) {} + + AttributeReportIBs::Builder & Builder() { return mEncoder.mAttributeReportIBsBuilder; } + + void SetState(const AttributeEncodeState & state) { mEncoder.mEncodeState = state; } + +private: + AttributeValueEncoder & mEncoder; +}; + // Used by the code in TestWriteInteraction.cpp (and generally tests that interact with the WriteHandler may need this). const EmberAfAttributeMetadata * GetAttributeMetadata(const ConcreteAttributePath & aConcreteClusterPath) { @@ -134,6 +147,101 @@ CHIP_ERROR ReadSingleClusterData(const Access::SubjectDescriptor & aSubjectDescr return AttributeValueEncoder(aAttributeReports, aSubjectDescriptor, aPath, 0 /* dataVersion */).Encode(Test::kTestFieldValue1); } -} // namespace app +TestImCustomDataModel & TestImCustomDataModel::Instance() +{ + static TestImCustomDataModel model; + return model; +} + +CHIP_ERROR TestImCustomDataModel::ReadAttribute(const ReadAttributeRequest & request, AttributeValueEncoder & encoder) +{ + AttributeEncodeState mutableState(&encoder.GetState()); // provide a state copy to start. + + CHIP_ERROR err = ReadSingleClusterData(request.subjectDescriptor.value_or(Access::SubjectDescriptor()), + request.readFlags.Has(ReadFlags::kFabricFiltered), request.path, + TestOnlyAttributeValueEncoderAccessor(encoder).Builder(), &mutableState); + + // state must survive CHIP_ERRORs as it is used for chunking + TestOnlyAttributeValueEncoderAccessor(encoder).SetState(mutableState); + + return err; +} + +CHIP_ERROR TestImCustomDataModel::WriteAttribute(const WriteAttributeRequest & request, AttributeValueDecoder & decoder) +{ + return CHIP_ERROR_NOT_IMPLEMENTED; +} + +CHIP_ERROR TestImCustomDataModel::Invoke(const InvokeRequest & request, chip::TLV::TLVReader & input_arguments, + CommandHandler * handler) +{ + return CHIP_ERROR_NOT_IMPLEMENTED; +} + +EndpointId TestImCustomDataModel::FirstEndpoint() +{ + return CodegenDataModelInstance()->FirstEndpoint(); +} + +EndpointId TestImCustomDataModel::NextEndpoint(EndpointId before) +{ + return CodegenDataModelInstance()->NextEndpoint(before); +} + +ClusterEntry TestImCustomDataModel::FirstCluster(EndpointId endpoint) +{ + return CodegenDataModelInstance()->FirstCluster(endpoint); +} +ClusterEntry TestImCustomDataModel::NextCluster(const ConcreteClusterPath & before) +{ + return CodegenDataModelInstance()->NextCluster(before); +} + +std::optional TestImCustomDataModel::GetClusterInfo(const ConcreteClusterPath & path) +{ + return CodegenDataModelInstance()->GetClusterInfo(path); +} + +AttributeEntry TestImCustomDataModel::FirstAttribute(const ConcreteClusterPath & cluster) +{ + return CodegenDataModelInstance()->FirstAttribute(cluster); +} + +AttributeEntry TestImCustomDataModel::NextAttribute(const ConcreteAttributePath & before) +{ + return CodegenDataModelInstance()->NextAttribute(before); +} + +std::optional TestImCustomDataModel::GetAttributeInfo(const ConcreteAttributePath & path) +{ + return CodegenDataModelInstance()->GetAttributeInfo(path); +} + +CommandEntry TestImCustomDataModel::FirstAcceptedCommand(const ConcreteClusterPath & cluster) +{ + return CodegenDataModelInstance()->FirstAcceptedCommand(cluster); +} + +CommandEntry TestImCustomDataModel::NextAcceptedCommand(const ConcreteCommandPath & before) +{ + return CodegenDataModelInstance()->NextAcceptedCommand(before); +} + +std::optional TestImCustomDataModel::GetAcceptedCommandInfo(const ConcreteCommandPath & path) +{ + return CodegenDataModelInstance()->GetAcceptedCommandInfo(path); +} + +ConcreteCommandPath TestImCustomDataModel::FirstGeneratedCommand(const ConcreteClusterPath & cluster) +{ + return CodegenDataModelInstance()->FirstGeneratedCommand(cluster); +} + +ConcreteCommandPath TestImCustomDataModel::NextGeneratedCommand(const ConcreteCommandPath & before) +{ + return CodegenDataModelInstance()->NextGeneratedCommand(before); +} + +} // namespace app } // namespace chip diff --git a/src/app/tests/test-interaction-model-api.h b/src/app/tests/test-interaction-model-api.h index a4f91add7f42f8..e88fee62ec1d23 100644 --- a/src/app/tests/test-interaction-model-api.h +++ b/src/app/tests/test-interaction-model-api.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -64,7 +65,6 @@ } namespace chip { - namespace Test { constexpr chip::ClusterId kTestDeniedClusterId1 = 1000; @@ -101,5 +101,42 @@ void DispatchSingleClusterCommand(const ConcreteCommandPath & aRequestCommandPat bool IsDeviceTypeOnEndpoint(DeviceTypeId deviceType, EndpointId endpoint); +/// A customized class for read/write/invoke that matches functionality +/// with the ember-compatibility-functions functionality here. +/// +/// TODO: these functions currently redirect to ember functions, so could +/// be merged with DataModelFixtures.h/cpp as well. This is not done since +/// if we remove the direct ember dependency from IM, we can implement +/// distinct functional classes. +/// TODO items for above: +/// - once IM only supports DataModel +/// - break ember-overrides in this h/cpp file +class TestImCustomDataModel : public InteractionModel::DataModel +{ +public: + static TestImCustomDataModel & Instance(); + + CHIP_ERROR Shutdown() override { return CHIP_NO_ERROR; } + + CHIP_ERROR ReadAttribute(const InteractionModel::ReadAttributeRequest & request, AttributeValueEncoder & encoder) override; + CHIP_ERROR WriteAttribute(const InteractionModel::WriteAttributeRequest & request, AttributeValueDecoder & decoder) override; + CHIP_ERROR Invoke(const InteractionModel::InvokeRequest & request, chip::TLV::TLVReader & input_arguments, + CommandHandler * handler) override; + + EndpointId FirstEndpoint() override; + EndpointId NextEndpoint(EndpointId before) override; + InteractionModel::ClusterEntry FirstCluster(EndpointId endpoint) override; + InteractionModel::ClusterEntry NextCluster(const ConcreteClusterPath & before) override; + std::optional GetClusterInfo(const ConcreteClusterPath & path) override; + InteractionModel::AttributeEntry FirstAttribute(const ConcreteClusterPath & cluster) override; + InteractionModel::AttributeEntry NextAttribute(const ConcreteAttributePath & before) override; + std::optional GetAttributeInfo(const ConcreteAttributePath & path) override; + InteractionModel::CommandEntry FirstAcceptedCommand(const ConcreteClusterPath & cluster) override; + InteractionModel::CommandEntry NextAcceptedCommand(const ConcreteCommandPath & before) override; + std::optional GetAcceptedCommandInfo(const ConcreteCommandPath & path) override; + ConcreteCommandPath FirstGeneratedCommand(const ConcreteClusterPath & cluster) override; + ConcreteCommandPath NextGeneratedCommand(const ConcreteCommandPath & before) override; +}; + } // namespace app } // namespace chip diff --git a/src/app/util/attribute-storage.cpp b/src/app/util/attribute-storage.cpp index d154b95cf9ab9e..f21132bd4026ca 100644 --- a/src/app/util/attribute-storage.cpp +++ b/src/app/util/attribute-storage.cpp @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -421,10 +422,7 @@ static void shutdownEndpoint(EmberAfDefinedEndpoint * definedEndpoint) } } - // Clear out any command handler overrides registered for this - // endpoint. - chip::app::InteractionModelEngine::GetInstance()->UnregisterCommandHandlers(definedEndpoint->endpoint); - + CommandHandlerInterfaceRegistry::UnregisterAllCommandHandlersForEndpoint(definedEndpoint->endpoint); unregisterAllAttributeAccessOverridesForEndpoint(definedEndpoint); } diff --git a/src/app/util/ember-compatibility-functions.cpp b/src/app/util/ember-compatibility-functions.cpp index 88aae59da51a56..c1545bffa88977 100644 --- a/src/app/util/ember-compatibility-functions.cpp +++ b/src/app/util/ember-compatibility-functions.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -100,8 +101,7 @@ Protocols::InteractionModel::Status ServerClusterCommandExists(const ConcreteCom return Status::UnsupportedCluster; } - auto * commandHandler = - InteractionModelEngine::GetInstance()->FindCommandHandler(aCommandPath.mEndpointId, aCommandPath.mClusterId); + auto * commandHandler = CommandHandlerInterfaceRegistry::GetCommandHandler(aCommandPath.mEndpointId, aCommandPath.mClusterId); if (commandHandler) { struct Context diff --git a/src/app/util/ember-global-attribute-access-interface.cpp b/src/app/util/ember-global-attribute-access-interface.cpp index 327ab09c479512..cbc4f070e7825e 100644 --- a/src/app/util/ember-global-attribute-access-interface.cpp +++ b/src/app/util/ember-global-attribute-access-interface.cpp @@ -15,6 +15,7 @@ */ #include +#include #include #include @@ -96,7 +97,7 @@ CHIP_ERROR GlobalAttributeReader::EncodeCommandList(const ConcreteClusterPath & { return aEncoder.EncodeList([&](const auto & encoder) { auto * commandHandler = - InteractionModelEngine::GetInstance()->FindCommandHandler(aClusterPath.mEndpointId, aClusterPath.mClusterId); + CommandHandlerInterfaceRegistry::GetCommandHandler(aClusterPath.mEndpointId, aClusterPath.mClusterId); if (commandHandler) { struct Context diff --git a/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml index 749731069494f5..c97d4a59baa00b 100644 --- a/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml @@ -98,7 +98,7 @@ limitations under the License. true true - + diff --git a/src/app/zap-templates/zcl/data-model/chip/icd-management-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/icd-management-cluster.xml index c1e2805de8bf15..533495af167134 100644 --- a/src/app/zap-templates/zcl/data-model/chip/icd-management-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/icd-management-cluster.xml @@ -69,7 +69,7 @@ limitations under the License. - + @@ -96,8 +96,17 @@ limitations under the License. + +> +> +> +> +> + + + IdleModeDuration ActiveModeDuration ActiveModeThreshold @@ -113,6 +122,7 @@ limitations under the License. UserActiveModeTriggerHint UserActiveModeTriggerInstruction OperatingMode + MaximumCheckInBackOff Register a client to the end device diff --git a/src/app/zap-templates/zcl/data-model/chip/level-control-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/level-control-cluster.xml index 79a7da56a448e0..4d0e67ddbd1b47 100644 --- a/src/app/zap-templates/zcl/data-model/chip/level-control-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/level-control-cluster.xml @@ -46,7 +46,7 @@ limitations under the License. true true - + @@ -74,8 +74,8 @@ limitations under the License. OnLevel OnTransitionTime OffTransitionTime - DefaultMoveRate - Options + DefaultMoveRate + Options StartUpCurrentLevel diff --git a/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml index 62e9a6d883516d..c2979487e45ae3 100644 --- a/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml @@ -224,11 +224,6 @@ limitations under the License. - - - - - @@ -323,9 +318,6 @@ limitations under the License. - - - @@ -345,7 +337,7 @@ limitations under the License. - + LocalTemperatureCalibration @@ -369,7 +361,7 @@ limitations under the License. MaxCoolSetpointLimit - + MinSetpointDeadBand @@ -469,7 +461,6 @@ limitations under the License. PresetsSchedulesEditable TemperatureSetpointHoldPolicy SetpointHoldExpiryTimestamp - QueuedPreset @@ -508,7 +499,6 @@ limitations under the License. This command is used to set the active preset. - This command is used to start editing the presets and schedules. @@ -523,10 +513,6 @@ limitations under the License. This command is used to notify the server that all edits are done and should be committed. - - This command is sent to cancel a queued preset. - - This command sets the set point hold policy. diff --git a/src/app/zap-templates/zcl/zcl-with-test-extensions.json b/src/app/zap-templates/zcl/zcl-with-test-extensions.json index 1a76205be885f9..513144d3d32ad9 100644 --- a/src/app/zap-templates/zcl/zcl-with-test-extensions.json +++ b/src/app/zap-templates/zcl/zcl-with-test-extensions.json @@ -609,7 +609,6 @@ "FeatureMap" ], "Air Quality": ["AirQuality", "FeatureMap"], - "Thermostat": ["QueuedPreset"], "Electrical Energy Measurement": [ "Accuracy", "CumulativeEnergyImported", diff --git a/src/app/zap-templates/zcl/zcl.json b/src/app/zap-templates/zcl/zcl.json index 5388a12156601a..b497281e585578 100644 --- a/src/app/zap-templates/zcl/zcl.json +++ b/src/app/zap-templates/zcl/zcl.json @@ -607,7 +607,6 @@ "FeatureMap" ], "Air Quality": ["AirQuality", "FeatureMap"], - "Thermostat": ["QueuedPreset"], "Electrical Energy Measurement": [ "Accuracy", "CumulativeEnergyImported", diff --git a/src/controller/BUILD.gn b/src/controller/BUILD.gn index b06b2defecb8f2..b4e81158d497e8 100644 --- a/src/controller/BUILD.gn +++ b/src/controller/BUILD.gn @@ -74,6 +74,7 @@ static_library("controller") { "CommandSenderAllocator.h", "CommissioneeDeviceProxy.h", "CommissioningDelegate.h", + "CommissioningWindowParams.h", "DeviceDiscoveryDelegate.h", "DevicePairingDelegate.h", "InvokeInteraction.h", diff --git a/src/controller/CHIPDeviceController.h b/src/controller/CHIPDeviceController.h index 1ab85ca0dc182b..1c4b490faa891a 100644 --- a/src/controller/CHIPDeviceController.h +++ b/src/controller/CHIPDeviceController.h @@ -243,9 +243,10 @@ class DLL_EXPORT DeviceController : public AbstractDnssdDiscoveryController * An error return from this function means that neither callback has been * called yet, and neither callback will be called in the future. */ - CHIP_ERROR GetConnectedDevice(NodeId peerNodeId, Callback::Callback * onConnection, - chip::Callback::Callback * onFailure, - TransportPayloadCapability transportPayloadCapability = TransportPayloadCapability::kMRPPayload) + virtual CHIP_ERROR + GetConnectedDevice(NodeId peerNodeId, Callback::Callback * onConnection, + Callback::Callback * onFailure, + TransportPayloadCapability transportPayloadCapability = TransportPayloadCapability::kMRPPayload) { VerifyOrReturnError(mState == State::Initialized, CHIP_ERROR_INCORRECT_STATE); mSystemState->CASESessionMgr()->FindOrEstablishSession(ScopedNodeId(peerNodeId, GetFabricIndex()), onConnection, onFailure, diff --git a/src/controller/CHIPDeviceControllerSystemState.h b/src/controller/CHIPDeviceControllerSystemState.h index 1ea0593d594993..da8f25a75d2541 100644 --- a/src/controller/CHIPDeviceControllerSystemState.h +++ b/src/controller/CHIPDeviceControllerSystemState.h @@ -208,7 +208,7 @@ class DeviceControllerSystemState mGroupDataProvider != nullptr && mReportScheduler != nullptr && mTimerDelegate != nullptr && mSessionKeystore != nullptr && mSessionResumptionStorage != nullptr && mBDXTransferServer != nullptr; }; - bool IsShutDown() { return mHaveShutDown; } + bool IsShutDown() const { return mHaveShutDown; } System::Layer * SystemLayer() const { return mSystemLayer; }; Inet::EndPointManager * TCPEndPointManager() const { return mTCPEndPointManager; }; diff --git a/src/controller/CommissioningWindowOpener.cpp b/src/controller/CommissioningWindowOpener.cpp index 47666972137bcc..e8d1b29cb6437d 100644 --- a/src/controller/CommissioningWindowOpener.cpp +++ b/src/controller/CommissioningWindowOpener.cpp @@ -43,11 +43,12 @@ CHIP_ERROR CommissioningWindowOpener::OpenBasicCommissioningWindow(NodeId device // Basic commissioning does not use the setup payload. - mCommissioningWindowOption = CommissioningWindowOption::kOriginalSetupCode; - mBasicCommissioningWindowCallback = callback; - mCommissioningWindowCallback = nullptr; - mNodeId = deviceId; - mCommissioningWindowTimeout = timeout; + mCommissioningWindowOption = CommissioningWindowOption::kOriginalSetupCode; + mBasicCommissioningWindowCallback = callback; + mCommissioningWindowCallback = nullptr; + mCommissioningWindowVerifierCallback = nullptr; + mNodeId = deviceId; + mCommissioningWindowTimeout = timeout; mNextStep = Step::kOpenCommissioningWindow; return mController->GetConnectedDevice(mNodeId, &mDeviceConnected, &mDeviceConnectionFailure); @@ -59,60 +60,75 @@ CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindow(NodeId deviceId, S Callback::Callback * callback, SetupPayload & payload, bool readVIDPIDAttributes) { - VerifyOrReturnError(mNextStep == Step::kAcceptCommissioningStart, CHIP_ERROR_INCORRECT_STATE); + return OpenCommissioningWindow(CommissioningWindowPasscodeParams() + .SetNodeId(deviceId) + .SetTimeout(timeout) + .SetIteration(iteration) + .SetDiscriminator(discriminator) + .SetSetupPIN(setupPIN) + .SetSalt(salt) + .SetReadVIDPIDAttributes(readVIDPIDAttributes) + .SetCallback(callback), + payload); +} - VerifyOrReturnError(kSpake2p_Min_PBKDF_Iterations <= iteration && iteration <= kSpake2p_Max_PBKDF_Iterations, +CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindow(const CommissioningWindowPasscodeParams & params, + SetupPayload & payload) +{ + VerifyOrReturnError(mNextStep == Step::kAcceptCommissioningStart, CHIP_ERROR_INCORRECT_STATE); + VerifyOrReturnError(params.HasNodeId(), CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(params.HasDiscriminator(), CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(kSpake2p_Min_PBKDF_Iterations <= params.GetIteration() && + params.GetIteration() <= kSpake2p_Max_PBKDF_Iterations, + CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(!params.HasSalt() || + (params.GetSalt().size() >= kSpake2p_Min_PBKDF_Salt_Length && + params.GetSalt().size() <= kSpake2p_Max_PBKDF_Salt_Length), CHIP_ERROR_INVALID_ARGUMENT); - VerifyOrReturnError( - !salt.HasValue() || - (salt.Value().size() >= kSpake2p_Min_PBKDF_Salt_Length && salt.Value().size() <= kSpake2p_Max_PBKDF_Salt_Length), - CHIP_ERROR_INVALID_ARGUMENT); mSetupPayload = SetupPayload(); - if (setupPIN.HasValue()) + if (params.HasSetupPIN()) { - if (!SetupPayload::IsValidSetupPIN(setupPIN.Value())) - { - return CHIP_ERROR_INVALID_ARGUMENT; - } - + VerifyOrReturnError(SetupPayload::IsValidSetupPIN(params.GetSetupPIN()), CHIP_ERROR_INVALID_ARGUMENT); mCommissioningWindowOption = CommissioningWindowOption::kTokenWithProvidedPIN; - mSetupPayload.setUpPINCode = setupPIN.Value(); + mSetupPayload.setUpPINCode = params.GetSetupPIN(); } else { mCommissioningWindowOption = CommissioningWindowOption::kTokenWithRandomPIN; } - if (salt.HasValue()) + mSetupPayload.version = 0; + mDiscriminator.SetLongValue(params.GetDiscriminator()); + mSetupPayload.discriminator = mDiscriminator; + mSetupPayload.rendezvousInformation.SetValue(RendezvousInformationFlag::kOnNetwork); + + if (params.HasSalt()) { - memcpy(mPBKDFSaltBuffer, salt.Value().data(), salt.Value().size()); - mPBKDFSalt = ByteSpan(mPBKDFSaltBuffer, salt.Value().size()); + memcpy(mPBKDFSaltBuffer, params.GetSalt().data(), params.GetSalt().size()); + mPBKDFSalt = ByteSpan(mPBKDFSaltBuffer, params.GetSalt().size()); } else { ReturnErrorOnFailure(DRBG_get_bytes(mPBKDFSaltBuffer, sizeof(mPBKDFSaltBuffer))); mPBKDFSalt = ByteSpan(mPBKDFSaltBuffer); } + mPBKDFIterations = params.GetIteration(); - mSetupPayload.version = 0; - mSetupPayload.discriminator.SetLongValue(discriminator); - mSetupPayload.rendezvousInformation.SetValue(RendezvousInformationFlag::kOnNetwork); - - mCommissioningWindowCallback = callback; - mBasicCommissioningWindowCallback = nullptr; - mNodeId = deviceId; - mCommissioningWindowTimeout = timeout; - mPBKDFIterations = iteration; - - bool randomSetupPIN = !setupPIN.HasValue(); + bool randomSetupPIN = !params.HasSetupPIN(); ReturnErrorOnFailure( PASESession::GeneratePASEVerifier(mVerifier, mPBKDFIterations, mPBKDFSalt, randomSetupPIN, mSetupPayload.setUpPINCode)); - payload = mSetupPayload; + payload = mSetupPayload; + mCommissioningWindowCallback = params.GetCallback(); + mBasicCommissioningWindowCallback = nullptr; + mCommissioningWindowVerifierCallback = nullptr; + mNodeId = params.GetNodeId(); + mCommissioningWindowTimeout = params.GetTimeout(); + mTargetEndpointId = params.GetEndpointId(); - if (readVIDPIDAttributes) + if (params.GetReadVIDPIDAttributes()) { mNextStep = Step::kReadVID; } @@ -124,14 +140,42 @@ CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindow(NodeId deviceId, S return mController->GetConnectedDevice(mNodeId, &mDeviceConnected, &mDeviceConnectionFailure); } +CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindow(const CommissioningWindowVerifierParams & params) +{ + VerifyOrReturnError(mNextStep == Step::kAcceptCommissioningStart, CHIP_ERROR_INCORRECT_STATE); + VerifyOrReturnError(params.HasNodeId(), CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(params.HasDiscriminator(), CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(kSpake2p_Min_PBKDF_Iterations <= params.GetIteration() && + params.GetIteration() <= kSpake2p_Max_PBKDF_Iterations, + CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(params.GetSalt().size() >= kSpake2p_Min_PBKDF_Salt_Length && + params.GetSalt().size() <= kSpake2p_Max_PBKDF_Salt_Length, + CHIP_ERROR_INVALID_ARGUMENT); + memcpy(mPBKDFSaltBuffer, params.GetSalt().data(), params.GetSalt().size()); + mPBKDFSalt = ByteSpan(mPBKDFSaltBuffer, params.GetSalt().size()); + + ReturnErrorOnFailure(mVerifier.Deserialize(params.GetVerifier())); + mCommissioningWindowVerifierCallback = params.GetCallback(); + mBasicCommissioningWindowCallback = nullptr; + mCommissioningWindowCallback = nullptr; + mNodeId = params.GetNodeId(); + mCommissioningWindowTimeout = params.GetTimeout(); + mPBKDFIterations = params.GetIteration(); + mCommissioningWindowOption = CommissioningWindowOption::kTokenWithProvidedPIN; + mDiscriminator.SetLongValue(params.GetDiscriminator()); + mTargetEndpointId = params.GetEndpointId(); + + mNextStep = Step::kOpenCommissioningWindow; + + return mController->GetConnectedDevice(mNodeId, &mDeviceConnected, &mDeviceConnectionFailure); +} + CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindowInternal(Messaging::ExchangeManager & exchangeMgr, const SessionHandle & sessionHandle) { ChipLogProgress(Controller, "OpenCommissioningWindow for device ID 0x" ChipLogFormatX64, ChipLogValueX64(mNodeId)); - constexpr EndpointId kAdministratorCommissioningClusterEndpoint = 0; - - ClusterBase cluster(exchangeMgr, sessionHandle, kAdministratorCommissioningClusterEndpoint); + ClusterBase cluster(exchangeMgr, sessionHandle, mTargetEndpointId); if (mCommissioningWindowOption != CommissioningWindowOption::kOriginalSetupCode) { @@ -142,7 +186,7 @@ CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindowInternal(Messaging: AdministratorCommissioning::Commands::OpenCommissioningWindow::Type request; request.commissioningTimeout = mCommissioningWindowTimeout.count(); request.PAKEPasscodeVerifier = serializedVerifierSpan; - request.discriminator = mSetupPayload.discriminator.GetLongValue(); + request.discriminator = mDiscriminator.GetLongValue(); request.iterations = mPBKDFIterations; request.salt = mPBKDFSalt; @@ -230,15 +274,19 @@ void CommissioningWindowOpener::OnOpenCommissioningWindowSuccess(void * context, self->mCommissioningWindowCallback->mCall(self->mCommissioningWindowCallback->mContext, self->mNodeId, CHIP_NO_ERROR, self->mSetupPayload); - // Don't touch `self` anymore; it might have been destroyed by the - // callee. + // Don't touch `self` anymore; it might have been destroyed by the callee. + } + else if (self->mCommissioningWindowVerifierCallback != nullptr) + { + self->mCommissioningWindowVerifierCallback->mCall(self->mCommissioningWindowVerifierCallback->mContext, self->mNodeId, + CHIP_NO_ERROR); + // Don't touch `self` anymore; it might have been destroyed by the callee. } else if (self->mBasicCommissioningWindowCallback != nullptr) { self->mBasicCommissioningWindowCallback->mCall(self->mBasicCommissioningWindowCallback->mContext, self->mNodeId, CHIP_NO_ERROR); - // Don't touch `self` anymore; it might have been destroyed by the - // callee. + // Don't touch `self` anymore; it might have been destroyed by the callee. } } @@ -252,6 +300,11 @@ void CommissioningWindowOpener::OnOpenCommissioningWindowFailure(void * context, self->mCommissioningWindowCallback->mCall(self->mCommissioningWindowCallback->mContext, self->mNodeId, error, SetupPayload()); } + else if (self->mCommissioningWindowVerifierCallback != nullptr) + { + self->mCommissioningWindowVerifierCallback->mCall(self->mCommissioningWindowVerifierCallback->mContext, self->mNodeId, + error); + } else if (self->mBasicCommissioningWindowCallback != nullptr) { self->mBasicCommissioningWindowCallback->mCall(self->mBasicCommissioningWindowCallback->mContext, self->mNodeId, error); diff --git a/src/controller/CommissioningWindowOpener.h b/src/controller/CommissioningWindowOpener.h index 10547dce3a662d..28a25d77f7a014 100644 --- a/src/controller/CommissioningWindowOpener.h +++ b/src/controller/CommissioningWindowOpener.h @@ -20,22 +20,17 @@ #include #include #include +#include #include #include #include #include #include #include -#include namespace chip { namespace Controller { -// Passing SetupPayload by value on purpose, in case a consumer decides to reuse -// this object from inside the callback. -typedef void (*OnOpenCommissioningWindow)(void * context, NodeId deviceId, CHIP_ERROR status, SetupPayload payload); -typedef void (*OnOpenBasicCommissioningWindow)(void * context, NodeId deviceId, CHIP_ERROR status); - /** * A helper class to open a commissioning window given some parameters. */ @@ -107,6 +102,38 @@ class CommissioningWindowOpener Callback::Callback * callback, SetupPayload & payload, bool readVIDPIDAttributes = false); + /** + * @brief + * Try to look up the device attached to our controller with the given + * node id and ask it to re-enter commissioning mode with a PASE verifier + * derived from the given information and the given discriminator. The + * device will exit commissioning mode after a successful commissioning, + * or after the given `timeout` time. + * + * @param[in] params The parameters required to open an enhanced commissioning window + * with the provided or generated passcode. + * @param[out] payload The setup payload, not including the VID/PID bits, + * even if those were asked for, that is generated + * based on the passed-in information. The payload + * provided to the callback function, unlike this + * out parameter, will include the VID/PID bits if + * readVIDPIDAttributes is true. + */ + CHIP_ERROR OpenCommissioningWindow(const CommissioningWindowPasscodeParams & params, SetupPayload & payload); + + /** + * @brief + * Try to look up the device attached to our controller with the given + * node id and ask it to re-enter commissioning mode with a PASE verifier + * derived from the given information and the given discriminator. The + * device will exit commissioning mode after a successful commissioning, + * or after the given `timeout` time. + * + * @param[in] params The parameters required to open an enhanced commissioning window + * with the provided PAKE passcode verifier. + */ + CHIP_ERROR OpenCommissioningWindow(const CommissioningWindowVerifierParams & params); + private: enum class Step : uint8_t { @@ -133,10 +160,13 @@ class CommissioningWindowOpener DeviceController * const mController = nullptr; Step mNextStep = Step::kAcceptCommissioningStart; - Callback::Callback * mCommissioningWindowCallback = nullptr; - Callback::Callback * mBasicCommissioningWindowCallback = nullptr; + Callback::Callback * mCommissioningWindowCallback = nullptr; + Callback::Callback * mCommissioningWindowVerifierCallback = nullptr; + Callback::Callback * mBasicCommissioningWindowCallback = nullptr; SetupPayload mSetupPayload; - NodeId mNodeId = kUndefinedNodeId; + SetupDiscriminator mDiscriminator{}; + NodeId mNodeId = kUndefinedNodeId; + EndpointId mTargetEndpointId = kRootEndpointId; // Default endpoint for Administrator Commissioning Cluster System::Clock::Seconds16 mCommissioningWindowTimeout = System::Clock::kZero; CommissioningWindowOption mCommissioningWindowOption = CommissioningWindowOption::kOriginalSetupCode; Crypto::Spake2pVerifier mVerifier; // Used for non-basic commissioning. diff --git a/src/controller/CommissioningWindowParams.h b/src/controller/CommissioningWindowParams.h new file mode 100644 index 00000000000000..c845ecf2c80135 --- /dev/null +++ b/src/controller/CommissioningWindowParams.h @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace chip { +namespace Controller { + +// Passing SetupPayload by value on purpose, in case a consumer decides to reuse +// this object from inside the callback. +typedef void (*OnOpenCommissioningWindow)(void * context, NodeId deviceId, CHIP_ERROR status, SetupPayload payload); +typedef void (*OnOpenCommissioningWindowWithVerifier)(void * context, NodeId deviceId, CHIP_ERROR status); +typedef void (*OnOpenBasicCommissioningWindow)(void * context, NodeId deviceId, CHIP_ERROR status); + +template +class CommissioningWindowCommonParams +{ +public: + CommissioningWindowCommonParams() = default; + + bool HasNodeId() const { return mNodeId != kUndefinedNodeId; } + NodeId GetNodeId() const + { + VerifyOrDie(HasNodeId()); + return mNodeId; + } + // The node identifier of device + Derived & SetNodeId(NodeId nodeId) + { + mNodeId = nodeId; + return static_cast(*this); + } + + EndpointId GetEndpointId() const { return mEndpointId; } + Derived & SetEndpointId(EndpointId endpointId) + { + mEndpointId = endpointId; + return static_cast(*this); + } + + System::Clock::Seconds16 GetTimeout() const { return mTimeout; } + // The duration for which the commissioning window should remain open. + Derived & SetTimeout(System::Clock::Seconds16 timeout) + { + mTimeout = timeout; + return static_cast(*this); + } + Derived & SetTimeout(uint16_t timeoutSeconds) { return SetTimeout(System::Clock::Seconds16(timeoutSeconds)); } + + // The PAKE iteration count associated with the PAKE Passcode ID and + // ephemeral PAKE passcode verifier to be used for this commissioning. + uint32_t GetIteration() const { return mIteration; } + Derived & SetIteration(uint32_t iteration) + { + mIteration = iteration; + return static_cast(*this); + } + + // The long discriminator for the DNS-SD advertisement. + uint16_t GetDiscriminator() const { return mDiscriminator.Value(); } + bool HasDiscriminator() const { return mDiscriminator.HasValue(); } + Derived & SetDiscriminator(uint16_t discriminator) + { + mDiscriminator = MakeOptional(discriminator); + return static_cast(*this); + } + +private: + NodeId mNodeId = kUndefinedNodeId; + EndpointId mEndpointId = kRootEndpointId; // Default endpoint for Administrator Commissioning Cluster + System::Clock::Seconds16 mTimeout = System::Clock::Seconds16(300); // Defaulting + uint32_t mIteration = 1000; // Defaulting + Optional mDiscriminator = NullOptional; // Using optional type to avoid picking a sentinnel in valid range +}; + +class CommissioningWindowPasscodeParams : public CommissioningWindowCommonParams +{ +public: + CommissioningWindowPasscodeParams() = default; + + bool HasSetupPIN() const { return mSetupPIN.HasValue(); } + // Get the value of setup PIN (Passcode) if present, crashes otherwise. + uint32_t GetSetupPIN() const { return mSetupPIN.Value(); } + // The setup PIN (Passcode) to use. A random one will be generated if not provided. + CommissioningWindowPasscodeParams & SetSetupPIN(uint32_t setupPIN) { return SetSetupPIN(MakeOptional(setupPIN)); } + // The setup PIN (Passcode) to use. A random one will be generated if NullOptional is used. + CommissioningWindowPasscodeParams & SetSetupPIN(Optional setupPIN) + { + mSetupPIN = setupPIN; + return *this; + } + + bool HasSalt() const { return mSalt.HasValue(); } + // Get the value of salt if present. + // Dies if absent! Make sure to check HasSalt() + ByteSpan GetSalt() const { return mSalt.Value(); } + // The salt to use. A random one will be generated if not provided. + // If provided, must be at least kSpake2p_Min_PBKDF_Salt_Length bytes + // and at most kSpake2p_Max_PBKDF_Salt_Length bytes in length. + CommissioningWindowPasscodeParams & SetSalt(ByteSpan salt) { return SetSalt(MakeOptional(salt)); } + // The salt to use. A random one will be generated if NullOptional is used. + // If provided, must be at least kSpake2p_Min_PBKDF_Salt_Length bytes + // and at most kSpake2p_Max_PBKDF_Salt_Length bytes in length. + // Note that this an overloaded optional arg function to support existing APIs. + CommissioningWindowPasscodeParams & SetSalt(Optional salt) + { + mSalt = salt; + return *this; + } + + bool GetReadVIDPIDAttributes() const { return mReadVIDPIDAttributes; } + // Should the API internally read VID and PID from the device while opening the + // commissioning window. If this argument is `true`, the API will read VID and PID + // from the device and include them in the setup payload passed to the callback. + CommissioningWindowPasscodeParams & SetReadVIDPIDAttributes(bool readVIDPIDAttributes) + { + mReadVIDPIDAttributes = readVIDPIDAttributes; + return *this; + } + + Callback::Callback * GetCallback() const { return mCallback; } + // The function to be called on success or failure of opening the commissioning window. + // This will include the SetupPayload generated from provided parameters. + CommissioningWindowPasscodeParams & SetCallback(Callback::Callback * callback) + { + mCallback = callback; + return *this; + } + +private: + Optional mSetupPIN = NullOptional; + Optional mSalt = NullOptional; + bool mReadVIDPIDAttributes = false; + Callback::Callback * mCallback = nullptr; +}; + +class CommissioningWindowVerifierParams : public CommissioningWindowCommonParams +{ +public: + CommissioningWindowVerifierParams() = default; + + ByteSpan GetVerifier() const { return mVerifier.Value(); } + // The PAKE passcode verifier generated with enclosed iterations, salt and not-enclosed passcode. + CommissioningWindowVerifierParams & SetVerifier(ByteSpan verifier) + { + mVerifier = MakeOptional(verifier); + return *this; + } + + ByteSpan GetSalt() const { return mSalt.Value(); } + // The salt that was used to generate the verifier. + // It must be at least kSpake2p_Min_PBKDF_Salt_Length bytes. + // Note: This is REQUIRED when verifier is used + CommissioningWindowVerifierParams & SetSalt(ByteSpan salt) + { + mSalt = MakeOptional(salt); + return *this; + } + + Callback::Callback * GetCallback() const { return mCallback; } + // The function to be called on success or failure of opening the + // commissioning window. This will NOT include the SetupPayload. + CommissioningWindowVerifierParams & SetCallback(Callback::Callback * callback) + { + mCallback = callback; + return *this; + } + +private: + Optional mSalt; + Optional mVerifier; + Callback::Callback * mCallback = nullptr; +}; + +} // namespace Controller +} // namespace chip diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 48e39baf07f5dc..6acf9fd8c4fb2f 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -216,7 +216,7 @@ deprecated cluster OnOffSwitchConfiguration = 7 { /** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */ cluster LevelControl = 8 { - revision 5; + revision 6; enum MoveModeEnum : enum8 { kUp = 0; @@ -2670,7 +2670,7 @@ cluster BooleanState = 69 { /** Allows servers to ensure that listed clients are notified when a server is available for communication. */ cluster IcdManagement = 70 { - revision 2; + revision 3; enum ClientTypeEnum : enum8 { kPermanent = 0; @@ -2686,6 +2686,7 @@ cluster IcdManagement = 70 { kCheckInProtocolSupport = 0x1; kUserActiveModeTrigger = 0x2; kLongIdleTimeSupport = 0x4; + kDynamicSitLitSupport = 0x8; } bitmap UserActiveModeTriggerBitmap : bitmap32 { @@ -2724,6 +2725,7 @@ cluster IcdManagement = 70 { provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6; provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7; provisional readonly attribute optional OperatingModeEnum operatingMode = 8; + provisional readonly attribute optional int32u maximumCheckInBackOff = 9; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -6654,7 +6656,6 @@ cluster Thermostat = 513 { kMatterScheduleConfiguration = 0x80; kPresets = 0x100; kSetpoints = 0x200; - kQueuedPresetsSupported = 0x400; } bitmap HVACSystemTypeBitmap : bitmap8 { @@ -6752,11 +6753,6 @@ cluster Thermostat = 513 { PresetTypeFeaturesBitmap presetTypeFeatures = 2; } - struct QueuedPresetStruct { - nullable octet_string<16> presetHandle = 0; - nullable epoch_s transitionTimestamp = 1; - } - struct ScheduleTypeStruct { SystemModeEnum systemMode = 0; int8u numberOfSchedules = 1; @@ -6831,7 +6827,6 @@ cluster Thermostat = 513 { readonly attribute optional boolean presetsSchedulesEditable = 82; readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83; readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84; - readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute event_id eventList[] = 65530; @@ -6869,7 +6864,6 @@ cluster Thermostat = 513 { request struct SetActivePresetRequestRequest { octet_string<16> presetHandle = 0; - optional int16u delayMinutes = 1; } request struct StartPresetsSchedulesEditRequestRequest { @@ -6898,8 +6892,6 @@ cluster Thermostat = 513 { command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8; /** This command is used to notify the server that all edits are done and should be committed. */ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9; - /** This command is sent to cancel a queued preset. */ - command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10; /** This command sets the set point hold policy. */ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11; } @@ -7022,7 +7014,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap index ec4af6eeec7e0a..97d960bb7f4d30 100644 --- a/src/controller/data_model/controller-clusters.zap +++ b/src/controller/data_model/controller-clusters.zap @@ -416,7 +416,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "6", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -4120,7 +4120,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java index 5369a5c42d4a26..66338f93c0b225 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java @@ -18601,6 +18601,7 @@ public static class IcdManagementCluster extends BaseChipCluster { private static final long USER_ACTIVE_MODE_TRIGGER_HINT_ATTRIBUTE_ID = 6L; private static final long USER_ACTIVE_MODE_TRIGGER_INSTRUCTION_ATTRIBUTE_ID = 7L; private static final long OPERATING_MODE_ATTRIBUTE_ID = 8L; + private static final long MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID = 9L; private static final long GENERATED_COMMAND_LIST_ATTRIBUTE_ID = 65528L; private static final long ACCEPTED_COMMAND_LIST_ATTRIBUTE_ID = 65529L; private static final long EVENT_LIST_ATTRIBUTE_ID = 65530L; @@ -18985,6 +18986,32 @@ public void onSuccess(byte[] tlv) { }, OPERATING_MODE_ATTRIBUTE_ID, minInterval, maxInterval); } + public void readMaximumCheckInBackOffAttribute( + LongAttributeCallback callback) { + ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID); + + readAttribute(new ReportCallbackImpl(callback, path) { + @Override + public void onSuccess(byte[] tlv) { + Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); + callback.onSuccess(value); + } + }, MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID, true); + } + + public void subscribeMaximumCheckInBackOffAttribute( + LongAttributeCallback callback, int minInterval, int maxInterval) { + ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID); + + subscribeAttribute(new ReportCallbackImpl(callback, path) { + @Override + public void onSuccess(byte[] tlv) { + Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); + callback.onSuccess(value); + } + }, MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID, minInterval, maxInterval); + } + public void readGeneratedCommandListAttribute( GeneratedCommandListAttributeCallback callback) { ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, GENERATED_COMMAND_LIST_ATTRIBUTE_ID); @@ -40184,7 +40211,6 @@ public static class ThermostatCluster extends BaseChipCluster { private static final long PRESETS_SCHEDULES_EDITABLE_ATTRIBUTE_ID = 82L; private static final long TEMPERATURE_SETPOINT_HOLD_POLICY_ATTRIBUTE_ID = 83L; private static final long SETPOINT_HOLD_EXPIRY_TIMESTAMP_ATTRIBUTE_ID = 84L; - private static final long QUEUED_PRESET_ATTRIBUTE_ID = 85L; private static final long GENERATED_COMMAND_LIST_ATTRIBUTE_ID = 65528L; private static final long ACCEPTED_COMMAND_LIST_ATTRIBUTE_ID = 65529L; private static final long EVENT_LIST_ATTRIBUTE_ID = 65530L; @@ -40349,11 +40375,11 @@ public void onResponse(StructType invokeStructValue) { }}, commandId, commandArgs, timedInvokeTimeoutMs); } - public void setActivePresetRequest(DefaultClusterCallback callback, byte[] presetHandle, Optional delayMinutes) { - setActivePresetRequest(callback, presetHandle, delayMinutes, 0); + public void setActivePresetRequest(DefaultClusterCallback callback, byte[] presetHandle) { + setActivePresetRequest(callback, presetHandle, 0); } - public void setActivePresetRequest(DefaultClusterCallback callback, byte[] presetHandle, Optional delayMinutes, int timedInvokeTimeoutMs) { + public void setActivePresetRequest(DefaultClusterCallback callback, byte[] presetHandle, int timedInvokeTimeoutMs) { final long commandId = 6L; ArrayList elements = new ArrayList<>(); @@ -40361,10 +40387,6 @@ public void setActivePresetRequest(DefaultClusterCallback callback, byte[] prese BaseTLVType presetHandletlvValue = new ByteArrayType(presetHandle); elements.add(new StructElement(presetHandleFieldID, presetHandletlvValue)); - final long delayMinutesFieldID = 1L; - BaseTLVType delayMinutestlvValue = delayMinutes.map((nonOptionaldelayMinutes) -> new UIntType(nonOptionaldelayMinutes)).orElse(new EmptyType()); - elements.add(new StructElement(delayMinutesFieldID, delayMinutestlvValue)); - StructType commandArgs = new StructType(elements); invoke(new InvokeCallbackImpl(callback) { @Override @@ -40425,22 +40447,6 @@ public void onResponse(StructType invokeStructValue) { }}, commandId, commandArgs, timedInvokeTimeoutMs); } - public void cancelSetActivePresetRequest(DefaultClusterCallback callback) { - cancelSetActivePresetRequest(callback, 0); - } - - public void cancelSetActivePresetRequest(DefaultClusterCallback callback, int timedInvokeTimeoutMs) { - final long commandId = 10L; - - ArrayList elements = new ArrayList<>(); - StructType commandArgs = new StructType(elements); - invoke(new InvokeCallbackImpl(callback) { - @Override - public void onResponse(StructType invokeStructValue) { - callback.onSuccess(); - }}, commandId, commandArgs, timedInvokeTimeoutMs); - } - public void setTemperatureSetpointHoldPolicy(DefaultClusterCallback callback, Integer temperatureSetpointHoldPolicy) { setTemperatureSetpointHoldPolicy(callback, temperatureSetpointHoldPolicy, 0); } @@ -40541,10 +40547,6 @@ public interface SetpointHoldExpiryTimestampAttributeCallback extends BaseAttrib void onSuccess(@Nullable Long value); } - public interface QueuedPresetAttributeCallback extends BaseAttributeCallback { - void onSuccess(@Nullable ChipStructs.ThermostatClusterQueuedPresetStruct value); - } - public interface GeneratedCommandListAttributeCallback extends BaseAttributeCallback { void onSuccess(List value); } @@ -42434,32 +42436,6 @@ public void onSuccess(byte[] tlv) { }, SETPOINT_HOLD_EXPIRY_TIMESTAMP_ATTRIBUTE_ID, minInterval, maxInterval); } - public void readQueuedPresetAttribute( - QueuedPresetAttributeCallback callback) { - ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, QUEUED_PRESET_ATTRIBUTE_ID); - - readAttribute(new ReportCallbackImpl(callback, path) { - @Override - public void onSuccess(byte[] tlv) { - @Nullable ChipStructs.ThermostatClusterQueuedPresetStruct value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); - callback.onSuccess(value); - } - }, QUEUED_PRESET_ATTRIBUTE_ID, true); - } - - public void subscribeQueuedPresetAttribute( - QueuedPresetAttributeCallback callback, int minInterval, int maxInterval) { - ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, QUEUED_PRESET_ATTRIBUTE_ID); - - subscribeAttribute(new ReportCallbackImpl(callback, path) { - @Override - public void onSuccess(byte[] tlv) { - @Nullable ChipStructs.ThermostatClusterQueuedPresetStruct value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv); - callback.onSuccess(value); - } - }, QUEUED_PRESET_ATTRIBUTE_ID, minInterval, maxInterval); - } - public void readGeneratedCommandListAttribute( GeneratedCommandListAttributeCallback callback) { ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, GENERATED_COMMAND_LIST_ATTRIBUTE_ID); diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java b/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java index 11cba416fb733c..c62c3062fa3bc4 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java @@ -9777,67 +9777,6 @@ public String toString() { return output.toString(); } } -public static class ThermostatClusterQueuedPresetStruct { - public @Nullable byte[] presetHandle; - public @Nullable Long transitionTimestamp; - private static final long PRESET_HANDLE_ID = 0L; - private static final long TRANSITION_TIMESTAMP_ID = 1L; - - public ThermostatClusterQueuedPresetStruct( - @Nullable byte[] presetHandle, - @Nullable Long transitionTimestamp - ) { - this.presetHandle = presetHandle; - this.transitionTimestamp = transitionTimestamp; - } - - public StructType encodeTlv() { - ArrayList values = new ArrayList<>(); - values.add(new StructElement(PRESET_HANDLE_ID, presetHandle != null ? new ByteArrayType(presetHandle) : new NullType())); - values.add(new StructElement(TRANSITION_TIMESTAMP_ID, transitionTimestamp != null ? new UIntType(transitionTimestamp) : new NullType())); - - return new StructType(values); - } - - public static ThermostatClusterQueuedPresetStruct decodeTlv(BaseTLVType tlvValue) { - if (tlvValue == null || tlvValue.type() != TLVType.Struct) { - return null; - } - @Nullable byte[] presetHandle = null; - @Nullable Long transitionTimestamp = null; - for (StructElement element: ((StructType)tlvValue).value()) { - if (element.contextTagNum() == PRESET_HANDLE_ID) { - if (element.value(BaseTLVType.class).type() == TLVType.ByteArray) { - ByteArrayType castingValue = element.value(ByteArrayType.class); - presetHandle = castingValue.value(byte[].class); - } - } else if (element.contextTagNum() == TRANSITION_TIMESTAMP_ID) { - if (element.value(BaseTLVType.class).type() == TLVType.UInt) { - UIntType castingValue = element.value(UIntType.class); - transitionTimestamp = castingValue.value(Long.class); - } - } - } - return new ThermostatClusterQueuedPresetStruct( - presetHandle, - transitionTimestamp - ); - } - - @Override - public String toString() { - StringBuilder output = new StringBuilder(); - output.append("ThermostatClusterQueuedPresetStruct {\n"); - output.append("\tpresetHandle: "); - output.append(Arrays.toString(presetHandle)); - output.append("\n"); - output.append("\ttransitionTimestamp: "); - output.append(transitionTimestamp); - output.append("\n"); - output.append("}\n"); - return output.toString(); - } -} public static class ThermostatClusterScheduleTypeStruct { public Integer systemMode; public Integer numberOfSchedules; diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java index fc0a28a6d4eb0c..6959f3a3d83caa 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java @@ -5802,6 +5802,7 @@ public enum Attribute { UserActiveModeTriggerHint(6L), UserActiveModeTriggerInstruction(7L), OperatingMode(8L), + MaximumCheckInBackOff(9L), GeneratedCommandList(65528L), AcceptedCommandList(65529L), EventList(65530L), @@ -11893,7 +11894,6 @@ public enum Attribute { PresetsSchedulesEditable(82L), TemperatureSetpointHoldPolicy(83L), SetpointHoldExpiryTimestamp(84L), - QueuedPreset(85L), GeneratedCommandList(65528L), AcceptedCommandList(65529L), EventList(65530L), @@ -11949,7 +11949,6 @@ public enum Command { StartPresetsSchedulesEditRequest(7L), CancelPresetsSchedulesEditRequest(8L), CommitPresetsSchedulesRequest(9L), - CancelSetActivePresetRequest(10L), SetTemperatureSetpointHoldPolicy(11L),; private final long id; Command(long id) { @@ -12036,7 +12035,7 @@ public static SetActiveScheduleRequestCommandField value(int id) throws NoSuchFi } throw new NoSuchFieldError(); } - }public enum SetActivePresetRequestCommandField {PresetHandle(0),DelayMinutes(1),; + }public enum SetActivePresetRequestCommandField {PresetHandle(0),; private final int id; SetActivePresetRequestCommandField(int id) { this.id = id; diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java index 1538d4f47415ad..99bae94690439d 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java @@ -14200,27 +14200,6 @@ public void onError(Exception ex) { } } - public static class DelegatedThermostatClusterQueuedPresetAttributeCallback implements ChipClusters.ThermostatCluster.QueuedPresetAttributeCallback, DelegatedClusterCallback { - private ClusterCommandCallback callback; - @Override - public void setCallbackDelegate(ClusterCommandCallback callback) { - this.callback = callback; - } - - @Override - public void onSuccess(@Nullable ChipStructs.ThermostatClusterQueuedPresetStruct value) { - Map responseValues = new LinkedHashMap<>(); - CommandResponseInfo commandResponseInfo = new CommandResponseInfo("value", "ChipStructs.ThermostatClusterQueuedPresetStruct"); - responseValues.put(commandResponseInfo, value); - callback.onSuccess(responseValues); - } - - @Override - public void onError(Exception ex) { - callback.onFailure(ex); - } - } - public static class DelegatedThermostatClusterGeneratedCommandListAttributeCallback implements ChipClusters.ThermostatCluster.GeneratedCommandListAttributeCallback, DelegatedClusterCallback { private ClusterCommandCallback callback; @Override @@ -26706,17 +26685,12 @@ public Map> getCommandMap() { CommandParameterInfo thermostatsetActivePresetRequestpresetHandleCommandParameterInfo = new CommandParameterInfo("presetHandle", byte[].class, byte[].class); thermostatsetActivePresetRequestCommandParams.put("presetHandle",thermostatsetActivePresetRequestpresetHandleCommandParameterInfo); - - CommandParameterInfo thermostatsetActivePresetRequestdelayMinutesCommandParameterInfo = new CommandParameterInfo("delayMinutes", Optional.class, Integer.class); - thermostatsetActivePresetRequestCommandParams.put("delayMinutes",thermostatsetActivePresetRequestdelayMinutesCommandParameterInfo); InteractionInfo thermostatsetActivePresetRequestInteractionInfo = new InteractionInfo( (cluster, callback, commandArguments) -> { ((ChipClusters.ThermostatCluster) cluster) .setActivePresetRequest((DefaultClusterCallback) callback , (byte[]) commandArguments.get("presetHandle") - , (Optional) - commandArguments.get("delayMinutes") ); }, () -> new DelegatedDefaultClusterCallback(), @@ -26765,18 +26739,6 @@ public Map> getCommandMap() { ); thermostatClusterInteractionInfoMap.put("commitPresetsSchedulesRequest", thermostatcommitPresetsSchedulesRequestInteractionInfo); - Map thermostatcancelSetActivePresetRequestCommandParams = new LinkedHashMap(); - InteractionInfo thermostatcancelSetActivePresetRequestInteractionInfo = new InteractionInfo( - (cluster, callback, commandArguments) -> { - ((ChipClusters.ThermostatCluster) cluster) - .cancelSetActivePresetRequest((DefaultClusterCallback) callback - ); - }, - () -> new DelegatedDefaultClusterCallback(), - thermostatcancelSetActivePresetRequestCommandParams - ); - thermostatClusterInteractionInfoMap.put("cancelSetActivePresetRequest", thermostatcancelSetActivePresetRequestInteractionInfo); - Map thermostatsetTemperatureSetpointHoldPolicyCommandParams = new LinkedHashMap(); CommandParameterInfo thermostatsetTemperatureSetpointHoldPolicytemperatureSetpointHoldPolicyCommandParameterInfo = new CommandParameterInfo("temperatureSetpointHoldPolicy", Integer.class, Integer.class); diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java index b6a359e031808b..04c849e6c0eb9c 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java +++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java @@ -5803,6 +5803,17 @@ private static Map readIcdManagementInteractionInfo() { readIcdManagementOperatingModeCommandParams ); result.put("readOperatingModeAttribute", readIcdManagementOperatingModeAttributeInteractionInfo); + Map readIcdManagementMaximumCheckInBackOffCommandParams = new LinkedHashMap(); + InteractionInfo readIcdManagementMaximumCheckInBackOffAttributeInteractionInfo = new InteractionInfo( + (cluster, callback, commandArguments) -> { + ((ChipClusters.IcdManagementCluster) cluster).readMaximumCheckInBackOffAttribute( + (ChipClusters.LongAttributeCallback) callback + ); + }, + () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(), + readIcdManagementMaximumCheckInBackOffCommandParams + ); + result.put("readMaximumCheckInBackOffAttribute", readIcdManagementMaximumCheckInBackOffAttributeInteractionInfo); Map readIcdManagementGeneratedCommandListCommandParams = new LinkedHashMap(); InteractionInfo readIcdManagementGeneratedCommandListAttributeInteractionInfo = new InteractionInfo( (cluster, callback, commandArguments) -> { diff --git a/src/controller/java/generated/java/chip/devicecontroller/cluster/files.gni b/src/controller/java/generated/java/chip/devicecontroller/cluster/files.gni index 5a29a90b27372b..f50c3e2c82b56e 100644 --- a/src/controller/java/generated/java/chip/devicecontroller/cluster/files.gni +++ b/src/controller/java/generated/java/chip/devicecontroller/cluster/files.gni @@ -125,7 +125,6 @@ structs_sources = [ "${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/TargetNavigatorClusterTargetInfoStruct.kt", "${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterPresetStruct.kt", "${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterPresetTypeStruct.kt", - "${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterQueuedPresetStruct.kt", "${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterScheduleStruct.kt", "${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterScheduleTransitionStruct.kt", "${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterScheduleTypeStruct.kt", diff --git a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterQueuedPresetStruct.kt b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterQueuedPresetStruct.kt deleted file mode 100644 index fbb176317e9fb4..00000000000000 --- a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterQueuedPresetStruct.kt +++ /dev/null @@ -1,79 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package chip.devicecontroller.cluster.structs - -import chip.devicecontroller.cluster.* -import matter.tlv.ContextSpecificTag -import matter.tlv.Tag -import matter.tlv.TlvReader -import matter.tlv.TlvWriter - -class ThermostatClusterQueuedPresetStruct( - val presetHandle: ByteArray?, - val transitionTimestamp: ULong?, -) { - override fun toString(): String = buildString { - append("ThermostatClusterQueuedPresetStruct {\n") - append("\tpresetHandle : $presetHandle\n") - append("\ttransitionTimestamp : $transitionTimestamp\n") - append("}\n") - } - - fun toTlv(tlvTag: Tag, tlvWriter: TlvWriter) { - tlvWriter.apply { - startStructure(tlvTag) - if (presetHandle != null) { - put(ContextSpecificTag(TAG_PRESET_HANDLE), presetHandle) - } else { - putNull(ContextSpecificTag(TAG_PRESET_HANDLE)) - } - if (transitionTimestamp != null) { - put(ContextSpecificTag(TAG_TRANSITION_TIMESTAMP), transitionTimestamp) - } else { - putNull(ContextSpecificTag(TAG_TRANSITION_TIMESTAMP)) - } - endStructure() - } - } - - companion object { - private const val TAG_PRESET_HANDLE = 0 - private const val TAG_TRANSITION_TIMESTAMP = 1 - - fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): ThermostatClusterQueuedPresetStruct { - tlvReader.enterStructure(tlvTag) - val presetHandle = - if (!tlvReader.isNull()) { - tlvReader.getByteArray(ContextSpecificTag(TAG_PRESET_HANDLE)) - } else { - tlvReader.getNull(ContextSpecificTag(TAG_PRESET_HANDLE)) - null - } - val transitionTimestamp = - if (!tlvReader.isNull()) { - tlvReader.getULong(ContextSpecificTag(TAG_TRANSITION_TIMESTAMP)) - } else { - tlvReader.getNull(ContextSpecificTag(TAG_TRANSITION_TIMESTAMP)) - null - } - - tlvReader.exitContainer() - - return ThermostatClusterQueuedPresetStruct(presetHandle, transitionTimestamp) - } - } -} diff --git a/src/controller/java/generated/java/matter/controller/cluster/clusters/IcdManagementCluster.kt b/src/controller/java/generated/java/matter/controller/cluster/clusters/IcdManagementCluster.kt index ddc206eeb28aad..68f206d72e71f4 100644 --- a/src/controller/java/generated/java/matter/controller/cluster/clusters/IcdManagementCluster.kt +++ b/src/controller/java/generated/java/matter/controller/cluster/clusters/IcdManagementCluster.kt @@ -1066,6 +1066,99 @@ class IcdManagementCluster( } } + suspend fun readMaximumCheckInBackOffAttribute(): UInt? { + val ATTRIBUTE_ID: UInt = 9u + + val attributePath = + AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID) + + val readRequest = ReadRequest(eventPaths = emptyList(), attributePaths = listOf(attributePath)) + + val response = controller.read(readRequest) + + if (response.successes.isEmpty()) { + logger.log(Level.WARNING, "Read command failed") + throw IllegalStateException("Read command failed with failures: ${response.failures}") + } + + logger.log(Level.FINE, "Read command succeeded") + + val attributeData = + response.successes.filterIsInstance().firstOrNull { + it.path.attributeId == ATTRIBUTE_ID + } + + requireNotNull(attributeData) { "Maximumcheckinbackoff attribute not found in response" } + + // Decode the TLV data into the appropriate type + val tlvReader = TlvReader(attributeData.data) + val decodedValue: UInt? = + if (tlvReader.isNextTag(AnonymousTag)) { + tlvReader.getUInt(AnonymousTag) + } else { + null + } + + return decodedValue + } + + suspend fun subscribeMaximumCheckInBackOffAttribute( + minInterval: Int, + maxInterval: Int, + ): Flow { + val ATTRIBUTE_ID: UInt = 9u + val attributePaths = + listOf( + AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID) + ) + + val subscribeRequest: SubscribeRequest = + SubscribeRequest( + eventPaths = emptyList(), + attributePaths = attributePaths, + minInterval = Duration.ofSeconds(minInterval.toLong()), + maxInterval = Duration.ofSeconds(maxInterval.toLong()), + ) + + return controller.subscribe(subscribeRequest).transform { subscriptionState -> + when (subscriptionState) { + is SubscriptionState.SubscriptionErrorNotification -> { + emit( + UIntSubscriptionState.Error( + Exception( + "Subscription terminated with error code: ${subscriptionState.terminationCause}" + ) + ) + ) + } + is SubscriptionState.NodeStateUpdate -> { + val attributeData = + subscriptionState.updateState.successes + .filterIsInstance() + .firstOrNull { it.path.attributeId == ATTRIBUTE_ID } + + requireNotNull(attributeData) { + "Maximumcheckinbackoff attribute not found in Node State update" + } + + // Decode the TLV data into the appropriate type + val tlvReader = TlvReader(attributeData.data) + val decodedValue: UInt? = + if (tlvReader.isNextTag(AnonymousTag)) { + tlvReader.getUInt(AnonymousTag) + } else { + null + } + + decodedValue?.let { emit(UIntSubscriptionState.Success(it)) } + } + SubscriptionState.SubscriptionEstablished -> { + emit(UIntSubscriptionState.SubscriptionEstablished) + } + } + } + } + suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute { val ATTRIBUTE_ID: UInt = 65528u diff --git a/src/controller/java/generated/java/matter/controller/cluster/clusters/ThermostatCluster.kt b/src/controller/java/generated/java/matter/controller/cluster/clusters/ThermostatCluster.kt index 5d36b70eea4726..ed9077402e96af 100644 --- a/src/controller/java/generated/java/matter/controller/cluster/clusters/ThermostatCluster.kt +++ b/src/controller/java/generated/java/matter/controller/cluster/clusters/ThermostatCluster.kt @@ -253,17 +253,6 @@ class ThermostatCluster(private val controller: MatterController, private val en object SubscriptionEstablished : SetpointHoldExpiryTimestampAttributeSubscriptionState() } - class QueuedPresetAttribute(val value: ThermostatClusterQueuedPresetStruct?) - - sealed class QueuedPresetAttributeSubscriptionState { - data class Success(val value: ThermostatClusterQueuedPresetStruct?) : - QueuedPresetAttributeSubscriptionState() - - data class Error(val exception: Exception) : QueuedPresetAttributeSubscriptionState() - - object SubscriptionEstablished : QueuedPresetAttributeSubscriptionState() - } - class GeneratedCommandListAttribute(val value: List) sealed class GeneratedCommandListAttributeSubscriptionState { @@ -511,7 +500,6 @@ class ThermostatCluster(private val controller: MatterController, private val en suspend fun setActivePresetRequest( presetHandle: ByteArray, - delayMinutes: UShort?, timedInvokeTimeout: Duration? = null, ) { val commandId: UInt = 6u @@ -521,9 +509,6 @@ class ThermostatCluster(private val controller: MatterController, private val en val TAG_PRESET_HANDLE_REQ: Int = 0 tlvWriter.put(ContextSpecificTag(TAG_PRESET_HANDLE_REQ), presetHandle) - - val TAG_DELAY_MINUTES_REQ: Int = 1 - delayMinutes?.let { tlvWriter.put(ContextSpecificTag(TAG_DELAY_MINUTES_REQ), delayMinutes) } tlvWriter.endStructure() val request: InvokeRequest = @@ -597,24 +582,6 @@ class ThermostatCluster(private val controller: MatterController, private val en logger.log(Level.FINE, "Invoke command succeeded: ${response}") } - suspend fun cancelSetActivePresetRequest(timedInvokeTimeout: Duration? = null) { - val commandId: UInt = 10u - - val tlvWriter = TlvWriter() - tlvWriter.startStructure(AnonymousTag) - tlvWriter.endStructure() - - val request: InvokeRequest = - InvokeRequest( - CommandPath(endpointId, clusterId = CLUSTER_ID, commandId), - tlvPayload = tlvWriter.getEncoded(), - timedRequest = timedInvokeTimeout, - ) - - val response: InvokeResponse = controller.invoke(request) - logger.log(Level.FINE, "Invoke command succeeded: ${response}") - } - suspend fun setTemperatureSetpointHoldPolicy( temperatureSetpointHoldPolicy: UByte, timedInvokeTimeout: Duration? = null, @@ -7790,107 +7757,6 @@ class ThermostatCluster(private val controller: MatterController, private val en } } - suspend fun readQueuedPresetAttribute(): QueuedPresetAttribute { - val ATTRIBUTE_ID: UInt = 85u - - val attributePath = - AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID) - - val readRequest = ReadRequest(eventPaths = emptyList(), attributePaths = listOf(attributePath)) - - val response = controller.read(readRequest) - - if (response.successes.isEmpty()) { - logger.log(Level.WARNING, "Read command failed") - throw IllegalStateException("Read command failed with failures: ${response.failures}") - } - - logger.log(Level.FINE, "Read command succeeded") - - val attributeData = - response.successes.filterIsInstance().firstOrNull { - it.path.attributeId == ATTRIBUTE_ID - } - - requireNotNull(attributeData) { "Queuedpreset attribute not found in response" } - - // Decode the TLV data into the appropriate type - val tlvReader = TlvReader(attributeData.data) - val decodedValue: ThermostatClusterQueuedPresetStruct? = - if (!tlvReader.isNull()) { - if (tlvReader.isNextTag(AnonymousTag)) { - ThermostatClusterQueuedPresetStruct.fromTlv(AnonymousTag, tlvReader) - } else { - null - } - } else { - tlvReader.getNull(AnonymousTag) - null - } - - return QueuedPresetAttribute(decodedValue) - } - - suspend fun subscribeQueuedPresetAttribute( - minInterval: Int, - maxInterval: Int, - ): Flow { - val ATTRIBUTE_ID: UInt = 85u - val attributePaths = - listOf( - AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID) - ) - - val subscribeRequest: SubscribeRequest = - SubscribeRequest( - eventPaths = emptyList(), - attributePaths = attributePaths, - minInterval = Duration.ofSeconds(minInterval.toLong()), - maxInterval = Duration.ofSeconds(maxInterval.toLong()), - ) - - return controller.subscribe(subscribeRequest).transform { subscriptionState -> - when (subscriptionState) { - is SubscriptionState.SubscriptionErrorNotification -> { - emit( - QueuedPresetAttributeSubscriptionState.Error( - Exception( - "Subscription terminated with error code: ${subscriptionState.terminationCause}" - ) - ) - ) - } - is SubscriptionState.NodeStateUpdate -> { - val attributeData = - subscriptionState.updateState.successes - .filterIsInstance() - .firstOrNull { it.path.attributeId == ATTRIBUTE_ID } - - requireNotNull(attributeData) { "Queuedpreset attribute not found in Node State update" } - - // Decode the TLV data into the appropriate type - val tlvReader = TlvReader(attributeData.data) - val decodedValue: ThermostatClusterQueuedPresetStruct? = - if (!tlvReader.isNull()) { - if (tlvReader.isNextTag(AnonymousTag)) { - ThermostatClusterQueuedPresetStruct.fromTlv(AnonymousTag, tlvReader) - } else { - null - } - } else { - tlvReader.getNull(AnonymousTag) - null - } - - decodedValue?.let { emit(QueuedPresetAttributeSubscriptionState.Success(it)) } - } - SubscriptionState.SubscriptionEstablished -> { - emit(QueuedPresetAttributeSubscriptionState.SubscriptionEstablished) - } - } - } - } - suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute { val ATTRIBUTE_ID: UInt = 65528u diff --git a/src/controller/java/generated/java/matter/controller/cluster/files.gni b/src/controller/java/generated/java/matter/controller/cluster/files.gni index ddb25414b6304d..856e286c2a2e7d 100644 --- a/src/controller/java/generated/java/matter/controller/cluster/files.gni +++ b/src/controller/java/generated/java/matter/controller/cluster/files.gni @@ -125,7 +125,6 @@ matter_structs_sources = [ "${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/TargetNavigatorClusterTargetInfoStruct.kt", "${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterPresetStruct.kt", "${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterPresetTypeStruct.kt", - "${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterQueuedPresetStruct.kt", "${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterScheduleStruct.kt", "${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterScheduleTransitionStruct.kt", "${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterScheduleTypeStruct.kt", diff --git a/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterQueuedPresetStruct.kt b/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterQueuedPresetStruct.kt deleted file mode 100644 index 4cb63aed9e7b39..00000000000000 --- a/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterQueuedPresetStruct.kt +++ /dev/null @@ -1,79 +0,0 @@ -/* - * - * Copyright (c) 2023 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package matter.controller.cluster.structs - -import matter.controller.cluster.* -import matter.tlv.ContextSpecificTag -import matter.tlv.Tag -import matter.tlv.TlvReader -import matter.tlv.TlvWriter - -class ThermostatClusterQueuedPresetStruct( - val presetHandle: ByteArray?, - val transitionTimestamp: UInt?, -) { - override fun toString(): String = buildString { - append("ThermostatClusterQueuedPresetStruct {\n") - append("\tpresetHandle : $presetHandle\n") - append("\ttransitionTimestamp : $transitionTimestamp\n") - append("}\n") - } - - fun toTlv(tlvTag: Tag, tlvWriter: TlvWriter) { - tlvWriter.apply { - startStructure(tlvTag) - if (presetHandle != null) { - put(ContextSpecificTag(TAG_PRESET_HANDLE), presetHandle) - } else { - putNull(ContextSpecificTag(TAG_PRESET_HANDLE)) - } - if (transitionTimestamp != null) { - put(ContextSpecificTag(TAG_TRANSITION_TIMESTAMP), transitionTimestamp) - } else { - putNull(ContextSpecificTag(TAG_TRANSITION_TIMESTAMP)) - } - endStructure() - } - } - - companion object { - private const val TAG_PRESET_HANDLE = 0 - private const val TAG_TRANSITION_TIMESTAMP = 1 - - fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): ThermostatClusterQueuedPresetStruct { - tlvReader.enterStructure(tlvTag) - val presetHandle = - if (!tlvReader.isNull()) { - tlvReader.getByteArray(ContextSpecificTag(TAG_PRESET_HANDLE)) - } else { - tlvReader.getNull(ContextSpecificTag(TAG_PRESET_HANDLE)) - null - } - val transitionTimestamp = - if (!tlvReader.isNull()) { - tlvReader.getUInt(ContextSpecificTag(TAG_TRANSITION_TIMESTAMP)) - } else { - tlvReader.getNull(ContextSpecificTag(TAG_TRANSITION_TIMESTAMP)) - null - } - - tlvReader.exitContainer() - - return ThermostatClusterQueuedPresetStruct(presetHandle, transitionTimestamp) - } - } -} diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp index cff767b424b59d..183a61a505c875 100644 --- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp @@ -12425,6 +12425,22 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR value); return value; } + case Attributes::MaximumCheckInBackOff::Id: { + using TypeInfo = Attributes::MaximumCheckInBackOff::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = app::DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) + { + return nullptr; + } + jobject value; + std::string valueClassName = "java/lang/Long"; + std::string valueCtorSignature = "(J)V"; + jlong jnivalue = static_cast(cppValue); + chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), + jnivalue, value); + return value; + } case Attributes::GeneratedCommandList::Id: { using TypeInfo = Attributes::GeneratedCommandList::TypeInfo; TypeInfo::DecodableType cppValue; @@ -31048,73 +31064,6 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR } return value; } - case Attributes::QueuedPreset::Id: { - using TypeInfo = Attributes::QueuedPreset::TypeInfo; - TypeInfo::DecodableType cppValue; - *aError = app::DataModel::Decode(aReader, cppValue); - if (*aError != CHIP_NO_ERROR) - { - return nullptr; - } - jobject value; - if (cppValue.IsNull()) - { - value = nullptr; - } - else - { - jobject value_presetHandle; - if (cppValue.Value().presetHandle.IsNull()) - { - value_presetHandle = nullptr; - } - else - { - jbyteArray value_presetHandleByteArray = - env->NewByteArray(static_cast(cppValue.Value().presetHandle.Value().size())); - env->SetByteArrayRegion(value_presetHandleByteArray, 0, - static_cast(cppValue.Value().presetHandle.Value().size()), - reinterpret_cast(cppValue.Value().presetHandle.Value().data())); - value_presetHandle = value_presetHandleByteArray; - } - jobject value_transitionTimestamp; - if (cppValue.Value().transitionTimestamp.IsNull()) - { - value_transitionTimestamp = nullptr; - } - else - { - std::string value_transitionTimestampClassName = "java/lang/Long"; - std::string value_transitionTimestampCtorSignature = "(J)V"; - jlong jnivalue_transitionTimestamp = static_cast(cppValue.Value().transitionTimestamp.Value()); - chip::JniReferences::GetInstance().CreateBoxedObject( - value_transitionTimestampClassName.c_str(), value_transitionTimestampCtorSignature.c_str(), - jnivalue_transitionTimestamp, value_transitionTimestamp); - } - - jclass queuedPresetStructStructClass_1; - err = chip::JniReferences::GetInstance().GetLocalClassRef( - env, "chip/devicecontroller/ChipStructs$ThermostatClusterQueuedPresetStruct", queuedPresetStructStructClass_1); - if (err != CHIP_NO_ERROR) - { - ChipLogError(Zcl, "Could not find class ChipStructs$ThermostatClusterQueuedPresetStruct"); - return nullptr; - } - - jmethodID queuedPresetStructStructCtor_1; - err = chip::JniReferences::GetInstance().FindMethod(env, queuedPresetStructStructClass_1, "", - "([BLjava/lang/Long;)V", &queuedPresetStructStructCtor_1); - if (err != CHIP_NO_ERROR || queuedPresetStructStructCtor_1 == nullptr) - { - ChipLogError(Zcl, "Could not find ChipStructs$ThermostatClusterQueuedPresetStruct constructor"); - return nullptr; - } - - value = env->NewObject(queuedPresetStructStructClass_1, queuedPresetStructStructCtor_1, value_presetHandle, - value_transitionTimestamp); - } - return value; - } case Attributes::GeneratedCommandList::Id: { using TypeInfo = Attributes::GeneratedCommandList::TypeInfo; TypeInfo::DecodableType cppValue; diff --git a/src/controller/python/ChipDeviceController-ScriptBinding.cpp b/src/controller/python/ChipDeviceController-ScriptBinding.cpp index a98c8082d45380..d4603efe05e469 100644 --- a/src/controller/python/ChipDeviceController-ScriptBinding.cpp +++ b/src/controller/python/ChipDeviceController-ScriptBinding.cpp @@ -584,6 +584,7 @@ struct IcdRegistrationParameters uint64_t checkInNodeId; uint64_t monitoredSubject; uint32_t stayActiveMsec; + uint8_t clientType; }; PyChipError pychip_DeviceController_SetIcdRegistrationParameters(bool enabled, const IcdRegistrationParameters * params) @@ -622,6 +623,7 @@ PyChipError pychip_DeviceController_SetIcdRegistrationParameters(bool enabled, c sCommissioningParameters.SetICDCheckInNodeId(params->checkInNodeId); sCommissioningParameters.SetICDMonitoredSubject(params->monitoredSubject); sCommissioningParameters.SetICDRegistrationStrategy(ICDRegistrationStrategy::kBeforeComplete); + sCommissioningParameters.SetICDClientType(static_cast(params->clientType)); return ToPyChipError(CHIP_NO_ERROR); } @@ -714,9 +716,14 @@ PyChipError pychip_DeviceController_OpenCommissioningWindow(chip::Controller::De SetupPayload payload; auto opener = Platform::New(static_cast(devCtrl)); - PyChipError err = ToPyChipError(opener->OpenCommissioningWindow(nodeid, System::Clock::Seconds16(timeout), iteration, - discriminator, NullOptional, NullOptional, - pairingDelegate->GetOpenWindowCallback(opener), payload)); + PyChipError err = + ToPyChipError(opener->OpenCommissioningWindow(Controller::CommissioningWindowPasscodeParams() + .SetNodeId(nodeid) + .SetTimeout(timeout) + .SetIteration(iteration) + .SetDiscriminator(discriminator) + .SetCallback(pairingDelegate->GetOpenWindowCallback(opener)), + payload)); return err; } diff --git a/src/controller/python/chip/ChipDeviceCtrl.py b/src/controller/python/chip/ChipDeviceCtrl.py index 4e1c5d6678ed3e..0e568803b1e523 100644 --- a/src/controller/python/chip/ChipDeviceCtrl.py +++ b/src/controller/python/chip/ChipDeviceCtrl.py @@ -107,13 +107,14 @@ class ICDRegistrationParameters: checkInNodeId: typing.Optional[int] monitoredSubject: typing.Optional[int] stayActiveMs: typing.Optional[int] + clientType: typing.Optional[Clusters.IcdManagement.Enums.ClientTypeEnum] class CStruct(Structure): _fields_ = [('symmetricKey', c_char_p), ('symmetricKeyLength', c_size_t), ('checkInNodeId', - c_uint64), ('monitoredSubject', c_uint64), ('stayActiveMsec', c_uint32)] + c_uint64), ('monitoredSubject', c_uint64), ('stayActiveMsec', c_uint32), ('clientType', c_uint8)] def to_c(self): - return ICDRegistrationParameters.CStruct(self.symmetricKey, len(self.symmetricKey), self.checkInNodeId, self.monitoredSubject, self.stayActiveMs) + return ICDRegistrationParameters.CStruct(self.symmetricKey, len(self.symmetricKey), self.checkInNodeId, self.monitoredSubject, self.stayActiveMs, self.clientType.value) @_DeviceAvailableCallbackFunct @@ -207,8 +208,7 @@ def OnCheckInCallback(nodeid): RegisterOnActiveCallback(scopedNodeId, OnCheckInCallback) try: - async with asyncio.timeout(timeoutSeconds): - await future + asyncio.wait_for(future, timeout=timeoutSeconds) finally: UnregisterOnActiveCallback(scopedNodeId, OnCheckInCallback) @@ -2018,7 +2018,8 @@ def GenerateICDRegistrationParameters(self): secrets.token_bytes(16), self._nodeId, self._nodeId, - 30) + 30, + Clusters.IcdManagement.Enums.ClientTypeEnum.kPermanent) def EnableICDRegistration(self, parameters: ICDRegistrationParameters): ''' Enables ICD registration for the following commissioning session. diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py index 3b77856a4121d2..1f3b1305b5f52f 100644 --- a/src/controller/python/chip/clusters/CHIPClusters.py +++ b/src/controller/python/chip/clusters/CHIPClusters.py @@ -4138,6 +4138,12 @@ class ChipClusters: "type": "int", "reportable": True, }, + 0x00000009: { + "attributeName": "MaximumCheckInBackOff", + "attributeId": 0x00000009, + "type": "int", + "reportable": True, + }, 0x0000FFF8: { "attributeName": "GeneratedCommandList", "attributeId": 0x0000FFF8, @@ -8813,7 +8819,6 @@ class ChipClusters: "commandName": "SetActivePresetRequest", "args": { "presetHandle": "bytes", - "delayMinutes": "int", }, }, 0x00000007: { @@ -8835,12 +8840,6 @@ class ChipClusters: "args": { }, }, - 0x0000000A: { - "commandId": 0x0000000A, - "commandName": "CancelSetActivePresetRequest", - "args": { - }, - }, 0x0000000B: { "commandId": 0x0000000B, "commandName": "SetTemperatureSetpointHoldPolicy", @@ -9251,12 +9250,6 @@ class ChipClusters: "type": "int", "reportable": True, }, - 0x00000055: { - "attributeName": "QueuedPreset", - "attributeId": 0x00000055, - "type": "", - "reportable": True, - }, 0x0000FFF8: { "attributeName": "GeneratedCommandList", "attributeId": 0x0000FFF8, diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 52e2be80aa74f5..bf94c7ea84ea08 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -14162,6 +14162,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="userActiveModeTriggerHint", Tag=0x00000006, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="userActiveModeTriggerInstruction", Tag=0x00000007, Type=typing.Optional[str]), ClusterObjectFieldDescriptor(Label="operatingMode", Tag=0x00000008, Type=typing.Optional[IcdManagement.Enums.OperatingModeEnum]), + ClusterObjectFieldDescriptor(Label="maximumCheckInBackOff", Tag=0x00000009, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="eventList", Tag=0x0000FFFA, Type=typing.List[uint]), @@ -14179,6 +14180,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: userActiveModeTriggerHint: 'typing.Optional[uint]' = None userActiveModeTriggerInstruction: 'typing.Optional[str]' = None operatingMode: 'typing.Optional[IcdManagement.Enums.OperatingModeEnum]' = None + maximumCheckInBackOff: 'typing.Optional[uint]' = None generatedCommandList: 'typing.List[uint]' = None acceptedCommandList: 'typing.List[uint]' = None eventList: 'typing.List[uint]' = None @@ -14210,6 +14212,7 @@ class Feature(IntFlag): kCheckInProtocolSupport = 0x1 kUserActiveModeTrigger = 0x2 kLongIdleTimeSupport = 0x4 + kDynamicSitLitSupport = 0x8 class UserActiveModeTriggerBitmap(IntFlag): kPowerCycle = 0x1 @@ -14484,6 +14487,22 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor: value: 'typing.Optional[IcdManagement.Enums.OperatingModeEnum]' = None + @dataclass + class MaximumCheckInBackOff(ClusterAttributeDescriptor): + @ChipUtility.classproperty + def cluster_id(cls) -> int: + return 0x00000046 + + @ChipUtility.classproperty + def attribute_id(cls) -> int: + return 0x00000009 + + @ChipUtility.classproperty + def attribute_type(cls) -> ClusterObjectFieldDescriptor: + return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) + + value: 'typing.Optional[uint]' = None + @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @ChipUtility.classproperty @@ -32028,7 +32047,6 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="presetsSchedulesEditable", Tag=0x00000052, Type=typing.Optional[bool]), ClusterObjectFieldDescriptor(Label="temperatureSetpointHoldPolicy", Tag=0x00000053, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="setpointHoldExpiryTimestamp", Tag=0x00000054, Type=typing.Union[None, Nullable, uint]), - ClusterObjectFieldDescriptor(Label="queuedPreset", Tag=0x00000055, Type=typing.Union[None, Nullable, Thermostat.Structs.QueuedPresetStruct]), ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="eventList", Tag=0x0000FFFA, Type=typing.List[uint]), @@ -32099,7 +32117,6 @@ def descriptor(cls) -> ClusterObjectDescriptor: presetsSchedulesEditable: 'typing.Optional[bool]' = None temperatureSetpointHoldPolicy: 'typing.Optional[uint]' = None setpointHoldExpiryTimestamp: 'typing.Union[None, Nullable, uint]' = None - queuedPreset: 'typing.Union[None, Nullable, Thermostat.Structs.QueuedPresetStruct]' = None generatedCommandList: 'typing.List[uint]' = None acceptedCommandList: 'typing.List[uint]' = None eventList: 'typing.List[uint]' = None @@ -32277,7 +32294,6 @@ class Feature(IntFlag): kMatterScheduleConfiguration = 0x80 kPresets = 0x100 kSetpoints = 0x200 - kQueuedPresetsSupported = 0x400 class HVACSystemTypeBitmap(IntFlag): kCoolingStage = 0x3 @@ -32411,19 +32427,6 @@ def descriptor(cls) -> ClusterObjectDescriptor: numberOfPresets: 'uint' = 0 presetTypeFeatures: 'uint' = 0 - @dataclass - class QueuedPresetStruct(ClusterObject): - @ChipUtility.classproperty - def descriptor(cls) -> ClusterObjectDescriptor: - return ClusterObjectDescriptor( - Fields=[ - ClusterObjectFieldDescriptor(Label="presetHandle", Tag=0, Type=typing.Union[Nullable, bytes]), - ClusterObjectFieldDescriptor(Label="transitionTimestamp", Tag=1, Type=typing.Union[Nullable, uint]), - ]) - - presetHandle: 'typing.Union[Nullable, bytes]' = NullValue - transitionTimestamp: 'typing.Union[Nullable, uint]' = NullValue - @dataclass class ScheduleTypeStruct(ClusterObject): @ChipUtility.classproperty @@ -32576,11 +32579,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: return ClusterObjectDescriptor( Fields=[ ClusterObjectFieldDescriptor(Label="presetHandle", Tag=0, Type=bytes), - ClusterObjectFieldDescriptor(Label="delayMinutes", Tag=1, Type=typing.Optional[uint]), ]) presetHandle: 'bytes' = b"" - delayMinutes: 'typing.Optional[uint]' = None @dataclass class StartPresetsSchedulesEditRequest(ClusterCommand): @@ -32624,19 +32625,6 @@ def descriptor(cls) -> ClusterObjectDescriptor: Fields=[ ]) - @dataclass - class CancelSetActivePresetRequest(ClusterCommand): - cluster_id: typing.ClassVar[int] = 0x00000201 - command_id: typing.ClassVar[int] = 0x0000000A - is_client: typing.ClassVar[bool] = True - response_type: typing.ClassVar[str] = None - - @ChipUtility.classproperty - def descriptor(cls) -> ClusterObjectDescriptor: - return ClusterObjectDescriptor( - Fields=[ - ]) - @dataclass class SetTemperatureSetpointHoldPolicy(ClusterCommand): cluster_id: typing.ClassVar[int] = 0x00000201 @@ -33646,22 +33634,6 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor: value: 'typing.Union[None, Nullable, uint]' = None - @dataclass - class QueuedPreset(ClusterAttributeDescriptor): - @ChipUtility.classproperty - def cluster_id(cls) -> int: - return 0x00000201 - - @ChipUtility.classproperty - def attribute_id(cls) -> int: - return 0x00000055 - - @ChipUtility.classproperty - def attribute_type(cls) -> ClusterObjectFieldDescriptor: - return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, Thermostat.Structs.QueuedPresetStruct]) - - value: 'typing.Union[None, Nullable, Thermostat.Structs.QueuedPresetStruct]' = None - @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @ChipUtility.classproperty diff --git a/src/controller/python/test/test_scripts/base.py b/src/controller/python/test/test_scripts/base.py index ca1e37a279b417..dc07e15bc2f709 100644 --- a/src/controller/python/test/test_scripts/base.py +++ b/src/controller/python/test/test_scripts/base.py @@ -184,7 +184,7 @@ def __init__(self, nodeid: int, paaTrustStorePath: str, testCommissioner: bool = keypair: p256keypair.P256Keypair = None): chip.native.Init() - self.chipStack = ChipStack('/tmp/repl_storage.json') + self.chipStack = ChipStack('/tmp/repl_storage.json', enableServerInteractions=True) self.certificateAuthorityManager = chip.CertificateAuthority.CertificateAuthorityManager(chipStack=self.chipStack) self.certificateAuthority = self.certificateAuthorityManager.NewCertificateAuthority() self.fabricAdmin = self.certificateAuthority.NewFabricAdmin(vendorId=0xFFF1, fabricId=1) @@ -1158,6 +1158,24 @@ def TestResolve(self, nodeid): self.logger.exception("Failed to resolve. {}".format(ex)) return False + async def TestTriggerTestEventHandler(self, nodeid, enable_key, event_trigger): + self.logger.info("Test trigger test event handler for device = %08x", nodeid) + try: + await self.devCtrl.SendCommand(nodeid, 0, Clusters.GeneralDiagnostics.Commands.TestEventTrigger(enableKey=enable_key, eventTrigger=event_trigger)) + return True + except Exception as ex: + self.logger.exception("Failed to trigger test event handler {}".format(ex)) + return False + + async def TestWaitForActive(self, nodeid): + self.logger.info("Test wait for device = %08x", nodeid) + try: + await self.devCtrl.WaitForActive(nodeid) + return True + except Exception as ex: + self.logger.exception("Failed to wait for active. {}".format(ex)) + return False + async def TestReadBasicAttributes(self, nodeid: int, endpoint: int): attrs = Clusters.BasicInformation.Attributes basic_cluster_attrs = { diff --git a/src/controller/python/test/test_scripts/icd_wait_for_device_test.py b/src/controller/python/test/test_scripts/icd_wait_for_device_test.py new file mode 100755 index 00000000000000..e28a76e17ac41e --- /dev/null +++ b/src/controller/python/test/test_scripts/icd_wait_for_device_test.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python3 + +# +# Copyright (c) 2021 Project CHIP Authors +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Commissioning test. + +import asyncio +import os +import sys +from optparse import OptionParser + +from base import BaseTestHelper, FailIfNot, TestFail, TestTimeout, logger + +TEST_DISCRIMINATOR = 3840 +TEST_DISCOVERY_TYPE = 2 + +ENDPOINT_ID = 0 +LIGHTING_ENDPOINT_ID = 1 +GROUP_ID = 0 + + +async def waitForActiveAndTriggerCheckIn(test, nodeid): + coro = test.TestWaitForActive(nodeid=nodeid) + await test.TestTriggerTestEventHandler(nodeid, bytes.fromhex("00112233445566778899aabbccddeeff"), 0x0046 << 48) + return await coro + + +async def main(): + optParser = OptionParser() + optParser.add_option( + "-t", + "--timeout", + action="store", + dest="testTimeout", + default=75, + type='int', + help="The program will return with timeout after specified seconds.", + metavar="", + ) + optParser.add_option( + "-a", + "--address", + action="store", + dest="deviceAddress", + default='', + type='str', + help="Address of the device", + metavar="", + ) + optParser.add_option( + "--setup-payload", + action="store", + dest="setupPayload", + default='', + type='str', + help="Setup Payload (manual pairing code or QR code content)", + metavar="" + ) + optParser.add_option( + "--nodeid", + action="store", + dest="nodeid", + default=1, + type=int, + help="The Node ID issued to the device", + metavar="" + ) + optParser.add_option( + "--discriminator", + action="store", + dest="discriminator", + default=TEST_DISCRIMINATOR, + type=int, + help="Discriminator of the device", + metavar="" + ) + optParser.add_option( + "-p", + "--paa-trust-store-path", + action="store", + dest="paaTrustStorePath", + default='', + type='str', + help="Path that contains valid and trusted PAA Root Certificates.", + metavar="" + ) + optParser.add_option( + "--discovery-type", + action="store", + dest="discoveryType", + default=TEST_DISCOVERY_TYPE, + type=int, + help="Discovery type of commissioning. (0: networkOnly 1: networkOnlyWithoutPASEAutoRetry 2: All)", + metavar="" + ) + + (options, remainingArgs) = optParser.parse_args(sys.argv[1:]) + + timeoutTicker = TestTimeout(options.testTimeout) + timeoutTicker.start() + + test = BaseTestHelper( + nodeid=112233, paaTrustStorePath=options.paaTrustStorePath, testCommissioner=True) + + devCtrl = test.devCtrl + devCtrl.EnableICDRegistration(devCtrl.GenerateICDRegistrationParameters()) + logger.info("Testing commissioning") + FailIfNot(await test.TestCommissioning(ip=options.deviceAddress, + setuppin=20202021, + nodeid=options.nodeid), + "Failed to finish key exchange") + logger.info("Commissioning completed") + logger.info("Testing wait for active") + FailIfNot(await waitForActiveAndTriggerCheckIn(test, nodeid=options.nodeid), "Failed to test wait for active") + logger.info('Successfully handled wait-for-active') + + timeoutTicker.stop() + + logger.info("Test finished") + + # TODO: Python device controller cannot be shutdown clean sometimes and will block on AsyncDNSResolverSockets shutdown. + # Call os._exit(0) to force close it. + os._exit(0) + + +if __name__ == "__main__": + try: + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) + loop.close() + except Exception as ex: + logger.exception(ex) + TestFail("Exception occurred when running tests.") diff --git a/src/controller/tests/BUILD.gn b/src/controller/tests/BUILD.gn index 7b3dff0e27d441..a1d7b9433075b7 100644 --- a/src/controller/tests/BUILD.gn +++ b/src/controller/tests/BUILD.gn @@ -31,6 +31,7 @@ chip_test_suite("tests") { test_sources += [ "TestReadChunking.cpp" ] test_sources += [ "TestWriteChunking.cpp" ] test_sources += [ "TestEventNumberCaching.cpp" ] + test_sources += [ "TestCommissioningWindowOpener.cpp" ] } cflags = [ "-Wconversion" ] diff --git a/src/controller/tests/TestCommissioningWindowOpener.cpp b/src/controller/tests/TestCommissioningWindowOpener.cpp new file mode 100644 index 00000000000000..01aa42fbe8b17a --- /dev/null +++ b/src/controller/tests/TestCommissioningWindowOpener.cpp @@ -0,0 +1,192 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include +#include +#include +#include + +using namespace chip; + +namespace { + +class MockDeviceController : public Controller::DeviceController +{ +public: + CHIP_ERROR + GetConnectedDevice(NodeId peerNodeId, Callback::Callback * onConnection, + Callback::Callback * onFailure, + TransportPayloadCapability transportPayloadCapability = TransportPayloadCapability::kMRPPayload) override + { + return CHIP_NO_ERROR; + } +}; + +// Valid crypto values from src/protocols/secure_channel/tests/TestPASESession.cpp +constexpr uint32_t sTestSpake2p01_PinCode = 20202021; +constexpr uint32_t sTestSpake2p01_IterationCount = 1000; +constexpr uint8_t sTestSpake2p01_Salt[] = { 0x53, 0x50, 0x41, 0x4B, 0x45, 0x32, 0x50, 0x20, + 0x4B, 0x65, 0x79, 0x20, 0x53, 0x61, 0x6C, 0x74 }; +constexpr Crypto::Spake2pVerifierSerialized sTestSpake2p01_SerializedVerifier = { + 0xB9, 0x61, 0x70, 0xAA, 0xE8, 0x03, 0x34, 0x68, 0x84, 0x72, 0x4F, 0xE9, 0xA3, 0xB2, 0x87, 0xC3, 0x03, 0x30, 0xC2, 0xA6, + 0x60, 0x37, 0x5D, 0x17, 0xBB, 0x20, 0x5A, 0x8C, 0xF1, 0xAE, 0xCB, 0x35, 0x04, 0x57, 0xF8, 0xAB, 0x79, 0xEE, 0x25, 0x3A, + 0xB6, 0xA8, 0xE4, 0x6B, 0xB0, 0x9E, 0x54, 0x3A, 0xE4, 0x22, 0x73, 0x6D, 0xE5, 0x01, 0xE3, 0xDB, 0x37, 0xD4, 0x41, 0xFE, + 0x34, 0x49, 0x20, 0xD0, 0x95, 0x48, 0xE4, 0xC1, 0x82, 0x40, 0x63, 0x0C, 0x4F, 0xF4, 0x91, 0x3C, 0x53, 0x51, 0x38, 0x39, + 0xB7, 0xC0, 0x7F, 0xCC, 0x06, 0x27, 0xA1, 0xB8, 0x57, 0x3A, 0x14, 0x9F, 0xCD, 0x1F, 0xA4, 0x66, 0xCF +}; + +static void OCWPasscodeCallback(void * context, NodeId deviceId, CHIP_ERROR status, SetupPayload payload) {} +static void OCWVerifierCallback(void * context, NodeId deviceId, CHIP_ERROR status) {} + +class TestCommissioningWindowOpener : public ::testing::Test +{ +public: + static void SetUpTestSuite() { ASSERT_EQ(Platform::MemoryInit(), CHIP_NO_ERROR); } + static void TearDownTestSuite() { Platform::MemoryShutdown(); } + +protected: + // Initialize with a null pointer for now, replace with a valid controller pointer if available + MockDeviceController mockController; + Controller::CommissioningWindowOpener opener = Controller::CommissioningWindowOpener(&mockController); +}; + +TEST_F(TestCommissioningWindowOpener, OpenCommissioningWindowVerifier_Success) +{ + Callback::Callback callback(OCWVerifierCallback, this); + + CHIP_ERROR err = opener.OpenCommissioningWindow(Controller::CommissioningWindowVerifierParams() + .SetNodeId(0x1234) + .SetTimeout(300) + .SetIteration(sTestSpake2p01_IterationCount) + .SetDiscriminator(3840) + .SetSalt(ByteSpan(sTestSpake2p01_Salt)) + .SetVerifier(ByteSpan(sTestSpake2p01_SerializedVerifier)) + .SetCallback(&callback)); + EXPECT_EQ(err, CHIP_NO_ERROR); +} + +TEST_F(TestCommissioningWindowOpener, OpenCommissioningWindowVerifier_Failure_InvalidSalt) +{ + Callback::Callback callback(OCWVerifierCallback, this); + + CHIP_ERROR err = opener.OpenCommissioningWindow(Controller::CommissioningWindowVerifierParams() + .SetNodeId(0x1234) + .SetTimeout(300) + .SetIteration(sTestSpake2p01_IterationCount) + .SetDiscriminator(3840) + .SetSalt(ByteSpan()) + .SetVerifier(ByteSpan(sTestSpake2p01_SerializedVerifier)) + .SetCallback(&callback)); + EXPECT_EQ(err, CHIP_ERROR_INVALID_ARGUMENT); +} + +TEST_F(TestCommissioningWindowOpener, OpenCommissioningWindowVerifier_Failure_InvalidVerifier) +{ + Callback::Callback callback(OCWVerifierCallback, this); + + CHIP_ERROR err = opener.OpenCommissioningWindow(Controller::CommissioningWindowVerifierParams() + .SetNodeId(0x1234) + .SetTimeout(300) + .SetIteration(sTestSpake2p01_IterationCount) + .SetDiscriminator(3840) + .SetSalt(ByteSpan(sTestSpake2p01_Salt)) + .SetVerifier(ByteSpan()) + .SetCallback(&callback)); + EXPECT_EQ(err, CHIP_ERROR_INVALID_ARGUMENT); +} + +TEST_F(TestCommissioningWindowOpener, OpenCommissioningWindowVerifier_Failure_InvalidIteration) +{ + Callback::Callback callback(OCWVerifierCallback, this); + + CHIP_ERROR err = opener.OpenCommissioningWindow(Controller::CommissioningWindowVerifierParams() + .SetNodeId(0x1234) + .SetTimeout(300) + .SetIteration(0) + .SetDiscriminator(3840) + .SetSalt(ByteSpan(sTestSpake2p01_Salt)) + .SetVerifier(ByteSpan(sTestSpake2p01_SerializedVerifier)) + .SetCallback(&callback)); + EXPECT_EQ(err, CHIP_ERROR_INVALID_ARGUMENT); +} + +TEST_F(TestCommissioningWindowOpener, OpenCommissioningWindowPasscode_Success) +{ + SetupPayload ignored; + Callback::Callback callback(OCWPasscodeCallback, this); + CHIP_ERROR err = opener.OpenCommissioningWindow(Controller::CommissioningWindowPasscodeParams() + .SetNodeId(0x1234) + .SetTimeout(300) + .SetIteration(sTestSpake2p01_IterationCount) + .SetDiscriminator(3840) + .SetSetupPIN(sTestSpake2p01_PinCode) + .SetReadVIDPIDAttributes(true) + .SetSalt(ByteSpan(sTestSpake2p01_Salt)) + .SetCallback(&callback), + ignored); + EXPECT_EQ(err, CHIP_NO_ERROR); +} + +TEST_F(TestCommissioningWindowOpener, OpenCommissioningWindowPasscode_Success_NoPin) +{ + SetupPayload ignored; + Callback::Callback callback(OCWPasscodeCallback, this); + CHIP_ERROR err = opener.OpenCommissioningWindow(Controller::CommissioningWindowPasscodeParams() + .SetNodeId(0x1234) + .SetTimeout(300) + .SetIteration(sTestSpake2p01_IterationCount) + .SetDiscriminator(3840) + .SetSalt(ByteSpan(sTestSpake2p01_Salt)) + .SetCallback(&callback), + ignored); + EXPECT_EQ(err, CHIP_NO_ERROR); +} + +TEST_F(TestCommissioningWindowOpener, OpenCommissioningWindowPasscode_Success_NoSalt) +{ + SetupPayload ignored; + Callback::Callback callback(OCWPasscodeCallback, this); + CHIP_ERROR err = opener.OpenCommissioningWindow(Controller::CommissioningWindowPasscodeParams() + .SetNodeId(0x1234) + .SetTimeout(300) + .SetIteration(sTestSpake2p01_IterationCount) + .SetDiscriminator(3840) + .SetSetupPIN(sTestSpake2p01_PinCode) + .SetCallback(&callback), + ignored); + EXPECT_EQ(err, CHIP_NO_ERROR); +} + +TEST_F(TestCommissioningWindowOpener, OpenCommissioningWindowPasscode_Failure_InvalidIteration) +{ + SetupPayload ignored; + Callback::Callback callback(OCWPasscodeCallback, this); + CHIP_ERROR err = opener.OpenCommissioningWindow(Controller::CommissioningWindowPasscodeParams() + .SetNodeId(0x1234) + .SetTimeout(300) + .SetIteration(0) + .SetDiscriminator(3840) + .SetCallback(&callback), + ignored); + EXPECT_EQ(err, CHIP_ERROR_INVALID_ARGUMENT); +} + +// Add more test cases as needed to cover different scenarios +} // namespace diff --git a/src/controller/tests/TestServerCommandDispatch.cpp b/src/controller/tests/TestServerCommandDispatch.cpp index 8c895008dfd67e..960d849fc660ad 100644 --- a/src/controller/tests/TestServerCommandDispatch.cpp +++ b/src/controller/tests/TestServerCommandDispatch.cpp @@ -24,11 +24,11 @@ #include -#include "app-common/zap-generated/ids/Attributes.h" -#include "app-common/zap-generated/ids/Clusters.h" -#include "protocols/interaction_model/Constants.h" #include +#include +#include #include +#include #include #include #include @@ -37,6 +37,7 @@ #include #include #include +#include using namespace chip; using namespace chip::app; @@ -61,10 +62,10 @@ class TestClusterCommandHandler : public chip::app::CommandHandlerInterface public: TestClusterCommandHandler() : chip::app::CommandHandlerInterface(Optional::Missing(), Clusters::UnitTesting::Id) { - chip::app::InteractionModelEngine::GetInstance()->RegisterCommandHandler(this); + CommandHandlerInterfaceRegistry::RegisterCommandHandler(this); } - ~TestClusterCommandHandler() { chip::app::InteractionModelEngine::GetInstance()->UnregisterCommandHandler(this); } + ~TestClusterCommandHandler() { CommandHandlerInterfaceRegistry::UnregisterCommandHandler(this); } void OverrideAcceptedCommands() { mOverrideAcceptedCommands = true; } void ClaimNoCommands() { mClaimNoCommands = true; } diff --git a/src/controller/tests/data_model/BUILD.gn b/src/controller/tests/data_model/BUILD.gn index 9439bd33b83458..692696d3be2548 100644 --- a/src/controller/tests/data_model/BUILD.gn +++ b/src/controller/tests/data_model/BUILD.gn @@ -17,6 +17,7 @@ import("//build_overrides/chip.gni") import("//build_overrides/pigweed.gni") import("${chip_root}/build/chip/chip_test_suite.gni") +import("${chip_root}/src/app/common_flags.gni") import("${chip_root}/src/platform/device.gni") chip_test_suite("data_model") { @@ -40,6 +41,7 @@ chip_test_suite("data_model") { public_deps = [ "${chip_root}/src/app", "${chip_root}/src/app/common:cluster-objects", + "${chip_root}/src/app/data-model-interface", "${chip_root}/src/app/tests:helpers", "${chip_root}/src/app/util/mock:mock_codegen_data_model", "${chip_root}/src/app/util/mock:mock_ember", diff --git a/src/controller/tests/data_model/DataModelFixtures.cpp b/src/controller/tests/data_model/DataModelFixtures.cpp index 2e5d7e65f7ee42..eb043acd04353d 100644 --- a/src/controller/tests/data_model/DataModelFixtures.cpp +++ b/src/controller/tests/data_model/DataModelFixtures.cpp @@ -21,11 +21,14 @@ #include #include #include +#include #include +#include using namespace chip; using namespace chip::app; using namespace chip::app::DataModelTests; +using namespace chip::app::InteractionModel; using namespace chip::app::Clusters; using namespace chip::app::Clusters::UnitTesting; using namespace chip::Protocols; @@ -33,6 +36,19 @@ using namespace chip::Protocols; namespace chip { namespace app { +class TestOnlyAttributeValueEncoderAccessor +{ +public: + TestOnlyAttributeValueEncoderAccessor(AttributeValueEncoder & encoder) : mEncoder(encoder) {} + + AttributeReportIBs::Builder & Builder() { return mEncoder.mAttributeReportIBsBuilder; } + + void SetState(const AttributeEncodeState & state) { mEncoder.mEncodeState = state; } + +private: + AttributeValueEncoder & mEncoder; +}; + namespace DataModelTests { ScopedChangeOnly gReadResponseDirective(ReadResponseDirective::kSendDataResponse); @@ -41,6 +57,11 @@ ScopedChangeOnly gCommandResponseDirective(CommandResp ScopedChangeOnly gIsLitIcd(false); +// TODO: usage of a global value that changes as a READ sideffect is problematic for +// dual-read use cases (i.e. during checked ember/datamodel tests) +// +// For now see the hack "change undo" in CustomDataModel::ReadAttribute, however +// overall this is problematic. uint16_t gInt16uTotalReadCount = 0; CommandHandler::Handle gAsyncCommandHandle; @@ -464,5 +485,114 @@ Protocols::InteractionModel::Status ServerClusterCommandExists(const ConcreteCom return Status::Success; } +CustomDataModel & CustomDataModel::Instance() +{ + static CustomDataModel model; + return model; +} + +CHIP_ERROR CustomDataModel::ReadAttribute(const ReadAttributeRequest & request, AttributeValueEncoder & encoder) +{ + AttributeEncodeState mutableState(&encoder.GetState()); // provide a state copy to start. + +#if CHIP_CONFIG_USE_EMBER_DATA_MODEL && CHIP_CONFIG_USE_DATA_MODEL_INTERFACE + if ((request.path.mEndpointId < chip::Test::kMockEndpointMin) && + (gReadResponseDirective == ReadResponseDirective::kSendDataResponse) && + (request.path.mClusterId == app::Clusters::UnitTesting::Id) && + (request.path.mAttributeId == app::Clusters::UnitTesting::Attributes::Int16u::Id)) + { + // gInt16uTotalReadCount is a global that keeps changing. Further more, encoding + // size differs when moving from 0xFF to 0x100, so encoding sizes in TLV differ. + // + // This is a HACKISH workaround as it relies that we ember-read before datamodel-read + gInt16uTotalReadCount--; + } +#endif // CHIP_CONFIG_USE_EMBER_DATA_MODEL && CHIP_CONFIG_USE_DATA_MODEL_INTERFACE + + CHIP_ERROR err = ReadSingleClusterData(request.subjectDescriptor.value_or(Access::SubjectDescriptor()), + request.readFlags.Has(ReadFlags::kFabricFiltered), request.path, + TestOnlyAttributeValueEncoderAccessor(encoder).Builder(), &mutableState); + + // state must survive CHIP_ERRORs as it is used for chunking + TestOnlyAttributeValueEncoderAccessor(encoder).SetState(mutableState); + + return err; +} + +CHIP_ERROR CustomDataModel::WriteAttribute(const WriteAttributeRequest & request, AttributeValueDecoder & decoder) +{ + return CHIP_ERROR_NOT_IMPLEMENTED; +} + +CHIP_ERROR CustomDataModel::Invoke(const InvokeRequest & request, chip::TLV::TLVReader & input_arguments, CommandHandler * handler) +{ + return CHIP_ERROR_NOT_IMPLEMENTED; +} + +EndpointId CustomDataModel::FirstEndpoint() +{ + return CodegenDataModelInstance()->FirstEndpoint(); +} + +EndpointId CustomDataModel::NextEndpoint(EndpointId before) +{ + return CodegenDataModelInstance()->NextEndpoint(before); +} + +ClusterEntry CustomDataModel::FirstCluster(EndpointId endpoint) +{ + return CodegenDataModelInstance()->FirstCluster(endpoint); +} + +ClusterEntry CustomDataModel::NextCluster(const ConcreteClusterPath & before) +{ + return CodegenDataModelInstance()->NextCluster(before); +} + +std::optional CustomDataModel::GetClusterInfo(const ConcreteClusterPath & path) +{ + return CodegenDataModelInstance()->GetClusterInfo(path); +} + +AttributeEntry CustomDataModel::FirstAttribute(const ConcreteClusterPath & cluster) +{ + return CodegenDataModelInstance()->FirstAttribute(cluster); +} + +AttributeEntry CustomDataModel::NextAttribute(const ConcreteAttributePath & before) +{ + return CodegenDataModelInstance()->NextAttribute(before); +} + +std::optional CustomDataModel::GetAttributeInfo(const ConcreteAttributePath & path) +{ + return CodegenDataModelInstance()->GetAttributeInfo(path); +} + +CommandEntry CustomDataModel::FirstAcceptedCommand(const ConcreteClusterPath & cluster) +{ + return CodegenDataModelInstance()->FirstAcceptedCommand(cluster); +} + +CommandEntry CustomDataModel::NextAcceptedCommand(const ConcreteCommandPath & before) +{ + return CodegenDataModelInstance()->NextAcceptedCommand(before); +} + +std::optional CustomDataModel::GetAcceptedCommandInfo(const ConcreteCommandPath & path) +{ + return CodegenDataModelInstance()->GetAcceptedCommandInfo(path); +} + +ConcreteCommandPath CustomDataModel::FirstGeneratedCommand(const ConcreteClusterPath & cluster) +{ + return CodegenDataModelInstance()->FirstGeneratedCommand(cluster); +} + +ConcreteCommandPath CustomDataModel::NextGeneratedCommand(const ConcreteCommandPath & before) +{ + return CodegenDataModelInstance()->NextGeneratedCommand(before); +} + } // namespace app } // namespace chip diff --git a/src/controller/tests/data_model/DataModelFixtures.h b/src/controller/tests/data_model/DataModelFixtures.h index dfdc60e5b59b06..405b4ff4d4e7d8 100644 --- a/src/controller/tests/data_model/DataModelFixtures.h +++ b/src/controller/tests/data_model/DataModelFixtures.h @@ -22,6 +22,7 @@ #pragma once #include +#include #include #include #include @@ -97,6 +98,43 @@ extern ScopedChangeOnly gCommandResponseDirective; // Populated with the command handle when gCommandResponseDirective == kAsync extern CommandHandler::Handle gAsyncCommandHandle; +/// A customized class for read/write/invoke that matches functionality +/// with the ember-compatibility-functions functionality here. +/// +/// TODO: these functions currently redirect to ember functions, so could +/// be merged with test-interaction-model-api.h/cpp as well. This is not done since +/// if we remove the direct ember dependency from IM, we can implement +/// distinct functional classes. +/// TODO items for above: +/// - once IM only supports DataModel +/// - break ember-overrides in this h/cpp file +class CustomDataModel : public InteractionModel::DataModel +{ +public: + static CustomDataModel & Instance(); + + CHIP_ERROR Shutdown() override { return CHIP_NO_ERROR; } + + CHIP_ERROR ReadAttribute(const InteractionModel::ReadAttributeRequest & request, AttributeValueEncoder & encoder) override; + CHIP_ERROR WriteAttribute(const InteractionModel::WriteAttributeRequest & request, AttributeValueDecoder & decoder) override; + CHIP_ERROR Invoke(const InteractionModel::InvokeRequest & request, chip::TLV::TLVReader & input_arguments, + CommandHandler * handler) override; + + EndpointId FirstEndpoint() override; + EndpointId NextEndpoint(EndpointId before) override; + InteractionModel::ClusterEntry FirstCluster(EndpointId endpoint) override; + InteractionModel::ClusterEntry NextCluster(const ConcreteClusterPath & before) override; + std::optional GetClusterInfo(const ConcreteClusterPath & path) override; + InteractionModel::AttributeEntry FirstAttribute(const ConcreteClusterPath & cluster) override; + InteractionModel::AttributeEntry NextAttribute(const ConcreteAttributePath & before) override; + std::optional GetAttributeInfo(const ConcreteAttributePath & path) override; + InteractionModel::CommandEntry FirstAcceptedCommand(const ConcreteClusterPath & cluster) override; + InteractionModel::CommandEntry NextAcceptedCommand(const ConcreteCommandPath & before) override; + std::optional GetAcceptedCommandInfo(const ConcreteCommandPath & path) override; + ConcreteCommandPath FirstGeneratedCommand(const ConcreteClusterPath & cluster) override; + ConcreteCommandPath NextGeneratedCommand(const ConcreteCommandPath & before) override; +}; + } // namespace DataModelTests } // namespace app } // namespace chip diff --git a/src/controller/tests/data_model/TestRead.cpp b/src/controller/tests/data_model/TestRead.cpp index 9df501c45e7d78..1281d9190c56bc 100644 --- a/src/controller/tests/data_model/TestRead.cpp +++ b/src/controller/tests/data_model/TestRead.cpp @@ -52,7 +52,21 @@ class TestRead : public chip::Test::AppContext, public app::ReadHandler::Applica protected: static uint16_t mMaxInterval; - CHIP_ERROR OnSubscriptionRequested(app::ReadHandler & aReadHandler, Transport::SecureSession & aSecureSession) + // Performs setup for each individual test in the test suite + void SetUp() override + { + chip::Test::AppContext::SetUp(); + mOldModel = InteractionModelEngine::GetInstance()->SetDataModel(&CustomDataModel::Instance()); + } + + // Performs teardown for each individual test in the test suite + void TearDown() override + { + InteractionModelEngine::GetInstance()->SetDataModel(mOldModel); + chip::Test::AppContext::TearDown(); + } + + CHIP_ERROR OnSubscriptionRequested(app::ReadHandler & aReadHandler, Transport::SecureSession & aSecureSession) override { VerifyOrReturnError(!mEmitSubscriptionError, CHIP_ERROR_INVALID_ARGUMENT); @@ -63,9 +77,9 @@ class TestRead : public chip::Test::AppContext, public app::ReadHandler::Applica return CHIP_NO_ERROR; } - void OnSubscriptionEstablished(app::ReadHandler & aReadHandler) { mNumActiveSubscriptions++; } + void OnSubscriptionEstablished(app::ReadHandler & aReadHandler) override { mNumActiveSubscriptions++; } - void OnSubscriptionTerminated(app::ReadHandler & aReadHandler) { mNumActiveSubscriptions--; } + void OnSubscriptionTerminated(app::ReadHandler & aReadHandler) override { mNumActiveSubscriptions--; } // Issue the given number of reads in parallel and wait for them all to // succeed. @@ -83,9 +97,10 @@ class TestRead : public chip::Test::AppContext, public app::ReadHandler::Applica // max-interval to time out. static System::Clock::Timeout ComputeSubscriptionTimeout(System::Clock::Seconds16 aMaxInterval); - bool mEmitSubscriptionError = false; - int32_t mNumActiveSubscriptions = 0; - bool mAlterSubscriptionIntervals = false; + bool mEmitSubscriptionError = false; + int32_t mNumActiveSubscriptions = 0; + bool mAlterSubscriptionIntervals = false; + chip::app::InteractionModel::DataModel * mOldModel = nullptr; }; uint16_t TestRead::mMaxInterval = 66; diff --git a/src/darwin/Framework/CHIP/MTRDevice.mm b/src/darwin/Framework/CHIP/MTRDevice.mm index 93f96398b51c2f..1c68d788943ce2 100644 --- a/src/darwin/Framework/CHIP/MTRDevice.mm +++ b/src/darwin/Framework/CHIP/MTRDevice.mm @@ -908,12 +908,17 @@ - (void)invalidate _reattemptingSubscription = NO; [_deviceController asyncDispatchToMatterQueue:^{ + MTR_LOG("%@ invalidate disconnecting ReadClient and SubscriptionCallback", self); + // Destroy the read client and callback (has to happen on the Matter // queue, to avoid deleting objects that are being referenced), to // tear down the subscription. We will get no more callbacks from - // the subscrption after this point. + // the subscription after this point. std::lock_guard lock(self->_lock); self->_currentReadClient = nullptr; + if (self->_currentSubscriptionCallback) { + delete self->_currentSubscriptionCallback; + } self->_currentSubscriptionCallback = nullptr; [self _changeInternalState:MTRInternalDeviceStateUnsubscribed]; @@ -940,6 +945,7 @@ - (void)nodeMayBeAdvertisingOperational // whether it might be. - (void)_triggerResubscribeWithReason:(NSString *)reason nodeLikelyReachable:(BOOL)nodeLikelyReachable { + MTR_LOG("%@ _triggerResubscribeWithReason called with reason %@", self, reason); assertChipStackLockedByCurrentThread(); // We might want to trigger a resubscribe on our existing ReadClient. Do @@ -1235,6 +1241,12 @@ - (void)_handleSubscriptionEstablished - (void)_handleSubscriptionError:(NSError *)error { std::lock_guard lock(_lock); + [self _doHandleSubscriptionError:error]; +} + +- (void)_doHandleSubscriptionError:(NSError *)error +{ + os_unfair_lock_assert_owner(&_lock); [self _changeInternalState:MTRInternalDeviceStateUnsubscribed]; _unreportedEvents = nil; @@ -1400,6 +1412,12 @@ - (void)_handleResubscriptionNeededWithDelay:(NSNumber *)resubscriptionDelayMs - (void)_handleSubscriptionReset:(NSNumber * _Nullable)retryDelay { std::lock_guard lock(_lock); + [self _doHandleSubscriptionReset:retryDelay]; +} + +- (void)_doHandleSubscriptionReset:(NSNumber * _Nullable)retryDelay +{ + os_unfair_lock_assert_owner(&_lock); // If we are here, then either we failed to establish initial CASE, or we // failed to send the initial SubscribeRequest message, or our ReadClient @@ -1471,7 +1489,7 @@ - (void)_reattemptSubscriptionNowIfNeededWithReason:(NSString *)reason return; } - MTR_LOG("%@ reattempting subscription", self); + MTR_LOG("%@ reattempting subscription with reason %@", self, reason); self.reattemptingSubscription = NO; [self _setupSubscriptionWithReason:reason]; } @@ -2100,6 +2118,22 @@ - (void)unitTestClearClusterData } #endif +- (void)_reconcilePersistedClustersWithStorage +{ + os_unfair_lock_assert_owner(&self->_lock); + + NSMutableSet * clusterPathsToRemove = [NSMutableSet set]; + for (MTRClusterPath * clusterPath in _persistedClusters) { + MTRDeviceClusterData * data = [_deviceController.controllerDataStore getStoredClusterDataForNodeID:_nodeID endpointID:clusterPath.endpoint clusterID:clusterPath.cluster]; + if (!data) { + [clusterPathsToRemove addObject:clusterPath]; + } + } + + MTR_LOG_ERROR("%@ Storage missing %lu / %lu clusters - reconciling in-memory records", self, static_cast(clusterPathsToRemove.count), static_cast(_persistedClusters.count)); + [_persistedClusters minusSet:clusterPathsToRemove]; +} + - (nullable MTRDeviceClusterData *)_clusterDataForPath:(MTRClusterPath *)clusterPath { os_unfair_lock_assert_owner(&self->_lock); @@ -2132,8 +2166,16 @@ - (nullable MTRDeviceClusterData *)_clusterDataForPath:(MTRClusterPath *)cluster // Page in the stored value for the data. MTRDeviceClusterData * data = [_deviceController.controllerDataStore getStoredClusterDataForNodeID:_nodeID endpointID:clusterPath.endpoint clusterID:clusterPath.cluster]; + MTR_LOG("%@ cluster path %@ cache miss - load from storage success %@", self, clusterPath, YES_NO(data)); if (data != nil) { [_persistedClusterData setObject:data forKey:clusterPath]; + } else { + // If clusterPath is in _persistedClusters and the data store returns nil for it, then the in-memory cache is now not dependable, and subscription should be reset and reestablished to reload cache from device + + // First make sure _persistedClusters is consistent with storage, so repeated calls don't immediately re-trigger this + [self _reconcilePersistedClustersWithStorage]; + + [self _resetSubscriptionWithReasonString:[NSString stringWithFormat:@"Data store has no data for cluster %@", clusterPath]]; } return data; @@ -2303,13 +2345,43 @@ - (void)_stopConnectivityMonitoring } } +- (void)_resetSubscriptionWithReasonString:(NSString *)reasonString +{ + os_unfair_lock_assert_owner(&self->_lock); + MTR_LOG_ERROR("%@ %@ - resetting subscription", self, reasonString); + + [_deviceController asyncDispatchToMatterQueue:^{ + MTR_LOG("%@ subscription reset disconnecting ReadClient and SubscriptionCallback", self); + + std::lock_guard lock(self->_lock); + self->_currentReadClient = nullptr; + if (self->_currentSubscriptionCallback) { + delete self->_currentSubscriptionCallback; + } + self->_currentSubscriptionCallback = nullptr; + + [self _doHandleSubscriptionError:nil]; + // Use nil reset delay so that this keeps existing backoff timing + [self _doHandleSubscriptionReset:nil]; + } + errorHandler:nil]; +} + +#ifdef DEBUG +- (void)unitTestResetSubscription +{ + std::lock_guard lock(self->_lock); + [self _resetSubscriptionWithReasonString:@"Unit test reset subscription"]; +} +#endif + // assume lock is held - (void)_setupSubscriptionWithReason:(NSString *)reason { os_unfair_lock_assert_owner(&self->_lock); if (![self _subscriptionsAllowed]) { - MTR_LOG("%@ _setupSubscription: Subscriptions not allowed. Do not set up subscription", self); + MTR_LOG("%@ _setupSubscription: Subscriptions not allowed. Do not set up subscription (reason: %@)", self, reason); return; } @@ -2328,6 +2400,7 @@ - (void)_setupSubscriptionWithReason:(NSString *)reason // for now just subscribe once if (!NeedToStartSubscriptionSetup(_internalDeviceState)) { + MTR_LOG("%@ setupSubscription: no need to subscribe due to internal state %lu (reason: %@)", self, static_cast(_internalDeviceState), reason); return; } @@ -3758,14 +3831,21 @@ - (void)_storePersistedDeviceData } #ifdef DEBUG -- (MTRDeviceClusterData *)_getClusterDataForPath:(MTRClusterPath *)path +- (MTRDeviceClusterData *)unitTestGetClusterDataForPath:(MTRClusterPath *)path { std::lock_guard lock(_lock); return [[self _clusterDataForPath:path] copy]; } -- (BOOL)_clusterHasBeenPersisted:(MTRClusterPath *)path +- (NSSet *)unitTestGetPersistedClusters +{ + std::lock_guard lock(_lock); + + return [_persistedClusters copy]; +} + +- (BOOL)unitTestClusterHasBeenPersisted:(MTRClusterPath *)path { std::lock_guard lock(_lock); diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 0f263d756c5e7b..2e4bb6d4fb0400 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -272,7 +272,7 @@ - (instancetype)initWithFactory:(MTRDeviceControllerFactory *)factory concurrentSubscriptionPoolSize = 1; } - MTR_LOG("Setting up pool size of MTRDeviceController with: %lu", static_cast(concurrentSubscriptionPoolSize)); + MTR_LOG("%@ Setting up pool size of MTRDeviceController with: %lu", self, static_cast(concurrentSubscriptionPoolSize)); _concurrentSubscriptionPool = [[MTRAsyncWorkQueue alloc] initWithContext:self width:concurrentSubscriptionPoolSize]; @@ -283,6 +283,11 @@ - (instancetype)initWithFactory:(MTRDeviceControllerFactory *)factory return self; } +- (NSString *)description +{ + return [NSString stringWithFormat:@"", self, _uniqueIdentifier]; +} + - (BOOL)isRunning { return _cppCommissioner != nullptr; @@ -290,6 +295,7 @@ - (BOOL)isRunning - (void)shutdown { + MTR_LOG("%@ shutdown called", self); if (_cppCommissioner == nullptr) { // Already shut down. return; @@ -393,7 +399,7 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams { __block BOOL commissionerInitialized = NO; if ([self isRunning]) { - MTR_LOG_ERROR("Unexpected duplicate call to startup"); + MTR_LOG_ERROR("%@ Unexpected duplicate call to startup", self); return NO; } @@ -404,24 +410,24 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams if (startupParams.vendorID == nil || [startupParams.vendorID unsignedShortValue] == chip::VendorId::Common) { // Shouldn't be using the "standard" vendor ID for actual devices. - MTR_LOG_ERROR("%@ is not a valid vendorID to initialize a device controller with", startupParams.vendorID); + MTR_LOG_ERROR("%@ %@ is not a valid vendorID to initialize a device controller with", self, startupParams.vendorID); return; } if (startupParams.operationalCertificate == nil && startupParams.nodeID == nil) { - MTR_LOG_ERROR("Can't start a controller if we don't know what node id it is"); + MTR_LOG_ERROR("%@ Can't start a controller if we don't know what node id it is", self); return; } if ([startupParams keypairsMatchCertificates] == NO) { - MTR_LOG_ERROR("Provided keypairs do not match certificates"); + MTR_LOG_ERROR("%@ Provided keypairs do not match certificates", self); return; } if (startupParams.operationalCertificate != nil && startupParams.operationalKeypair == nil && (!startupParams.fabricIndex.HasValue() || !startupParams.keystore->HasOpKeypairForFabric(startupParams.fabricIndex.Value()))) { - MTR_LOG_ERROR("Have no operational keypair for our operational certificate"); + MTR_LOG_ERROR("%@ Have no operational keypair for our operational certificate", self); return; } @@ -584,9 +590,12 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams self->_storedFabricIndex = fabricIdx; commissionerInitialized = YES; + + MTR_LOG("%@ startup succeeded for nodeID 0x%016llX", self, self->_cppCommissioner->GetNodeId()); }); if (commissionerInitialized == NO) { + MTR_LOG_ERROR("%@ startup failed", self); [self cleanupAfterStartup]; return NO; } @@ -597,7 +606,7 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams // above. if (![self setOperationalCertificateIssuer:startupParams.operationalCertificateIssuer queue:startupParams.operationalCertificateIssuerQueue]) { - MTR_LOG_ERROR("operationalCertificateIssuer and operationalCertificateIssuerQueue must both be nil or both be non-nil"); + MTR_LOG_ERROR("%@ operationalCertificateIssuer and operationalCertificateIssuerQueue must both be nil or both be non-nil", self); [self cleanupAfterStartup]; return NO; } @@ -605,14 +614,14 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams if (_controllerDataStore) { // If the storage delegate supports the bulk read API, then a dictionary of nodeID => cluster data dictionary would be passed to the handler. Otherwise this would be a no-op, and stored attributes for MTRDevice objects will be loaded lazily in -deviceForNodeID:. [_controllerDataStore fetchAttributeDataForAllDevices:^(NSDictionary *> * _Nonnull clusterDataByNode) { - MTR_LOG("Loaded attribute values for %lu nodes from storage for controller uuid %@", static_cast(clusterDataByNode.count), self->_uniqueIdentifier); + MTR_LOG("%@ Loaded attribute values for %lu nodes from storage for controller uuid %@", self, static_cast(clusterDataByNode.count), self->_uniqueIdentifier); std::lock_guard lock(self->_deviceMapLock); NSMutableArray * deviceList = [NSMutableArray array]; for (NSNumber * nodeID in clusterDataByNode) { NSDictionary * clusterData = clusterDataByNode[nodeID]; MTRDevice * device = [self _setupDeviceForNodeID:nodeID prefetchedClusterData:clusterData]; - MTR_LOG("Loaded %lu cluster data from storage for %@", static_cast(clusterData.count), device); + MTR_LOG("%@ Loaded %lu cluster data from storage for %@", self, static_cast(clusterData.count), device); [deviceList addObject:device]; } @@ -623,7 +632,7 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams // Note that this is just an optimization to avoid throwing the information away and immediately // re-reading it from storage. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (kSecondsToWaitBeforeAPIClientRetainsMTRDevice * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - MTR_LOG("MTRDeviceController: un-retain devices loaded at startup %lu", static_cast(deviceList.count)); + MTR_LOG("%@ un-retain devices loaded at startup %lu", self, static_cast(deviceList.count)); }); }]; } @@ -638,7 +647,7 @@ - (NSNumber *)controllerNodeID NSNumber * nodeID = [self syncRunOnWorkQueueWithReturnValue:block error:nil]; if (!nodeID) { - MTR_LOG_ERROR("A controller has no node id if it has not been started"); + MTR_LOG_ERROR("%@ A controller has no node id if it has not been started", self); } return nodeID; @@ -707,7 +716,7 @@ - (BOOL)setupCommissioningSessionWithDiscoveredDevice:(MTRCommissionableBrowserR newNodeID:(NSNumber *)newNodeID error:(NSError * __autoreleasing *)error { - MTR_LOG("Setting up commissioning session for already-discovered device %@ and device ID 0x%016llX with setup payload %@", discoveredDevice, newNodeID.unsignedLongLongValue, payload); + MTR_LOG("%@ Setting up commissioning session for already-discovered device %@ and device ID 0x%016llX with setup payload %@", self, discoveredDevice, newNodeID.unsignedLongLongValue, payload); [[MTRMetricsCollector sharedInstance] resetMetrics]; @@ -965,8 +974,7 @@ - (MTRBaseDevice *)deviceBeingCommissionedWithNodeID:(NSNumber *)nodeID error:(N }; MTRBaseDevice * device = [self syncRunOnWorkQueueWithReturnValue:block error:error]; - MTR_LOG("Getting device being commissioned with node ID 0x%016llX: %@ (error: %@)", - nodeID.unsignedLongLongValue, device, (error ? *error : nil)); + MTR_LOG("%@ Getting device being commissioned with node ID 0x%016llX: %@ (error: %@)", self, nodeID.unsignedLongLongValue, device, (error ? *error : nil)); return device; } @@ -996,7 +1004,7 @@ - (MTRDevice *)_setupDeviceForNodeID:(NSNumber *)nodeID prefetchedClusterData:(N } else if (_controllerDataStore) { // Load persisted cluster data if they exist. NSDictionary * clusterData = [_controllerDataStore getStoredClusterDataForNodeID:nodeID]; - MTR_LOG("Loaded %lu cluster data from storage for %@", static_cast(clusterData.count), deviceToReturn); + MTR_LOG("%@ Loaded %lu cluster data from storage for %@", self, static_cast(clusterData.count), deviceToReturn); if (clusterData.count) { [deviceToReturn setPersistedClusterData:clusterData]; } @@ -1035,7 +1043,7 @@ - (void)removeDevice:(MTRDevice *)device [deviceToRemove invalidate]; [_nodeIDToDeviceMap removeObjectForKey:nodeID]; } else { - MTR_LOG_ERROR("Error: Cannot remove device %p with nodeID %llu", device, nodeID.unsignedLongLongValue); + MTR_LOG_ERROR("%@ Error: Cannot remove device %p with nodeID %llu", self, device, nodeID.unsignedLongLongValue); } } @@ -1143,7 +1151,7 @@ - (BOOL)addServerEndpoint:(MTRServerEndpoint *)endpoint } if (![endpoint associateWithController:self]) { - MTR_LOG_ERROR("Failed to associate MTRServerEndpoint with MTRDeviceController"); + MTR_LOG_ERROR("%@ Failed to associate MTRServerEndpoint with MTRDeviceController", self); [_factory removeServerEndpoint:endpoint]; return NO; } @@ -1151,11 +1159,11 @@ - (BOOL)addServerEndpoint:(MTRServerEndpoint *)endpoint [self asyncDispatchToMatterQueue:^() { [self->_serverEndpoints addObject:endpoint]; [endpoint registerMatterEndpoint]; - MTR_LOG("Added server endpoint %u to controller %@", static_cast(endpoint.endpointID.unsignedLongLongValue), + MTR_LOG("%@ Added server endpoint %u to controller %@", self, static_cast(endpoint.endpointID.unsignedLongLongValue), self->_uniqueIdentifier); } errorHandler:^(NSError * error) { - MTR_LOG_ERROR("Unexpected failure dispatching to Matter queue on running controller in addServerEndpoint, adding endpoint %u", + MTR_LOG_ERROR("%@ Unexpected failure dispatching to Matter queue on running controller in addServerEndpoint, adding endpoint %u", self, static_cast(endpoint.endpointID.unsignedLongLongValue)); }]; return YES; @@ -1179,7 +1187,7 @@ - (void)removeServerEndpointInternal:(MTRServerEndpoint *)endpoint queue:(dispat // tearing it down. [self asyncDispatchToMatterQueue:^() { [self removeServerEndpointOnMatterQueue:endpoint]; - MTR_LOG("Removed server endpoint %u from controller %@", static_cast(endpoint.endpointID.unsignedLongLongValue), + MTR_LOG("%@ Removed server endpoint %u from controller %@", self, static_cast(endpoint.endpointID.unsignedLongLongValue), self->_uniqueIdentifier); if (queue != nil && completion != nil) { dispatch_async(queue, completion); @@ -1187,7 +1195,7 @@ - (void)removeServerEndpointInternal:(MTRServerEndpoint *)endpoint queue:(dispat } errorHandler:^(NSError * error) { // Error means we got shut down, so the endpoint is removed now. - MTR_LOG("controller %@ already shut down, so endpoint %u has already been removed", self->_uniqueIdentifier, + MTR_LOG("%@ controller already shut down, so endpoint %u has already been removed", self, static_cast(endpoint.endpointID.unsignedLongLongValue)); if (queue != nil && completion != nil) { dispatch_async(queue, completion); @@ -1212,7 +1220,7 @@ - (BOOL)checkForInitError:(BOOL)condition logMsg:(NSString *)logMsg return NO; } - MTR_LOG_ERROR("Error: %@", logMsg); + MTR_LOG_ERROR("%@ Error: %@", self, logMsg); [self cleanup]; @@ -1233,7 +1241,7 @@ - (BOOL)checkForStartError:(CHIP_ERROR)errorCode logMsg:(NSString *)logMsg return NO; } - MTR_LOG_ERROR("Error(%" CHIP_ERROR_FORMAT "): %@", errorCode.Format(), logMsg); + MTR_LOG_ERROR("Error(%" CHIP_ERROR_FORMAT "): %@ %@", errorCode.Format(), self, logMsg); return YES; } @@ -1244,7 +1252,7 @@ + (BOOL)checkForError:(CHIP_ERROR)errorCode logMsg:(NSString *)logMsg error:(NSE return NO; } - MTR_LOG_ERROR("Error(%" CHIP_ERROR_FORMAT "): %s", errorCode.Format(), [logMsg UTF8String]); + MTR_LOG_ERROR("Error(%" CHIP_ERROR_FORMAT "): %@ %s", errorCode.Format(), self, [logMsg UTF8String]); if (error) { *error = [MTRError errorForCHIPErrorCode:errorCode]; } @@ -1882,7 +1890,7 @@ - (MTRBaseDevice *)getDeviceBeingCommissioned:(uint64_t)deviceId error:(NSError - (BOOL)openPairingWindow:(uint64_t)deviceID duration:(NSUInteger)duration error:(NSError * __autoreleasing *)error { if (duration > UINT16_MAX) { - MTR_LOG_ERROR("Error: Duration %lu is too large. Max value %d", static_cast(duration), UINT16_MAX); + MTR_LOG_ERROR("%@ Error: Duration %lu is too large. Max value %d", self, static_cast(duration), UINT16_MAX); if (error) { *error = [MTRError errorForCHIPErrorCode:CHIP_ERROR_INVALID_INTEGER_VALUE]; } @@ -1908,7 +1916,7 @@ - (NSString *)openPairingWindowWithPIN:(uint64_t)deviceID error:(NSError * __autoreleasing *)error { if (duration > UINT16_MAX) { - MTR_LOG_ERROR("Error: Duration %lu is too large. Max value %d", static_cast(duration), UINT16_MAX); + MTR_LOG_ERROR("%@ Error: Duration %lu is too large. Max value %d", self, static_cast(duration), UINT16_MAX); if (error) { *error = [MTRError errorForCHIPErrorCode:CHIP_ERROR_INVALID_INTEGER_VALUE]; } @@ -1916,7 +1924,7 @@ - (NSString *)openPairingWindowWithPIN:(uint64_t)deviceID } if (discriminator > 0xfff) { - MTR_LOG_ERROR("Error: Discriminator %lu is too large. Max value %d", static_cast(discriminator), 0xfff); + MTR_LOG_ERROR("%@ Error: Discriminator %lu is too large. Max value %d", self, static_cast(discriminator), 0xfff); if (error) { *error = [MTRError errorForCHIPErrorCode:CHIP_ERROR_INVALID_INTEGER_VALUE]; } @@ -1927,7 +1935,7 @@ - (NSString *)openPairingWindowWithPIN:(uint64_t)deviceID MATTER_LOG_METRIC_SCOPE(kMetricOpenPairingWindow, errorCode); if (!chip::CanCastTo(setupPIN) || !chip::SetupPayload::IsValidSetupPIN(static_cast(setupPIN))) { - MTR_LOG_ERROR("Error: Setup pin %lu is not valid", static_cast(setupPIN)); + MTR_LOG_ERROR("%@ Error: Setup pin %lu is not valid", self, static_cast(setupPIN)); errorCode = CHIP_ERROR_INVALID_INTEGER_VALUE; if (error) { *error = [MTRError errorForCHIPErrorCode:errorCode]; @@ -1949,11 +1957,11 @@ - (NSString *)openPairingWindowWithPIN:(uint64_t)deviceID std::string outCode; if (CHIP_NO_ERROR != (errorCode = generator.payloadDecimalStringRepresentation(outCode))) { - MTR_LOG_ERROR("Failed to get decimal setup code"); + MTR_LOG_ERROR("%@ Failed to get decimal setup code", self); return nil; } - MTR_LOG_ERROR("Setup code is %s", outCode.c_str()); + MTR_LOG_ERROR("%@ Setup code is %s", self, outCode.c_str()); return [NSString stringWithCString:outCode.c_str() encoding:[NSString defaultCStringEncoding]]; }; diff --git a/src/darwin/Framework/CHIP/MTRDeviceControllerDataStore.mm b/src/darwin/Framework/CHIP/MTRDeviceControllerDataStore.mm index a328b2a903627f..8d57a5b0a1927d 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceControllerDataStore.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceControllerDataStore.mm @@ -1011,6 +1011,7 @@ - (void)storeClusterData:(NSDictionary BOOL endpointIndexModified = NO; NSMutableArray * endpointIndexToStore; if (endpointIndex) { + MTR_LOG("No entry found for endpointIndex @ node 0x%016llX - creating", nodeID.unsignedLongLongValue); endpointIndexToStore = [endpointIndex mutableCopy]; } else { endpointIndexToStore = [NSMutableArray array]; @@ -1029,6 +1030,7 @@ - (void)storeClusterData:(NSDictionary BOOL clusterIndexModified = NO; NSMutableArray * clusterIndexToStore; if (clusterIndex) { + MTR_LOG("No entry found for clusterIndex @ node 0x%016llX endpoint %u - creating", nodeID.unsignedLongLongValue, endpointID.unsignedShortValue); clusterIndexToStore = [clusterIndex mutableCopy]; } else { clusterIndexToStore = [NSMutableArray array]; @@ -1074,6 +1076,7 @@ - (void)storeClusterData:(NSDictionary NSArray * nodeIndexToStore = nil; if (!nodeIndex) { // Ensure node index exists + MTR_LOG("No entry found for for nodeIndex - creating for node 0x%016llX", nodeID.unsignedLongLongValue); nodeIndexToStore = [NSArray arrayWithObject:nodeID]; } else if (![nodeIndex containsObject:nodeID]) { nodeIndexToStore = [nodeIndex arrayByAddingObject:nodeID]; diff --git a/src/darwin/Framework/CHIP/MTRDeviceControllerFactory.mm b/src/darwin/Framework/CHIP/MTRDeviceControllerFactory.mm index 662a228bdd994e..18128249376e21 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceControllerFactory.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceControllerFactory.mm @@ -889,11 +889,10 @@ - (void)resetOperationalAdvertising // If we're not advertising, then there's no need to reset anything. VerifyOrReturn(_advertiseOperational); - // If there are no running controllers there will be no advertisements to reset. - { - std::lock_guard lock(_controllersLock); - VerifyOrReturn(_controllers.count > 0); - } + // Ensure the stack is running. We can't look at _controllers to determine this + // reliably because it gets updated early during controller startup from off-queue. + auto systemState = _controllerFactory->GetSystemState(); + VerifyOrReturn(systemState != nullptr && !systemState->IsShutDown()); // StartServer() is the only API we have for resetting DNS-SD advertising. // It sure would be nice if there were a "restart" that was a no-op if the diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml index 59a09aa0769686..723133cb74d477 100644 --- a/src/darwin/Framework/CHIP/templates/availability.yaml +++ b/src/darwin/Framework/CHIP/templates/availability.yaml @@ -9583,7 +9583,6 @@ - PresetsSchedulesEditable - TemperatureSetpointHoldPolicy - SetpointHoldExpiryTimestamp - - QueuedPreset - ActiveScheduleHandle UnitTesting: # Ideally none of UnitTesting would be exposed as public API, but @@ -9601,7 +9600,6 @@ - StartPresetsSchedulesEditRequest - CancelPresetsSchedulesEditRequest - CommitPresetsSchedulesRequest - - CancelSetActivePresetRequest - SetTemperatureSetpointHoldPolicy RVCOperationalState: # Targeting Spring 2024 Matter release @@ -9623,7 +9621,6 @@ - PresetStruct - PresetTypeStruct - ScheduleTypeStruct - - QueuedPresetStruct events: UnitTesting: # Ideally none of UnitTesting would be exposed as public API, but @@ -9670,7 +9667,6 @@ Thermostat: Feature: # Targeting Spring 2024 Matter release - - QueuedPresetsSupported - Setpoints - Presets - MatterScheduleConfiguration diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm index 87b96a713cf814..0d2f7bca464902 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm @@ -1851,6 +1851,9 @@ static BOOL AttributeIsSpecifiedInICDManagementCluster(AttributeId aAttributeId) case Attributes::OperatingMode::Id: { return YES; } + case Attributes::MaximumCheckInBackOff::Id: { + return YES; + } case Attributes::GeneratedCommandList::Id: { return YES; } @@ -4164,9 +4167,6 @@ static BOOL AttributeIsSpecifiedInThermostatCluster(AttributeId aAttributeId) case Attributes::SetpointHoldExpiryTimestamp::Id: { return YES; } - case Attributes::QueuedPreset::Id: { - return YES; - } case Attributes::GeneratedCommandList::Id: { return YES; } diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm index 26db9e819103af..8ce69c91d5ae56 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm @@ -5113,6 +5113,17 @@ static id _Nullable DecodeAttributeValueForICDManagementCluster(AttributeId aAtt value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)]; return value; } + case Attributes::MaximumCheckInBackOff::Id: { + using TypeInfo = Attributes::MaximumCheckInBackOff::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) { + return nil; + } + NSNumber * _Nonnull value; + value = [NSNumber numberWithUnsignedInt:cppValue]; + return value; + } default: { break; } @@ -12485,31 +12496,6 @@ static id _Nullable DecodeAttributeValueForThermostatCluster(AttributeId aAttrib } return value; } - case Attributes::QueuedPreset::Id: { - using TypeInfo = Attributes::QueuedPreset::TypeInfo; - TypeInfo::DecodableType cppValue; - *aError = DataModel::Decode(aReader, cppValue); - if (*aError != CHIP_NO_ERROR) { - return nil; - } - MTRThermostatClusterQueuedPresetStruct * _Nullable value; - if (cppValue.IsNull()) { - value = nil; - } else { - value = [MTRThermostatClusterQueuedPresetStruct new]; - if (cppValue.Value().presetHandle.IsNull()) { - value.presetHandle = nil; - } else { - value.presetHandle = AsData(cppValue.Value().presetHandle.Value()); - } - if (cppValue.Value().transitionTimestamp.IsNull()) { - value.transitionTimestamp = nil; - } else { - value.transitionTimestamp = [NSNumber numberWithUnsignedInt:cppValue.Value().transitionTimestamp.Value()]; - } - } - return value; - } default: { break; } diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h index 91b6e9a65a2fc6..c1ad2950a339f2 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h @@ -4547,6 +4547,12 @@ MTR_PROVISIONALLY_AVAILABLE reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler MTR_PROVISIONALLY_AVAILABLE; + (void)readAttributeOperatingModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE; +- (void)readAttributeMaximumCheckInBackOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE; +- (void)subscribeAttributeMaximumCheckInBackOffWithParams:(MTRSubscribeParams *)params + subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished + reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler MTR_PROVISIONALLY_AVAILABLE; ++ (void)readAttributeMaximumCheckInBackOffWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE; + - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE; - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished @@ -10006,14 +10012,6 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - (void)commitPresetsSchedulesRequestWithParams:(MTRThermostatClusterCommitPresetsSchedulesRequestParams * _Nullable)params completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE; - (void)commitPresetsSchedulesRequestWithCompletion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE; -/** - * Command CancelSetActivePresetRequest - * - * This command is sent to cancel a queued preset. - */ -- (void)cancelSetActivePresetRequestWithParams:(MTRThermostatClusterCancelSetActivePresetRequestParams * _Nullable)params completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE; -- (void)cancelSetActivePresetRequestWithCompletion:(MTRStatusCompletion)completion - MTR_PROVISIONALLY_AVAILABLE; /** * Command SetTemperatureSetpointHoldPolicy * @@ -10451,12 +10449,6 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler MTR_PROVISIONALLY_AVAILABLE; + (void)readAttributeSetpointHoldExpiryTimestampWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE; -- (void)readAttributeQueuedPresetWithCompletion:(void (^)(MTRThermostatClusterQueuedPresetStruct * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE; -- (void)subscribeAttributeQueuedPresetWithParams:(MTRSubscribeParams *)params - subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished - reportHandler:(void (^)(MTRThermostatClusterQueuedPresetStruct * _Nullable value, NSError * _Nullable error))reportHandler MTR_PROVISIONALLY_AVAILABLE; -+ (void)readAttributeQueuedPresetWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(MTRThermostatClusterQueuedPresetStruct * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE; - - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)); - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished @@ -18081,6 +18073,7 @@ typedef NS_OPTIONS(uint32_t, MTRICDManagementFeature) { MTRICDManagementFeatureCheckInProtocolSupport MTR_PROVISIONALLY_AVAILABLE = 0x1, MTRICDManagementFeatureUserActiveModeTrigger MTR_PROVISIONALLY_AVAILABLE = 0x2, MTRICDManagementFeatureLongIdleTimeSupport MTR_PROVISIONALLY_AVAILABLE = 0x4, + MTRICDManagementFeatureDynamicSitLitSupport MTR_PROVISIONALLY_AVAILABLE = 0x8, } MTR_PROVISIONALLY_AVAILABLE; typedef NS_OPTIONS(uint32_t, MTRICDManagementUserActiveModeTriggerBitmap) { @@ -19840,7 +19833,6 @@ typedef NS_OPTIONS(uint32_t, MTRThermostatFeature) { MTRThermostatFeatureMatterScheduleConfiguration MTR_PROVISIONALLY_AVAILABLE = 0x80, MTRThermostatFeaturePresets MTR_PROVISIONALLY_AVAILABLE = 0x100, MTRThermostatFeatureSetpoints MTR_PROVISIONALLY_AVAILABLE = 0x200, - MTRThermostatFeatureQueuedPresetsSupported MTR_PROVISIONALLY_AVAILABLE = 0x400, } MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); typedef NS_OPTIONS(uint8_t, MTRThermostatHVACSystemTypeBitmap) { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm index 9aa9dbfab3dec4..b4f9ee8e82e653 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm @@ -37398,6 +37398,42 @@ + (void)readAttributeOperatingModeWithClusterStateCache:(MTRClusterStateCacheCon completion:completion]; } +- (void)readAttributeMaximumCheckInBackOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion +{ + using TypeInfo = IcdManagement::Attributes::MaximumCheckInBackOff::TypeInfo; + [self.device _readKnownAttributeWithEndpointID:self.endpointID + clusterID:@(TypeInfo::GetClusterId()) + attributeID:@(TypeInfo::GetAttributeId()) + params:nil + queue:self.callbackQueue + completion:completion]; +} + +- (void)subscribeAttributeMaximumCheckInBackOffWithParams:(MTRSubscribeParams * _Nonnull)params + subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished + reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler +{ + using TypeInfo = IcdManagement::Attributes::MaximumCheckInBackOff::TypeInfo; + [self.device _subscribeToKnownAttributeWithEndpointID:self.endpointID + clusterID:@(TypeInfo::GetClusterId()) + attributeID:@(TypeInfo::GetAttributeId()) + params:params + queue:self.callbackQueue + reportHandler:reportHandler + subscriptionEstablished:subscriptionEstablished]; +} + ++ (void)readAttributeMaximumCheckInBackOffWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion +{ + using TypeInfo = IcdManagement::Attributes::MaximumCheckInBackOff::TypeInfo; + [clusterStateCacheContainer + _readKnownCachedAttributeWithEndpointID:static_cast([endpoint unsignedShortValue]) + clusterID:TypeInfo::GetClusterId() + attributeID:TypeInfo::GetAttributeId() + queue:queue + completion:completion]; +} + - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { using TypeInfo = IcdManagement::Attributes::GeneratedCommandList::TypeInfo; @@ -67912,34 +67948,6 @@ - (void)commitPresetsSchedulesRequestWithParams:(MTRThermostatClusterCommitPrese queue:self.callbackQueue completion:responseHandler]; } -- (void)cancelSetActivePresetRequestWithCompletion:(MTRStatusCompletion)completion -{ - [self cancelSetActivePresetRequestWithParams:nil completion:completion]; -} -- (void)cancelSetActivePresetRequestWithParams:(MTRThermostatClusterCancelSetActivePresetRequestParams * _Nullable)params completion:(MTRStatusCompletion)completion -{ - if (params == nil) { - params = [[MTRThermostatClusterCancelSetActivePresetRequestParams - alloc] init]; - } - - auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) { - completion(error); - }; - - auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs; - - using RequestType = Thermostat::Commands::CancelSetActivePresetRequest::Type; - [self.device _invokeKnownCommandWithEndpointID:self.endpointID - clusterID:@(RequestType::GetClusterId()) - commandID:@(RequestType::GetCommandId()) - commandPayload:params - timedInvokeTimeout:timedInvokeTimeoutMs - serverSideProcessingTimeout:params.serverSideProcessingTimeout - responseClass:nil - queue:self.callbackQueue - completion:responseHandler]; -} - (void)setTemperatureSetpointHoldPolicyWithParams:(MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams *)params completion:(MTRStatusCompletion)completion { if (params == nil) { @@ -71157,42 +71165,6 @@ + (void)readAttributeSetpointHoldExpiryTimestampWithClusterStateCache:(MTRCluste completion:completion]; } -- (void)readAttributeQueuedPresetWithCompletion:(void (^)(MTRThermostatClusterQueuedPresetStruct * _Nullable value, NSError * _Nullable error))completion -{ - using TypeInfo = Thermostat::Attributes::QueuedPreset::TypeInfo; - [self.device _readKnownAttributeWithEndpointID:self.endpointID - clusterID:@(TypeInfo::GetClusterId()) - attributeID:@(TypeInfo::GetAttributeId()) - params:nil - queue:self.callbackQueue - completion:completion]; -} - -- (void)subscribeAttributeQueuedPresetWithParams:(MTRSubscribeParams * _Nonnull)params - subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished - reportHandler:(void (^)(MTRThermostatClusterQueuedPresetStruct * _Nullable value, NSError * _Nullable error))reportHandler -{ - using TypeInfo = Thermostat::Attributes::QueuedPreset::TypeInfo; - [self.device _subscribeToKnownAttributeWithEndpointID:self.endpointID - clusterID:@(TypeInfo::GetClusterId()) - attributeID:@(TypeInfo::GetAttributeId()) - params:params - queue:self.callbackQueue - reportHandler:reportHandler - subscriptionEstablished:subscriptionEstablished]; -} - -+ (void)readAttributeQueuedPresetWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(MTRThermostatClusterQueuedPresetStruct * _Nullable value, NSError * _Nullable error))completion -{ - using TypeInfo = Thermostat::Attributes::QueuedPreset::TypeInfo; - [clusterStateCacheContainer - _readKnownCachedAttributeWithEndpointID:static_cast([endpoint unsignedShortValue]) - clusterID:TypeInfo::GetClusterId() - attributeID:TypeInfo::GetAttributeId() - queue:queue - completion:completion]; -} - - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion { using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h index 6c2978795cdafd..094d58964241fa 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h @@ -2219,6 +2219,7 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) { MTRAttributeIDTypeClusterICDManagementAttributeUserActiveModeTriggerHintID MTR_PROVISIONALLY_AVAILABLE = 0x00000006, MTRAttributeIDTypeClusterICDManagementAttributeUserActiveModeTriggerInstructionID MTR_PROVISIONALLY_AVAILABLE = 0x00000007, MTRAttributeIDTypeClusterICDManagementAttributeOperatingModeID MTR_PROVISIONALLY_AVAILABLE = 0x00000008, + MTRAttributeIDTypeClusterICDManagementAttributeMaximumCheckInBackOffID MTR_PROVISIONALLY_AVAILABLE = 0x00000009, MTRAttributeIDTypeClusterICDManagementAttributeGeneratedCommandListID MTR_PROVISIONALLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID, MTRAttributeIDTypeClusterICDManagementAttributeAcceptedCommandListID MTR_PROVISIONALLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID, MTRAttributeIDTypeClusterICDManagementAttributeEventListID MTR_PROVISIONALLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeEventListID, @@ -3487,7 +3488,6 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) { MTRAttributeIDTypeClusterThermostatAttributePresetsSchedulesEditableID MTR_PROVISIONALLY_AVAILABLE = 0x00000052, MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldPolicyID MTR_PROVISIONALLY_AVAILABLE = 0x00000053, MTRAttributeIDTypeClusterThermostatAttributeSetpointHoldExpiryTimestampID MTR_PROVISIONALLY_AVAILABLE = 0x00000054, - MTRAttributeIDTypeClusterThermostatAttributeQueuedPresetID MTR_PROVISIONALLY_AVAILABLE = 0x00000055, MTRAttributeIDTypeClusterThermostatAttributeGeneratedCommandListID MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID, MTRAttributeIDTypeClusterThermostatAttributeAcceptedCommandListID MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID, MTRAttributeIDTypeClusterThermostatAttributeEventListID MTR_PROVISIONALLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeEventListID, @@ -6592,7 +6592,6 @@ typedef NS_ENUM(uint32_t, MTRCommandIDType) { MTRCommandIDTypeClusterThermostatCommandStartPresetsSchedulesEditRequestID MTR_PROVISIONALLY_AVAILABLE = 0x00000007, MTRCommandIDTypeClusterThermostatCommandCancelPresetsSchedulesEditRequestID MTR_PROVISIONALLY_AVAILABLE = 0x00000008, MTRCommandIDTypeClusterThermostatCommandCommitPresetsSchedulesRequestID MTR_PROVISIONALLY_AVAILABLE = 0x00000009, - MTRCommandIDTypeClusterThermostatCommandCancelSetActivePresetRequestID MTR_PROVISIONALLY_AVAILABLE = 0x0000000A, MTRCommandIDTypeClusterThermostatCommandSetTemperatureSetpointHoldPolicyID MTR_PROVISIONALLY_AVAILABLE = 0x0000000B, // Cluster FanControl deprecated command id names diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm index 777f3c0c3ba164..91bdbf48d13e74 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm @@ -2772,6 +2772,10 @@ result = @"OperatingMode"; break; + case MTRAttributeIDTypeClusterICDManagementAttributeMaximumCheckInBackOffID: + result = @"MaximumCheckInBackOff"; + break; + case MTRAttributeIDTypeClusterICDManagementAttributeGeneratedCommandListID: result = @"GeneratedCommandList"; break; @@ -5770,10 +5774,6 @@ result = @"SetpointHoldExpiryTimestamp"; break; - case MTRAttributeIDTypeClusterThermostatAttributeQueuedPresetID: - result = @"QueuedPreset"; - break; - case MTRAttributeIDTypeClusterThermostatAttributeGeneratedCommandListID: result = @"GeneratedCommandList"; break; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h index 530ffcc58e2808..7c4d66189c3b4d 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h @@ -2110,6 +2110,8 @@ MTR_PROVISIONALLY_AVAILABLE - (NSDictionary * _Nullable)readAttributeOperatingModeWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE; +- (NSDictionary * _Nullable)readAttributeMaximumCheckInBackOffWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE; + - (NSDictionary * _Nullable)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE; - (NSDictionary * _Nullable)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE; @@ -4647,9 +4649,6 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - (void)commitPresetsSchedulesRequestWithParams:(MTRThermostatClusterCommitPresetsSchedulesRequestParams * _Nullable)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE; - (void)commitPresetsSchedulesRequestWithExpectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE; -- (void)cancelSetActivePresetRequestWithParams:(MTRThermostatClusterCancelSetActivePresetRequestParams * _Nullable)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE; -- (void)cancelSetActivePresetRequestWithExpectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion - MTR_PROVISIONALLY_AVAILABLE; - (void)setTemperatureSetpointHoldPolicyWithParams:(MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE; - (NSDictionary * _Nullable)readAttributeLocalTemperatureWithParams:(MTRReadParams * _Nullable)params MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); @@ -4834,8 +4833,6 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - (NSDictionary * _Nullable)readAttributeSetpointHoldExpiryTimestampWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE; -- (NSDictionary * _Nullable)readAttributeQueuedPresetWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE; - - (NSDictionary * _Nullable)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); - (NSDictionary * _Nullable)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm index a753bca9616931..b638b2c8f56890 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm @@ -6152,6 +6152,11 @@ - (void)stayActiveRequestWithParams:(MTRICDManagementClusterStayActiveRequestPar return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeICDManagementID) attributeID:@(MTRAttributeIDTypeClusterICDManagementAttributeOperatingModeID) params:params]; } +- (NSDictionary * _Nullable)readAttributeMaximumCheckInBackOffWithParams:(MTRReadParams * _Nullable)params +{ + return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeICDManagementID) attributeID:@(MTRAttributeIDTypeClusterICDManagementAttributeMaximumCheckInBackOffID) params:params]; +} + - (NSDictionary * _Nullable)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params { return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeICDManagementID) attributeID:@(MTRAttributeIDTypeClusterICDManagementAttributeGeneratedCommandListID) params:params]; @@ -13295,37 +13300,6 @@ - (void)commitPresetsSchedulesRequestWithParams:(MTRThermostatClusterCommitPrese completion:responseHandler]; } -- (void)cancelSetActivePresetRequestWithExpectedValues:(NSArray *> *)expectedValues expectedValueInterval:(NSNumber *)expectedValueIntervalMs completion:(MTRStatusCompletion)completion -{ - [self cancelSetActivePresetRequestWithParams:nil expectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completion]; -} -- (void)cancelSetActivePresetRequestWithParams:(MTRThermostatClusterCancelSetActivePresetRequestParams * _Nullable)params expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion -{ - if (params == nil) { - params = [[MTRThermostatClusterCancelSetActivePresetRequestParams - alloc] init]; - } - - auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) { - completion(error); - }; - - auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs; - - using RequestType = Thermostat::Commands::CancelSetActivePresetRequest::Type; - [self.device _invokeKnownCommandWithEndpointID:self.endpointID - clusterID:@(RequestType::GetClusterId()) - commandID:@(RequestType::GetCommandId()) - commandPayload:params - expectedValues:expectedValues - expectedValueInterval:expectedValueIntervalMs - timedInvokeTimeout:timedInvokeTimeoutMs - serverSideProcessingTimeout:params.serverSideProcessingTimeout - responseClass:nil - queue:self.callbackQueue - completion:responseHandler]; -} - - (void)setTemperatureSetpointHoldPolicyWithParams:(MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams *)params expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion { if (params == nil) { @@ -13982,11 +13956,6 @@ - (void)writeAttributeSchedulesWithValue:(NSDictionary *)dataVal return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeThermostatID) attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeSetpointHoldExpiryTimestampID) params:params]; } -- (NSDictionary * _Nullable)readAttributeQueuedPresetWithParams:(MTRReadParams * _Nullable)params -{ - return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeThermostatID) attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeQueuedPresetID) params:params]; -} - - (NSDictionary * _Nullable)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params { return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeThermostatID) attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeGeneratedCommandListID) params:params]; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h index 4bdab512cd6d77..5981d8292c039c 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h @@ -7808,8 +7808,6 @@ MTR_PROVISIONALLY_AVAILABLE @interface MTRThermostatClusterSetActivePresetRequestParams : NSObject @property (nonatomic, copy) NSData * _Nonnull presetHandle MTR_PROVISIONALLY_AVAILABLE; - -@property (nonatomic, copy) NSNumber * _Nullable delayMinutes MTR_PROVISIONALLY_AVAILABLE; /** * Controls whether the command is a timed command (using Timed Invoke). * @@ -7922,34 +7920,6 @@ MTR_PROVISIONALLY_AVAILABLE @property (nonatomic, copy, nullable) NSNumber * serverSideProcessingTimeout; @end -MTR_PROVISIONALLY_AVAILABLE -@interface MTRThermostatClusterCancelSetActivePresetRequestParams : NSObject -/** - * Controls whether the command is a timed command (using Timed Invoke). - * - * If nil (the default value), a regular invoke is done for commands that do - * not require a timed invoke and a timed invoke with some default timed request - * timeout is done for commands that require a timed invoke. - * - * If not nil, a timed invoke is done, with the provided value used as the timed - * request timeout. The value should be chosen small enough to provide the - * desired security properties but large enough that it will allow a round-trip - * from the sever to the client (for the status response and actual invoke - * request) within the timeout window. - * - */ -@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs; - -/** - * Controls how much time, in seconds, we will allow for the server to process the command. - * - * The command will then time out if that much time, plus an allowance for retransmits due to network failures, passes. - * - * If nil, the framework will try to select an appropriate timeout value itself. - */ -@property (nonatomic, copy, nullable) NSNumber * serverSideProcessingTimeout; -@end - MTR_PROVISIONALLY_AVAILABLE @interface MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams : NSObject diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm index 9f7ffd3a16b328..295f8444db0b63 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm @@ -22279,8 +22279,6 @@ - (instancetype)init if (self = [super init]) { _presetHandle = [NSData data]; - - _delayMinutes = nil; _timedInvokeTimeoutMs = nil; _serverSideProcessingTimeout = nil; } @@ -22292,7 +22290,6 @@ - (id)copyWithZone:(NSZone * _Nullable)zone; auto other = [[MTRThermostatClusterSetActivePresetRequestParams alloc] init]; other.presetHandle = self.presetHandle; - other.delayMinutes = self.delayMinutes; other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs; other.serverSideProcessingTimeout = self.serverSideProcessingTimeout; @@ -22301,7 +22298,7 @@ - (id)copyWithZone:(NSZone * _Nullable)zone; - (NSString *)description { - NSString * descriptionString = [NSString stringWithFormat:@"<%@: presetHandle:%@; delayMinutes:%@; >", NSStringFromClass([self class]), [_presetHandle base64EncodedStringWithOptions:0], _delayMinutes]; + NSString * descriptionString = [NSString stringWithFormat:@"<%@: presetHandle:%@; >", NSStringFromClass([self class]), [_presetHandle base64EncodedStringWithOptions:0]]; return descriptionString; } @@ -22316,12 +22313,6 @@ - (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader { encodableStruct.presetHandle = AsByteSpan(self.presetHandle); } - { - if (self.delayMinutes != nil) { - auto & definedValue_0 = encodableStruct.delayMinutes.Emplace(); - definedValue_0 = self.delayMinutes.unsignedShortValue; - } - } auto buffer = chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSizeWithoutReserve, 0); if (buffer.IsNull()) { @@ -22586,79 +22577,6 @@ - (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader } @end -@implementation MTRThermostatClusterCancelSetActivePresetRequestParams -- (instancetype)init -{ - if (self = [super init]) { - _timedInvokeTimeoutMs = nil; - _serverSideProcessingTimeout = nil; - } - return self; -} - -- (id)copyWithZone:(NSZone * _Nullable)zone; -{ - auto other = [[MTRThermostatClusterCancelSetActivePresetRequestParams alloc] init]; - - other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs; - other.serverSideProcessingTimeout = self.serverSideProcessingTimeout; - - return other; -} - -- (NSString *)description -{ - NSString * descriptionString = [NSString stringWithFormat:@"<%@: >", NSStringFromClass([self class])]; - return descriptionString; -} - -@end - -@implementation MTRThermostatClusterCancelSetActivePresetRequestParams (InternalMethods) - -- (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader -{ - chip::app::Clusters::Thermostat::Commands::CancelSetActivePresetRequest::Type encodableStruct; - ListFreer listFreer; - - auto buffer = chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSizeWithoutReserve, 0); - if (buffer.IsNull()) { - return CHIP_ERROR_NO_MEMORY; - } - - chip::System::PacketBufferTLVWriter writer; - // Commands never need chained buffers, since they cannot be chunked. - writer.Init(std::move(buffer), /* useChainedBuffers = */ false); - - ReturnErrorOnFailure(chip::app::DataModel::Encode(writer, chip::TLV::AnonymousTag(), encodableStruct)); - - ReturnErrorOnFailure(writer.Finalize(&buffer)); - - reader.Init(std::move(buffer)); - return reader.Next(chip::TLV::kTLVType_Structure, chip::TLV::AnonymousTag()); -} - -- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error -{ - chip::System::PacketBufferTLVReader reader; - CHIP_ERROR err = [self _encodeToTLVReader:reader]; - if (err != CHIP_NO_ERROR) { - if (error) { - *error = [MTRError errorForCHIPErrorCode:err]; - } - return nil; - } - - auto decodedObj = MTRDecodeDataValueDictionaryFromCHIPTLV(&reader); - if (decodedObj == nil) { - if (error) { - *error = [MTRError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE]; - } - } - return decodedObj; -} -@end - @implementation MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams - (instancetype)init { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h index c229f6cda86db8..d3746f9d936895 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h @@ -1486,12 +1486,6 @@ NS_ASSUME_NONNULL_BEGIN @end -@interface MTRThermostatClusterCancelSetActivePresetRequestParams (InternalMethods) - -- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error; - -@end - @interface MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams (InternalMethods) - (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h index 92f82f3496fca9..b804aee8b5ace1 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h @@ -1675,12 +1675,6 @@ MTR_PROVISIONALLY_AVAILABLE @property (nonatomic, copy) NSNumber * _Nonnull presetTypeFeatures MTR_PROVISIONALLY_AVAILABLE; @end -MTR_PROVISIONALLY_AVAILABLE -@interface MTRThermostatClusterQueuedPresetStruct : NSObject -@property (nonatomic, copy) NSData * _Nullable presetHandle MTR_PROVISIONALLY_AVAILABLE; -@property (nonatomic, copy) NSNumber * _Nullable transitionTimestamp MTR_PROVISIONALLY_AVAILABLE; -@end - MTR_PROVISIONALLY_AVAILABLE @interface MTRThermostatClusterScheduleTypeStruct : NSObject @property (nonatomic, copy) NSNumber * _Nonnull systemMode MTR_PROVISIONALLY_AVAILABLE; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm index f0869bd61918fb..d3182118beb89c 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm @@ -7073,36 +7073,6 @@ - (NSString *)description @end -@implementation MTRThermostatClusterQueuedPresetStruct -- (instancetype)init -{ - if (self = [super init]) { - - _presetHandle = nil; - - _transitionTimestamp = nil; - } - return self; -} - -- (id)copyWithZone:(NSZone * _Nullable)zone -{ - auto other = [[MTRThermostatClusterQueuedPresetStruct alloc] init]; - - other.presetHandle = self.presetHandle; - other.transitionTimestamp = self.transitionTimestamp; - - return other; -} - -- (NSString *)description -{ - NSString * descriptionString = [NSString stringWithFormat:@"<%@: presetHandle:%@; transitionTimestamp:%@; >", NSStringFromClass([self class]), [_presetHandle base64EncodedStringWithOptions:0], _transitionTimestamp]; - return descriptionString; -} - -@end - @implementation MTRThermostatClusterScheduleTypeStruct - (instancetype)init { diff --git a/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m b/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m index 4c7375c45dd06b..db8bd300df94e1 100644 --- a/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m +++ b/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m @@ -2834,7 +2834,7 @@ - (void)testDataStorageUpdatesWhenRemovingAttributes MTRClusterPath * path = [MTRClusterPath clusterPathWithEndpointID:testEndpoint clusterID:cluster]; if ([cluster isEqualToNumber:@(MTRClusterIDTypeIdentifyID)]) { - MTRDeviceClusterData * data = [device _getClusterDataForPath:path]; + MTRDeviceClusterData * data = [device unitTestGetClusterDataForPath:path]; XCTAssertNotNil(data); XCTAssertNotNil(data.attributes); @@ -2897,7 +2897,7 @@ - (void)testDataStorageUpdatesWhenRemovingAttributes MTRClusterPath * path = [MTRClusterPath clusterPathWithEndpointID:testEndpoint clusterID:cluster]; if ([cluster isEqualToNumber:@(MTRClusterIDTypeIdentifyID)]) { - MTRDeviceClusterData * data = [device _getClusterDataForPath:path]; + MTRDeviceClusterData * data = [device unitTestGetClusterDataForPath:path]; XCTAssertNotNil(data); XCTAssertNotNil(data.attributes); @@ -2937,4 +2937,128 @@ - (void)testDataStorageUpdatesWhenRemovingAttributes XCTAssertFalse([controller isRunning]); } +// Run the test here since detectLeaks is set, and subscription reset needs to not cause leaks +- (void)testMTRDeviceResetSubscription +{ + __auto_type * storageDelegate = [[MTRTestPerControllerStorageWithBulkReadWrite alloc] initWithControllerID:[NSUUID UUID]]; + + __auto_type * factory = [MTRDeviceControllerFactory sharedInstance]; + XCTAssertNotNil(factory); + + __auto_type queue = dispatch_get_main_queue(); + + __auto_type * rootKeys = [[MTRTestKeys alloc] init]; + XCTAssertNotNil(rootKeys); + + __auto_type * operationalKeys = [[MTRTestKeys alloc] init]; + XCTAssertNotNil(operationalKeys); + + NSNumber * nodeID = @(333); + NSNumber * fabricID = @(444); + + NSError * error; + + MTRPerControllerStorageTestsCertificateIssuer * certificateIssuer; + MTRDeviceController * controller = [self startControllerWithRootKeys:rootKeys + operationalKeys:operationalKeys + fabricID:fabricID + nodeID:nodeID + storage:storageDelegate + error:&error + certificateIssuer:&certificateIssuer]; + XCTAssertNil(error); + XCTAssertNotNil(controller); + XCTAssertTrue([controller isRunning]); + + XCTAssertEqualObjects(controller.controllerNodeID, nodeID); + + // Now commission the device, to test that that works. + NSNumber * deviceID = @(22); + certificateIssuer.nextNodeID = deviceID; + [self commissionWithController:controller newNodeID:deviceID]; + + // We should have established CASE using our operational key. + XCTAssertEqual(operationalKeys.signatureCount, 1); + + __auto_type * device = [MTRDevice deviceWithNodeID:deviceID controller:controller]; + __auto_type * delegate = [[MTRDeviceTestDelegate alloc] init]; + + XCTestExpectation * subscriptionExpectation1 = [self expectationWithDescription:@"Subscription has been set up 1"]; + + delegate.onReportEnd = ^{ + [subscriptionExpectation1 fulfill]; + }; + + [device setDelegate:delegate queue:queue]; + + [self waitForExpectations:@[ subscriptionExpectation1 ] timeout:60]; + + // Test 1: test that subscription reset works + + XCTestExpectation * subscriptionExpectation2 = [self expectationWithDescription:@"Subscription has been set up 2"]; + + __weak __auto_type weakDelegate = delegate; + delegate.onReportEnd = ^{ + [subscriptionExpectation2 fulfill]; + // reset callback so expectation not fulfilled twice + __strong __auto_type strongDelegate = weakDelegate; + strongDelegate.onReportEnd = nil; + }; + + // clear cluster data before reset + NSUInteger attributeCountBeforeReset = [device unitTestAttributeCount]; + [device unitTestClearClusterData]; + + [device unitTestResetSubscription]; + + [self waitForExpectations:@[ subscriptionExpectation2 ] timeout:60]; + + // check that in-memory cache has recovered + NSUInteger attributeCountAfterReset = [device unitTestAttributeCount]; + XCTAssertEqual(attributeCountBeforeReset, attributeCountAfterReset); + + // Test 2: simulate a cache purge and loss of storage, to see: + // * that subscription reestablishes + // * the cache is restored + [device unitTestClearClusterData]; + [controller.controllerDataStore clearAllStoredClusterData]; + + NSDictionary * storedClusterData = [controller.controllerDataStore getStoredClusterDataForNodeID:deviceID]; + XCTAssertEqual(storedClusterData.count, 0); + + XCTestExpectation * subscriptionExpectation3 = [self expectationWithDescription:@"Subscription has been set up 3"]; + delegate.onReportEnd = ^{ + [subscriptionExpectation3 fulfill]; + // reset callback so expectation not fulfilled twice + __strong __auto_type strongDelegate = weakDelegate; + strongDelegate.onReportEnd = nil; + }; + + // now get list of clusters, and call clusterDataForPath: to trigger the reset + NSSet * persistedClusters = [device unitTestGetPersistedClusters]; + MTRDeviceClusterData * data = [device unitTestGetClusterDataForPath:persistedClusters.anyObject]; + XCTAssertNil(data); + + // Also call clusterDataForPath: repeatedly to verify in logs that subscription is reset only once + for (MTRClusterPath * path in persistedClusters) { + MTRDeviceClusterData * data = [device unitTestGetClusterDataForPath:path]; + (void) data; // do not assert nil because subscription may happen during this time and already fill in the cache + } + + [self waitForExpectations:@[ subscriptionExpectation3 ] timeout:60]; + + // Verify that after report ends all the cluster data is back + for (MTRClusterPath * path in persistedClusters) { + MTRDeviceClusterData * data = [device unitTestGetClusterDataForPath:path]; + XCTAssertNotNil(data); + } + + // Reset our commissionee. + __auto_type * baseDevice = [MTRBaseDevice deviceWithNodeID:deviceID controller:controller]; + ResetCommissionee(baseDevice, queue, self, kTimeoutInSeconds); + + [controller shutdown]; + XCTAssertFalse([controller isRunning]); +} + @end diff --git a/src/darwin/Framework/CHIPTests/TestHelpers/MTRTestDeclarations.h b/src/darwin/Framework/CHIPTests/TestHelpers/MTRTestDeclarations.h index 0705cb89cb1ff6..46d6c61e950f2d 100644 --- a/src/darwin/Framework/CHIPTests/TestHelpers/MTRTestDeclarations.h +++ b/src/darwin/Framework/CHIPTests/TestHelpers/MTRTestDeclarations.h @@ -47,8 +47,6 @@ NS_ASSUME_NONNULL_BEGIN @interface MTRDevice (Test) - (BOOL)_attributeDataValue:(NSDictionary *)one isEqualToDataValue:(NSDictionary *)theOther; -- (MTRDeviceClusterData *)_getClusterDataForPath:(MTRClusterPath *)path; -- (BOOL)_clusterHasBeenPersisted:(MTRClusterPath *)path; - (NSMutableArray *)arrayOfNumbersFromAttributeValue:(MTRDeviceDataValueDictionary)dataDictionary; @end @@ -79,6 +77,10 @@ NS_ASSUME_NONNULL_BEGIN deviceReportingExcessivelyIntervalThreshold:(NSTimeInterval)deviceReportingExcessivelyIntervalThreshold; - (void)unitTestSetMostRecentReportTimes:(NSMutableArray *)mostRecentReportTimes; - (NSUInteger)unitTestNonnullDelegateCount; +- (void)unitTestResetSubscription; +- (MTRDeviceClusterData *)unitTestGetClusterDataForPath:(MTRClusterPath *)path; +- (NSSet *)unitTestGetPersistedClusters; +- (BOOL)unitTestClusterHasBeenPersisted:(MTRClusterPath *)path; @end #endif diff --git a/src/lib/core/CHIPError.h b/src/lib/core/CHIPError.h index b49088247e126c..23d83d868ea3df 100644 --- a/src/lib/core/CHIPError.h +++ b/src/lib/core/CHIPError.h @@ -1702,18 +1702,18 @@ using CHIP_ERROR = ::chip::ChipError; */ #define CHIP_ERROR_IM_STATUS_CODE_RECEIVED CHIP_CORE_ERROR(0xca) -// AVAILABLEL 0xcb -// AVAILABLEL 0xcc -// AVAILABLEL 0xcd -// AVAILABLEL 0xce -// AVAILABLEL 0xcf -// AVAILABLEL 0xd0 -// AVAILABLEL 0xd1 -// AVAILABLEL 0xd2 -// AVAILABLEL 0xd3 -// AVAILABLEL 0xd4 -// AVAILABLEL 0xd5 -// AVAILABLEL 0xd6 +// AVAILABLE 0xcb +// AVAILABLE 0xcc +// AVAILABLE 0xcd +// AVAILABLE 0xce +// AVAILABLE 0xcf +// AVAILABLE 0xd0 +// AVAILABLE 0xd1 +// AVAILABLE 0xd2 +// AVAILABLE 0xd3 +// AVAILABLE 0xd4 +// AVAILABLE 0xd5 +// AVAILABLE 0xd6 /** * @def CHIP_ERROR_IM_MALFORMED_DATA_VERSION_FILTER_IB diff --git a/src/lib/dnssd/Advertiser.h b/src/lib/dnssd/Advertiser.h index 02888181f98181..88b86ef871b91d 100644 --- a/src/lib/dnssd/Advertiser.h +++ b/src/lib/dnssd/Advertiser.h @@ -55,6 +55,14 @@ enum class ICDModeAdvertise : uint8_t kLIT, // The ICD is currently operating as a LIT. ICD=1 in DNS-SD key/value pairs. }; +enum class TCPModeAdvertise : uint16_t +{ + kNone = 0, // The device does not support TCP. + kTCPClient = 1 << 1, // The device supports the TCP client. + kTCPServer = 1 << 2, // The device supports the TCP server. + kTCPClientServer = (kTCPClient | kTCPServer), // The device supports both the TCP client and server. +}; + template class BaseAdvertisingParams { @@ -102,13 +110,12 @@ class BaseAdvertisingParams } const std::optional & GetLocalMRPConfig() const { return mLocalMRPConfig; } - // NOTE: The SetTcpSupported API is deprecated and not compliant with 1.3. T flag should not be set. - Derived & SetTcpSupported(std::optional tcpSupported) + Derived & SetTCPSupportModes(TCPModeAdvertise tcpSupportModes) { - mTcpSupported = tcpSupported; + mTcpSupportModes = tcpSupportModes; return *reinterpret_cast(this); } - std::optional GetTcpSupported() const { return mTcpSupported; } + TCPModeAdvertise GetTCPSupportModes() const { return mTcpSupportModes; } Derived & SetICDModeToAdvertise(ICDModeAdvertise operatingMode) { @@ -124,7 +131,7 @@ class BaseAdvertisingParams uint8_t mMacStorage[kMaxMacSize] = {}; size_t mMacLength = 0; std::optional mLocalMRPConfig; - std::optional mTcpSupported; + TCPModeAdvertise mTcpSupportModes = TCPModeAdvertise::kNone; ICDModeAdvertise mICDModeAdvertise = ICDModeAdvertise::kNone; }; diff --git a/src/lib/dnssd/Advertiser_ImplMinimalMdns.cpp b/src/lib/dnssd/Advertiser_ImplMinimalMdns.cpp index 5ca002673cd4c9..ce46137c9a00e2 100644 --- a/src/lib/dnssd/Advertiser_ImplMinimalMdns.cpp +++ b/src/lib/dnssd/Advertiser_ImplMinimalMdns.cpp @@ -278,10 +278,10 @@ class AdvertiserMinMdns : public ServiceAdvertiser, } } - if (const auto & tcpSupported = params.GetTcpSupported(); tcpSupported.has_value()) + if (params.GetTCPSupportModes() != TCPModeAdvertise::kNone) { - size_t writtenCharactersNumber = - static_cast(snprintf(storage.tcpSupportedBuf, sizeof(storage.tcpSupportedBuf), "T=%d", *tcpSupported)); + size_t writtenCharactersNumber = static_cast(snprintf(storage.tcpSupportedBuf, sizeof(storage.tcpSupportedBuf), + "T=%d", static_cast(params.GetTCPSupportModes()))); VerifyOrReturnError((writtenCharactersNumber > 0) && (writtenCharactersNumber < sizeof(storage.tcpSupportedBuf)), CHIP_ERROR_INVALID_STRING_LENGTH); txtFields[numTxtFields++] = storage.tcpSupportedBuf; diff --git a/src/lib/dnssd/Discovery_ImplPlatform.cpp b/src/lib/dnssd/Discovery_ImplPlatform.cpp index beb733b1276a3f..e214aed4f80da6 100644 --- a/src/lib/dnssd/Discovery_ImplPlatform.cpp +++ b/src/lib/dnssd/Discovery_ImplPlatform.cpp @@ -240,7 +240,8 @@ CHIP_ERROR CopyTxtRecord(TxtFieldKey key, char * buffer, size_t bufferLen, const switch (key) { case TxtFieldKey::kTcpSupported: - return CopyTextRecordValue(buffer, bufferLen, params.GetTcpSupported()); + VerifyOrReturnError(params.GetTCPSupportModes() != TCPModeAdvertise::kNone, CHIP_ERROR_UNINITIALIZED); + return CopyTextRecordValue(buffer, bufferLen, to_underlying(params.GetTCPSupportModes())); case TxtFieldKey::kSessionIdleInterval: #if CHIP_CONFIG_ENABLE_ICD_SERVER // A ICD operating as a LIT should not advertise its slow polling interval diff --git a/src/lib/dnssd/minimal_mdns/tests/TestAdvertiser.cpp b/src/lib/dnssd/minimal_mdns/tests/TestAdvertiser.cpp index 1a66865c143a2e..ea85f74d2be11a 100644 --- a/src/lib/dnssd/minimal_mdns/tests/TestAdvertiser.cpp +++ b/src/lib/dnssd/minimal_mdns/tests/TestAdvertiser.cpp @@ -81,7 +81,8 @@ OperationalAdvertisingParameters operationalParams1 = .SetPort(CHIP_PORT) .EnableIpV4(true) .SetLocalMRPConfig(std::make_optional( - 32_ms32, 30_ms32)); // Match SII, SAI. SAT not provided so it uses default 4000ms + 32_ms32, 30_ms32)) // Match SII, SAI. SAT not provided so it uses default 4000ms + .SetTCPSupportModes(chip::Dnssd::TCPModeAdvertise::kTCPClientServer); OperationalAdvertisingParameters operationalParams2 = OperationalAdvertisingParameters().SetPeerId(kPeerId2).SetMac(ByteSpan(kMac)).SetPort(CHIP_PORT).EnableIpV4(true); OperationalAdvertisingParameters operationalParams3 = @@ -92,7 +93,7 @@ OperationalAdvertisingParameters operationalParams5 = OperationalAdvertisingParameters().SetPeerId(kPeerId5).SetMac(ByteSpan(kMac)).SetPort(CHIP_PORT).EnableIpV4(true); OperationalAdvertisingParameters operationalParams6 = OperationalAdvertisingParameters().SetPeerId(kPeerId6).SetMac(ByteSpan(kMac)).SetPort(CHIP_PORT).EnableIpV4(true); -const QNamePart txtOperational1Parts[] = { "SII=32", "SAI=30", "SAT=4000" }; +const QNamePart txtOperational1Parts[] = { "SII=32", "SAI=30", "SAT=4000", "T=6" }; PtrResourceRecord ptrOperationalService = PtrResourceRecord(kDnsSdQueryName, kMatterOperationalQueryName); PtrResourceRecord ptrOperational1 = PtrResourceRecord(kMatterOperationalQueryName, kInstanceName1); SrvResourceRecord srvOperational1 = SrvResourceRecord(kInstanceName1, kHostnameName, CHIP_PORT); diff --git a/src/lib/shell/MainLoopDefault.cpp b/src/lib/shell/MainLoopDefault.cpp index c83fc96e4a1413..dba76397927f2c 100644 --- a/src/lib/shell/MainLoopDefault.cpp +++ b/src/lib/shell/MainLoopDefault.cpp @@ -168,13 +168,7 @@ void ProcessShellLine(intptr_t args) if (retval != CHIP_NO_ERROR) { - char errorStr[160]; - bool errorStrFound = FormatCHIPError(errorStr, sizeof(errorStr), retval); - if (!errorStrFound) - { - errorStr[0] = 0; - } - streamer_printf(streamer_get(), "Error %s: %s\r\n", argv[0], errorStr); + streamer_printf(streamer_get(), "Error %s: %" CHIP_ERROR_FORMAT "\r\n", argv[0], retval.Format()); } else { diff --git a/src/platform/ESP32/ESP32Config.cpp b/src/platform/ESP32/ESP32Config.cpp index 04e02f63004207..c94de5c04b85b2 100644 --- a/src/platform/ESP32/ESP32Config.cpp +++ b/src/platform/ESP32/ESP32Config.cpp @@ -77,6 +77,9 @@ const ESP32Config::Key ESP32Config::kConfigKey_ProductURL = { kConfig const ESP32Config::Key ESP32Config::kConfigKey_SupportedCalTypes = { kConfigNamespace_ChipFactory, "cal-types" }; const ESP32Config::Key ESP32Config::kConfigKey_SupportedLocaleSize = { kConfigNamespace_ChipFactory, "locale-sz" }; const ESP32Config::Key ESP32Config::kConfigKey_RotatingDevIdUniqueId = { kConfigNamespace_ChipFactory, "rd-id-uid" }; +const ESP32Config::Key ESP32Config::kConfigKey_ProductFinish = { kConfigNamespace_ChipFactory, "product-finish" }; +const ESP32Config::Key ESP32Config::kConfigKey_ProductColor = { kConfigNamespace_ChipFactory, "product-color" }; +const ESP32Config::Key ESP32Config::kConfigKey_PartNumber = { kConfigNamespace_ChipFactory, "part-number" }; const ESP32Config::Key ESP32Config::kConfigKey_LocationCapability = { kConfigNamespace_ChipFactory, "loc-capability" }; // Keys stored in the chip-config namespace diff --git a/src/platform/ESP32/ESP32Config.h b/src/platform/ESP32/ESP32Config.h index 5804f53105c20c..218f2354b2b358 100644 --- a/src/platform/ESP32/ESP32Config.h +++ b/src/platform/ESP32/ESP32Config.h @@ -75,10 +75,13 @@ class ESP32Config static const Key kConfigKey_ProductId; static const Key kConfigKey_ProductName; static const Key kConfigKey_ProductLabel; + static const Key kConfigKey_PartNumber; static const Key kConfigKey_ProductURL; static const Key kConfigKey_SupportedCalTypes; static const Key kConfigKey_SupportedLocaleSize; static const Key kConfigKey_RotatingDevIdUniqueId; + static const Key kConfigKey_ProductFinish; + static const Key kConfigKey_ProductColor; static const Key kConfigKey_LocationCapability; // CHIP Config keys diff --git a/src/platform/ESP32/ESP32FactoryDataProvider.cpp b/src/platform/ESP32/ESP32FactoryDataProvider.cpp index 95d2be5c5d1957..ace2a087de144b 100644 --- a/src/platform/ESP32/ESP32FactoryDataProvider.cpp +++ b/src/platform/ESP32/ESP32FactoryDataProvider.cpp @@ -245,6 +245,32 @@ CHIP_ERROR ESP32FactoryDataProvider::GetManufacturingDate(uint16_t & year, uint8 return GenericDeviceInstanceInfoProvider::GetManufacturingDate(year, month, day); } +CHIP_ERROR ESP32FactoryDataProvider::GetProductFinish(app::Clusters::BasicInformation::ProductFinishEnum * finish) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + uint32_t productFinish = 0; + + err = ESP32Config::ReadConfigValue(ESP32Config::kConfigKey_ProductFinish, productFinish); + ReturnErrorCodeIf(err != CHIP_NO_ERROR, CHIP_ERROR_NOT_IMPLEMENTED); + + *finish = static_cast(productFinish); + + return err; +} + +CHIP_ERROR ESP32FactoryDataProvider::GetProductPrimaryColor(app::Clusters::BasicInformation::ColorEnum * primaryColor) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + uint32_t color = 0; + + err = ESP32Config::ReadConfigValue(ESP32Config::kConfigKey_ProductColor, color); + ReturnErrorCodeIf(err != CHIP_NO_ERROR, CHIP_ERROR_NOT_IMPLEMENTED); + + *primaryColor = static_cast(color); + + return err; +} + CHIP_ERROR ESP32FactoryDataProvider::GetHardwareVersion(uint16_t & hardwareVersion) { return GenericDeviceInstanceInfoProvider::GetHardwareVersion(hardwareVersion); @@ -252,7 +278,12 @@ CHIP_ERROR ESP32FactoryDataProvider::GetHardwareVersion(uint16_t & hardwareVersi CHIP_ERROR ESP32FactoryDataProvider::GetPartNumber(char * buf, size_t bufSize) { - return GenericDeviceInstanceInfoProvider::GetPartNumber(buf, bufSize); + CHIP_ERROR err = ESP32Config::ReadConfigValueStr(ESP32Config::kConfigKey_PartNumber, buf, bufSize, bufSize); + if (err == CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND) + { + return CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND; + } + return err; } #endif // CHIP_DEVICE_CONFIG_ENABLE_DEVICE_INSTANCE_INFO_PROVIDER diff --git a/src/platform/ESP32/ESP32FactoryDataProvider.h b/src/platform/ESP32/ESP32FactoryDataProvider.h index 1d78f2c2e8fa0b..08227ed4ed143b 100644 --- a/src/platform/ESP32/ESP32FactoryDataProvider.h +++ b/src/platform/ESP32/ESP32FactoryDataProvider.h @@ -96,6 +96,8 @@ class ESP32FactoryDataProvider : public CommissionableDataProvider, CHIP_ERROR GetManufacturingDate(uint16_t & year, uint8_t & month, uint8_t & day) override; CHIP_ERROR GetPartNumber(char * buf, size_t bufSize) override; CHIP_ERROR GetHardwareVersion(uint16_t & hardwareVersion) override; + CHIP_ERROR GetProductFinish(app::Clusters::BasicInformation::ProductFinishEnum * finish) override; + CHIP_ERROR GetProductPrimaryColor(app::Clusters::BasicInformation::ColorEnum * primaryColor) override; #endif // CHIP_DEVICE_CONFIG_ENABLE_DEVICE_INSTANCE_INFO_PROVIDER private: diff --git a/src/platform/Infineon/PSOC6/BUILD.gn b/src/platform/Infineon/PSOC6/BUILD.gn index bc048a31d3a9b7..3fd150eeeaae13 100644 --- a/src/platform/Infineon/PSOC6/BUILD.gn +++ b/src/platform/Infineon/PSOC6/BUILD.gn @@ -48,10 +48,10 @@ static_library("PSOC6") { "NetworkCommissioningWiFiDriver.cpp", "OTAImageProcessorImpl.cpp", "OTAImageProcessorImpl.h", - "P6Config.cpp", - "P6Config.h", - "P6Utils.cpp", - "P6Utils.h", + "PSOC6Config.cpp", + "PSOC6Config.h", + "PSOC6Utils.cpp", + "PSOC6Utils.h", "PlatformManagerImpl.cpp", "PlatformManagerImpl.h", "SystemPlatformConfig.h", diff --git a/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.cpp b/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.cpp index 67ed7f1d8eab4b..220caf0bdddc2f 100644 --- a/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.cpp +++ b/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.cpp @@ -28,7 +28,7 @@ #include #include -#include +#include #include namespace chip { @@ -48,13 +48,13 @@ CHIP_ERROR ConfigurationManagerImpl::Init() uint32_t rebootCount; // Save out software version on first boot - if (!P6Config::ConfigValueExists(P6Config::kConfigKey_SoftwareVersion)) + if (!PSOC6Config::ConfigValueExists(PSOC6Config::kConfigKey_SoftwareVersion)) { err = StoreSoftwareVersion(CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION); SuccessOrExit(err); } - if (P6Config::ConfigValueExists(P6Config::kCounterKey_RebootCount)) + if (PSOC6Config::ConfigValueExists(PSOC6Config::kCounterKey_RebootCount)) { err = GetRebootCount(rebootCount); SuccessOrExit(err); @@ -69,14 +69,14 @@ CHIP_ERROR ConfigurationManagerImpl::Init() SuccessOrExit(err); } - if (!P6Config::ConfigValueExists(P6Config::kCounterKey_TotalOperationalHours)) + if (!PSOC6Config::ConfigValueExists(PSOC6Config::kCounterKey_TotalOperationalHours)) { err = StoreTotalOperationalHours(0); SuccessOrExit(err); } // Initialize the generic implementation base class. - err = Internal::GenericConfigurationManagerImpl::Init(); + err = Internal::GenericConfigurationManagerImpl::Init(); VerifyOrReturnError(CHIP_NO_ERROR == err, err); exit: @@ -85,32 +85,32 @@ CHIP_ERROR ConfigurationManagerImpl::Init() CHIP_ERROR ConfigurationManagerImpl::GetRebootCount(uint32_t & rebootCount) { - return ReadConfigValue(P6Config::kCounterKey_RebootCount, rebootCount); + return ReadConfigValue(PSOC6Config::kCounterKey_RebootCount, rebootCount); } CHIP_ERROR ConfigurationManagerImpl::StoreRebootCount(uint32_t rebootCount) { - return WriteConfigValue(P6Config::kCounterKey_RebootCount, rebootCount); + return WriteConfigValue(PSOC6Config::kCounterKey_RebootCount, rebootCount); } CHIP_ERROR ConfigurationManagerImpl::GetSoftwareVersion(uint32_t & softwareVer) { - return ReadConfigValue(P6Config::kConfigKey_SoftwareVersion, softwareVer); + return ReadConfigValue(PSOC6Config::kConfigKey_SoftwareVersion, softwareVer); } CHIP_ERROR ConfigurationManagerImpl::StoreSoftwareVersion(uint32_t softwareVer) { - return WriteConfigValue(P6Config::kConfigKey_SoftwareVersion, softwareVer); + return WriteConfigValue(PSOC6Config::kConfigKey_SoftwareVersion, softwareVer); } CHIP_ERROR ConfigurationManagerImpl::GetTotalOperationalHours(uint32_t & totalOperationalHours) { - return ReadConfigValue(P6Config::kCounterKey_TotalOperationalHours, totalOperationalHours); + return ReadConfigValue(PSOC6Config::kCounterKey_TotalOperationalHours, totalOperationalHours); } CHIP_ERROR ConfigurationManagerImpl::StoreTotalOperationalHours(uint32_t totalOperationalHours) { - return WriteConfigValue(P6Config::kCounterKey_TotalOperationalHours, totalOperationalHours); + return WriteConfigValue(PSOC6Config::kCounterKey_TotalOperationalHours, totalOperationalHours); } CHIP_ERROR ConfigurationManagerImpl::GetPrimaryWiFiMACAddress(uint8_t * buf) @@ -163,62 +163,62 @@ CHIP_ERROR ConfigurationManagerImpl::WritePersistedStorageValue(::chip::Platform CHIP_ERROR ConfigurationManagerImpl::ReadConfigValue(Key key, bool & val) { - return P6Config::ReadConfigValue(key, val); + return PSOC6Config::ReadConfigValue(key, val); } CHIP_ERROR ConfigurationManagerImpl::ReadConfigValue(Key key, uint32_t & val) { - return P6Config::ReadConfigValue(key, val); + return PSOC6Config::ReadConfigValue(key, val); } CHIP_ERROR ConfigurationManagerImpl::ReadConfigValue(Key key, uint64_t & val) { - return P6Config::ReadConfigValue(key, val); + return PSOC6Config::ReadConfigValue(key, val); } CHIP_ERROR ConfigurationManagerImpl::ReadConfigValueStr(Key key, char * buf, size_t bufSize, size_t & outLen) { - return P6Config::ReadConfigValueStr(key, buf, bufSize, outLen); + return PSOC6Config::ReadConfigValueStr(key, buf, bufSize, outLen); } CHIP_ERROR ConfigurationManagerImpl::ReadConfigValueBin(Key key, uint8_t * buf, size_t bufSize, size_t & outLen) { - return P6Config::ReadConfigValueBin(key, buf, bufSize, outLen); + return PSOC6Config::ReadConfigValueBin(key, buf, bufSize, outLen); } CHIP_ERROR ConfigurationManagerImpl::WriteConfigValue(Key key, bool val) { - return P6Config::WriteConfigValue(key, val); + return PSOC6Config::WriteConfigValue(key, val); } CHIP_ERROR ConfigurationManagerImpl::WriteConfigValue(Key key, uint32_t val) { - return P6Config::WriteConfigValue(key, val); + return PSOC6Config::WriteConfigValue(key, val); } CHIP_ERROR ConfigurationManagerImpl::WriteConfigValue(Key key, uint64_t val) { - return P6Config::WriteConfigValue(key, val); + return PSOC6Config::WriteConfigValue(key, val); } CHIP_ERROR ConfigurationManagerImpl::WriteConfigValueStr(Key key, const char * str) { - return P6Config::WriteConfigValueStr(key, str); + return PSOC6Config::WriteConfigValueStr(key, str); } CHIP_ERROR ConfigurationManagerImpl::WriteConfigValueStr(Key key, const char * str, size_t strLen) { - return P6Config::WriteConfigValueStr(key, str, strLen); + return PSOC6Config::WriteConfigValueStr(key, str, strLen); } CHIP_ERROR ConfigurationManagerImpl::WriteConfigValueBin(Key key, const uint8_t * data, size_t dataLen) { - return P6Config::WriteConfigValueBin(key, data, dataLen); + return PSOC6Config::WriteConfigValueBin(key, data, dataLen); } void ConfigurationManagerImpl::RunConfigUnitTest(void) { - P6Config::RunConfigUnitTest(); + PSOC6Config::RunConfigUnitTest(); } void ConfigurationManagerImpl::DoFactoryReset(intptr_t arg) @@ -227,7 +227,7 @@ void ConfigurationManagerImpl::DoFactoryReset(intptr_t arg) ChipLogProgress(DeviceLayer, "Performing factory reset"); - err = P6Config::FactoryResetConfig(); + err = PSOC6Config::FactoryResetConfig(); if (err != CHIP_NO_ERROR) { ChipLogError(DeviceLayer, "FactoryResetConfig() failed: %s", ErrorStr(err)); diff --git a/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.h b/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.h index 1327b3bc546214..4ad9fef2c55a92 100644 --- a/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.h +++ b/src/platform/Infineon/PSOC6/ConfigurationManagerImpl.h @@ -27,7 +27,7 @@ #include -#include "P6Config.h" +#include "PSOC6Config.h" namespace chip { namespace DeviceLayer { @@ -35,7 +35,7 @@ namespace DeviceLayer { /** * Concrete implementation of the ConfigurationManager singleton object for the PSoC6 platform. */ -class ConfigurationManagerImpl : public Internal::GenericConfigurationManagerImpl +class ConfigurationManagerImpl : public Internal::GenericConfigurationManagerImpl { public: CHIP_ERROR GetRebootCount(uint32_t & rebootCount) override; diff --git a/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp b/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp index b78f6fe757286b..a2f7fae9f32604 100644 --- a/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp +++ b/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp @@ -35,15 +35,17 @@ #include #include -#include +#include #include +#include "cy_network_mw_core.h" +#include "cy_nw_helper.h" + #include #include #include #include -#include "cy_network_mw_core.h" #include "lwip/opt.h" #include #include @@ -55,6 +57,7 @@ using namespace ::chip; using namespace ::chip::Inet; using namespace ::chip::System; +using namespace ::chip::TLV; namespace chip { namespace DeviceLayer { @@ -64,7 +67,7 @@ ConnectivityManagerImpl ConnectivityManagerImpl::sInstance; ConnectivityManager::WiFiStationMode ConnectivityManagerImpl::_GetWiFiStationMode(void) { uint32_t curWiFiMode; - mWiFiStationMode = (Internal::P6Utils::wifi_get_mode(curWiFiMode) == CHIP_NO_ERROR && + mWiFiStationMode = (Internal::PSOC6Utils::wifi_get_mode(curWiFiMode) == CHIP_NO_ERROR && (curWiFiMode == WIFI_MODE_APSTA || curWiFiMode == WIFI_MODE_STA)) ? kWiFiStationMode_Enabled : kWiFiStationMode_Disabled; @@ -103,7 +106,7 @@ bool ConnectivityManagerImpl::_IsWiFiStationEnabled(void) bool ConnectivityManagerImpl::_IsWiFiStationProvisioned(void) { - return Internal::P6Utils::IsStationProvisioned(); + return Internal::PSOC6Utils::IsStationProvisioned(); } void ConnectivityManagerImpl::_ClearWiFiStationProvision(void) @@ -113,7 +116,7 @@ void ConnectivityManagerImpl::_ClearWiFiStationProvision(void) wifi_config_t stationConfig; memset(&stationConfig, 0, sizeof(stationConfig)); - Internal::P6Utils::p6_wifi_set_config(WIFI_IF_STA, &stationConfig); + Internal::PSOC6Utils::p6_wifi_set_config(WIFI_IF_STA, &stationConfig); DeviceLayer::SystemLayer().ScheduleWork(DriveStationState, NULL); DeviceLayer::SystemLayer().ScheduleWork(DriveAPState, NULL); @@ -210,8 +213,8 @@ CHIP_ERROR ConnectivityManagerImpl::_Init() mWiFiAPIdleTimeout = System::Clock::Milliseconds32(CHIP_DEVICE_CONFIG_WIFI_AP_IDLE_TIMEOUT); mFlags.SetRaw(0); - // Ensure that P6 station mode is enabled. - err = Internal::P6Utils::EnableStationMode(); + // Ensure that PSOC6 station mode is enabled. + err = Internal::PSOC6Utils::EnableStationMode(); SuccessOrExit(err); // If there is no persistent station provision... if (!IsWiFiStationProvisioned()) @@ -230,7 +233,7 @@ CHIP_ERROR ConnectivityManagerImpl::_Init() memcpy(wifiConfig.sta.password, CHIP_DEVICE_CONFIG_DEFAULT_STA_PASSWORD, min(strlen(CHIP_DEVICE_CONFIG_DEFAULT_STA_PASSWORD), sizeof(wifiConfig.sta.password))); wifiConfig.sta.security = CHIP_DEVICE_CONFIG_DEFAULT_STA_SECURITY; - err = Internal::P6Utils::p6_wifi_set_config(WIFI_IF_STA, &wifiConfig); + err = Internal::PSOC6Utils::p6_wifi_set_config(WIFI_IF_STA, &wifiConfig); SuccessOrExit(err); // Enable WiFi station mode. @@ -247,7 +250,7 @@ CHIP_ERROR ConnectivityManagerImpl::_Init() ReturnErrorOnFailure(SetWiFiStationMode(kWiFiStationMode_Enabled)); } // Force AP mode off for now. - err = Internal::P6Utils::SetAPMode(false); + err = Internal::PSOC6Utils::SetAPMode(false); SuccessOrExit(err); // Queue work items to bootstrap the station state machines once the Chip event loop is running. @@ -375,10 +378,10 @@ CHIP_ERROR ConnectivityManagerImpl::ConfigureWiFiAP() wifiConfig.ap.ip_settings.gateway = ap_mode_ip_settings.gateway; ChipLogProgress(DeviceLayer, "Configuring WiFi AP: SSID %s, channel %u", wifiConfig.ap.ssid, wifiConfig.ap.channel); - err = Internal::P6Utils::p6_wifi_set_config(WIFI_IF_AP, &wifiConfig); + err = Internal::PSOC6Utils::p6_wifi_set_config(WIFI_IF_AP, &wifiConfig); SuccessOrExit(err); - err = Internal::P6Utils::p6_start_ap(); + err = Internal::PSOC6Utils::p6_start_ap(); if (err != CHIP_NO_ERROR) { ChipLogError(DeviceLayer, "p6_start_ap failed: %s", chip::ErrorStr(err)); @@ -394,8 +397,8 @@ void ConnectivityManagerImpl::DriveAPState() WiFiAPState targetState; bool APModeEnabled; - // Determine if AP mode is currently enabled in the P6 WiFi layer. - err = Internal::P6Utils::IsAPEnabled(APModeEnabled); + // Determine if AP mode is currently enabled in the PSOC6 WiFi layer. + err = Internal::PSOC6Utils::IsAPEnabled(APModeEnabled); SuccessOrExit(err); // Adjust the Connectivity Manager's AP state to match the state in the WiFi layer. @@ -470,13 +473,13 @@ void ConnectivityManagerImpl::DriveAPState() { // If the target state is 'Active' and the current state is NOT 'Activating', enable // and configure the AP interface, and then enter the 'Activating' state. Eventually - // a SYSTEM_EVENT_AP_START event will be received from the P6 WiFi layer which will + // a SYSTEM_EVENT_AP_START event will be received from the PSOC6 WiFi layer which will // cause the state to transition to 'Active'. if (targetState == kWiFiAPState_Active) { if (mWiFiAPState != kWiFiAPState_Active) { - err = Internal::P6Utils::SetAPMode(true); + err = Internal::PSOC6Utils::SetAPMode(true); SuccessOrExit(err); err = ConfigureWiFiAP(); SuccessOrExit(err); @@ -491,9 +494,9 @@ void ConnectivityManagerImpl::DriveAPState() { if (mWiFiAPState != kWiFiAPState_Deactivating) { - err = Internal::P6Utils::SetAPMode(false); + err = Internal::PSOC6Utils::SetAPMode(false); SuccessOrExit(err); - err = Internal::P6Utils::p6_stop_ap(); + err = Internal::PSOC6Utils::p6_stop_ap(); SuccessOrExit(err); ChangeWiFiAPState(kWiFiAPState_Deactivating); } @@ -505,8 +508,8 @@ void ConnectivityManagerImpl::DriveAPState() if (err != CHIP_NO_ERROR && mWiFiAPMode != kWiFiAPMode_ApplicationControlled) { SetWiFiAPMode(kWiFiAPMode_Disabled); - Internal::P6Utils::SetAPMode(false); - Internal::P6Utils::p6_stop_ap(); + Internal::PSOC6Utils::SetAPMode(false); + Internal::PSOC6Utils::p6_stop_ap(); } } @@ -518,17 +521,17 @@ void ConnectivityManagerImpl::DriveStationState() // If the station interface is NOT under application control... if (mWiFiStationMode != kWiFiStationMode_ApplicationControlled) { - // Ensure that the P6 WiFi layer is started. + // Ensure that the PSOC6 WiFi layer is started. err = WiFi_init(); SuccessOrExit(err); - // Ensure that station mode is enabled in the P6 WiFi layer. - err = Internal::P6Utils::EnableStationMode(); + // Ensure that station mode is enabled in the PSOC6 WiFi layer. + err = Internal::PSOC6Utils::EnableStationMode(); SuccessOrExit(err); } - // Determine if the P6 WiFi layer thinks the station interface is currently connected. - err = Internal::P6Utils::IsStationConnected(stationConnected); + // Determine if the PSOC6 WiFi layer thinks the station interface is currently connected. + err = Internal::PSOC6Utils::IsStationConnected(stationConnected); SuccessOrExit(err); // If the station interface is currently connected ... if (stationConnected) @@ -549,7 +552,7 @@ void ConnectivityManagerImpl::DriveStationState() (mWiFiStationMode != kWiFiStationMode_Enabled || !IsWiFiStationProvisioned())) { ChipLogProgress(DeviceLayer, "Disconnecting WiFi station interface"); - err = Internal::P6Utils::p6_wifi_disconnect(); + err = Internal::PSOC6Utils::p6_wifi_disconnect(); if (err != CHIP_NO_ERROR) { ChipLogError(DeviceLayer, "p6_wifi_disconnect() failed: %s", chip::ErrorStr(err)); @@ -593,7 +596,7 @@ void ConnectivityManagerImpl::DriveStationState() { ChangeWiFiStationState(kWiFiStationState_Connecting); ChipLogProgress(DeviceLayer, "Attempting to connect WiFi station interface"); - err = Internal::P6Utils::p6_wifi_connect(); + err = Internal::PSOC6Utils::p6_wifi_connect(); if (err != CHIP_NO_ERROR) { ChipLogError(DeviceLayer, "p6_wifi_connect() failed: %s", chip::ErrorStr(err)); @@ -632,7 +635,7 @@ void ConnectivityManagerImpl::UpdateInternetConnectivityState(void) struct netif * net_interface = NULL; IPAddress addr; bool stationConnected; - Internal::P6Utils::IsStationConnected(stationConnected); + Internal::PSOC6Utils::IsStationConnected(stationConnected); ChipLogProgress(DeviceLayer, "UpdateInternetConnectivityState"); // If the WiFi station is currently in the connected state... @@ -705,7 +708,7 @@ CHIP_ERROR ConnectivityManagerImpl::WiFi_init(void) { CHIP_ERROR err = CHIP_NO_ERROR; cy_rslt_t result = CY_RSLT_SUCCESS; - err = Internal::P6Utils::StartWiFiLayer(); + err = Internal::PSOC6Utils::StartWiFiLayer(); SuccessOrExit(err); /* Register event callback */ if (eventcallback == false) @@ -726,7 +729,7 @@ CHIP_ERROR ConnectivityManagerImpl::WiFi_init(void) CHIP_ERROR ConnectivityManagerImpl::ping_thread() { CHIP_ERROR err = CHIP_NO_ERROR; - err = Internal::P6Utils::ping_init(); + err = Internal::PSOC6Utils::ping_init(); return err; } diff --git a/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp index b09fd83cecc5df..0abd1cba0dd5ad 100644 --- a/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp +++ b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.cpp @@ -1,6 +1,7 @@ /* * * Copyright (c) 2021-2022 Project CHIP Authors + * Copyright (c) 2024 Infineon Technologies, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,18 +19,19 @@ /** * @file * Provides an implementation of the DiagnosticDataProvider object - * for P6 platform. + * for PSOC6 platform. */ #include #include "cy_network_mw_core.h" +#include "cy_nw_helper.h" #include "cyhal_system.h" #include #include #include #include -#include +#include namespace chip { namespace DeviceLayer { @@ -43,7 +45,7 @@ DiagnosticDataProviderImpl & DiagnosticDataProviderImpl::GetDefaultInstance() CHIP_ERROR DiagnosticDataProviderImpl::GetCurrentHeapFree(uint64_t & currentHeapFree) { heap_info_t heap; - Internal::P6Utils::heap_usage(&heap); + Internal::PSOC6Utils::heap_usage(&heap); currentHeapFree = static_cast(heap.HeapFree); return CHIP_NO_ERROR; } @@ -52,7 +54,7 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetCurrentHeapUsed(uint64_t & currentHeap { // Calculate the Heap used based on Total heap - Free heap heap_info_t heap; - Internal::P6Utils::heap_usage(&heap); + Internal::PSOC6Utils::heap_usage(&heap); currentHeapUsed = static_cast(heap.HeapUsed); return CHIP_NO_ERROR; } @@ -60,7 +62,7 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetCurrentHeapUsed(uint64_t & currentHeap CHIP_ERROR DiagnosticDataProviderImpl::GetCurrentHeapHighWatermark(uint64_t & currentHeapHighWatermark) { heap_info_t heap; - Internal::P6Utils::heap_usage(&heap); + Internal::PSOC6Utils::heap_usage(&heap); currentHeapHighWatermark = static_cast(heap.HeapMax); return CHIP_NO_ERROR; } @@ -506,7 +508,7 @@ void DiagnosticDataProviderImpl::xtlv_buffer_parsing(const uint8_t * tlv_buf, ui wl_cnt_ge40mcst_v1_t cnt_ge40; /* parse the tlv buffer and populate the cnt and cnt_ge40 buffer with the counter values */ - Internal::P6Utils::unpack_xtlv_buf(tlv_buf, buflen, &cnt, &cnt_ge40); + Internal::PSOC6Utils::unpack_xtlv_buf(tlv_buf, buflen, &cnt, &cnt_ge40); /* Read the counter based on the Counttype passed */ ReadCounters(Counttype, count, &cnt, &cnt_ge40); @@ -571,17 +573,20 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetThreadMetrics(ThreadMetrics ** threadM { ThreadMetrics * thread = (ThreadMetrics *) pvPortMalloc(sizeof(ThreadMetrics)); - Platform::CopyString(thread->NameBuf, taskStatusArray[x].pcTaskName); - thread->name.Emplace(CharSpan::fromCharString(thread->NameBuf)); - thread->id = taskStatusArray[x].xTaskNumber; + if (thread != NULL) + { + Platform::CopyString(thread->NameBuf, taskStatusArray[x].pcTaskName); + thread->name.Emplace(CharSpan::fromCharString(thread->NameBuf)); + thread->id = taskStatusArray[x].xTaskNumber; - thread->stackFreeMinimum.Emplace(taskStatusArray[x].usStackHighWaterMark); - /* Unsupported metrics */ - thread->stackSize.Emplace(0); - thread->stackFreeCurrent.Emplace(0); + thread->stackFreeMinimum.Emplace(taskStatusArray[x].usStackHighWaterMark); + /* Unsupported metrics */ + thread->stackSize.Emplace(0); + thread->stackFreeCurrent.Emplace(0); - thread->Next = head; - head = thread; + thread->Next = head; + head = thread; + } } *threadMetricsOut = head; diff --git a/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.h b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.h index f3e625d787a9e5..2d02050a9ddb68 100644 --- a/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.h +++ b/src/platform/Infineon/PSOC6/DiagnosticDataProviderImpl.h @@ -31,7 +31,7 @@ #include "whd_wlioctl.h" #include #include -#include +#include #define PHYRATE_KPBS_BYTES_PER_SEC 125 diff --git a/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.cpp b/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.cpp index e38d41e47fc61a..fe60d50a2823ae 100644 --- a/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.cpp +++ b/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.cpp @@ -18,7 +18,7 @@ /** * @file - * Platform-specific key value storage implementation for P6 + * Platform-specific key value storage implementation for PSOC6 */ #include "cy_result.h" diff --git a/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.h b/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.h index 62bead34c37033..5300d06d8ce014 100644 --- a/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.h +++ b/src/platform/Infineon/PSOC6/KeyValueStoreManagerImpl.h @@ -18,7 +18,7 @@ /** * @file - * Platform-specific key value storage implementation for P6. + * Platform-specific key value storage implementation for PSOC6. * */ @@ -71,7 +71,7 @@ inline KeyValueStoreManager & KeyValueStoreMgr(void) * Returns the platform-specific implementation of the KeyValueStoreManager singleton object. * * Chip applications can use this to gain access to features of the KeyValueStoreManager - * that are specific to the P6 platform. + * that are specific to the PSOC6 platform. */ inline KeyValueStoreManagerImpl & KeyValueStoreMgrImpl(void) { diff --git a/src/platform/Infineon/PSOC6/Logging.cpp b/src/platform/Infineon/PSOC6/Logging.cpp index ab6af699ac3a17..14d824f63229ec 100644 --- a/src/platform/Infineon/PSOC6/Logging.cpp +++ b/src/platform/Infineon/PSOC6/Logging.cpp @@ -25,7 +25,7 @@ namespace Platform { */ void LogV(const char * module, uint8_t category, const char * msg, va_list v) { -#if P6_LOG_ENABLED && _CHIP_USE_LOGGING +#if PSOC6_LOG_ENABLED && _CHIP_USE_LOGGING printf("CHIP:%s: ", module); vprintf(msg, v); printf("\n"); @@ -34,11 +34,11 @@ void LogV(const char * module, uint8_t category, const char * msg, va_list v) #endif } -extern "C" void P6Log(const char * aFormat, ...) +extern "C" void PSOC6Log(const char * aFormat, ...) { va_list v; va_start(v, aFormat); - LogV("P6", chip::Logging::kLogCategory_Progress, aFormat, v); + LogV("PSOC6", chip::Logging::kLogCategory_Progress, aFormat, v); va_end(v); } diff --git a/src/platform/Infineon/PSOC6/NetworkCommissioningWiFiDriver.cpp b/src/platform/Infineon/PSOC6/NetworkCommissioningWiFiDriver.cpp index 7fe0c1aaebb099..edeb39f588abf9 100644 --- a/src/platform/Infineon/PSOC6/NetworkCommissioningWiFiDriver.cpp +++ b/src/platform/Infineon/PSOC6/NetworkCommissioningWiFiDriver.cpp @@ -19,8 +19,8 @@ #include #include #include -#include -#include +#include +#include #include #include @@ -140,11 +140,11 @@ CHIP_ERROR P6WiFiDriver::ConnectWiFiNetwork(const char * ssid, uint8_t ssidLen, ReturnErrorOnFailure(ConnectivityMgr().SetWiFiStationMode(ConnectivityManager::kWiFiStationMode_Disabled)); // Set the wifi configuration wifi_config_t wifi_config; - chip::DeviceLayer::Internal::P6Utils::populate_wifi_config_t( + chip::DeviceLayer::Internal::PSOC6Utils::populate_wifi_config_t( &wifi_config, WIFI_IF_STA, (const cy_wcm_ssid_t *) ssid, (const cy_wcm_passphrase_t *) key, (keyLen) ? CHIP_DEVICE_CONFIG_DEFAULT_STA_SECURITY : CY_WCM_SECURITY_OPEN); - err = chip::DeviceLayer::Internal::P6Utils::p6_wifi_set_config(WIFI_IF_STA, &wifi_config); + err = chip::DeviceLayer::Internal::PSOC6Utils::p6_wifi_set_config(WIFI_IF_STA, &wifi_config); SuccessOrExit(err); ReturnErrorOnFailure(ConnectivityMgr().SetWiFiStationMode(ConnectivityManager::kWiFiStationMode_Disabled)); @@ -173,7 +173,7 @@ void P6WiFiDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * callback VerifyOrExit(NetworkMatch(mStagingNetwork, networkId), networkingStatus = Status::kNetworkIDNotFound); VerifyOrExit(mpConnectCallback == nullptr, networkingStatus = Status::kUnknownError); - ChipLogProgress(NetworkProvisioning, "P6 NetworkCommissioningDelegate: SSID: %s", mStagingNetwork.ssid); + ChipLogProgress(NetworkProvisioning, "PSOC6 NetworkCommissioningDelegate: SSID: %s", mStagingNetwork.ssid); err = ConnectWiFiNetwork(reinterpret_cast(mStagingNetwork.ssid), mStagingNetwork.ssidLen, reinterpret_cast(mStagingNetwork.credentials), mStagingNetwork.credentialsLen); mpConnectCallback = callback; @@ -353,7 +353,7 @@ void P6WiFiDriver::OnNetworkStatusChange() { Network configuredNetwork; bool staEnabled = false, staConnected = false; - VerifyOrReturn(P6Utils::IsStationEnabled(staEnabled) == CHIP_NO_ERROR); + VerifyOrReturn(PSOC6Utils::IsStationEnabled(staEnabled) == CHIP_NO_ERROR); VerifyOrReturn(staEnabled && mpStatusChangeCallback != nullptr); CHIP_ERROR err = GetConnectedNetwork(configuredNetwork); if (err != CHIP_NO_ERROR) @@ -361,7 +361,7 @@ void P6WiFiDriver::OnNetworkStatusChange() ChipLogError(DeviceLayer, "Failed to get configured network when updating network status: %s", err.AsString()); return; } - VerifyOrReturn(P6Utils::IsStationConnected(staConnected) == CHIP_NO_ERROR); + VerifyOrReturn(PSOC6Utils::IsStationConnected(staConnected) == CHIP_NO_ERROR); if (staConnected) { mpStatusChangeCallback->OnNetworkingStatusChange( diff --git a/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.cpp b/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.cpp index b1cf7001bd2d38..d47434a80d4fb0 100644 --- a/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.cpp +++ b/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include using namespace ::chip::DeviceLayer::Internal; @@ -153,7 +152,7 @@ void OTAImageProcessorImpl::HandlePrepareDownload(intptr_t context) } /* Initialize SMIF subsystem for OTA Image download */ - ota_smif_initialize(); + cy_ota_mem_init(); // Open and erase secondary flash area to prepare if (flash_area_open(FLASH_AREA_IMAGE_SECONDARY(0), &(imageProcessor->mFlashArea)) != 0) @@ -187,7 +186,7 @@ void OTAImageProcessorImpl::HandleFinalize(intptr_t context) flash_area_close(imageProcessor->mFlashArea); ChipLogProgress(SoftwareUpdate, "Setting boot pending"); - int ret = boot_set_pending(0, 1); + int ret = flash_area_boot_set_pending(0, 1); if (ret != 0) { diff --git a/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.h b/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.h index e1ec3d50e9806c..3ac4f418008d40 100644 --- a/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.h +++ b/src/platform/Infineon/PSOC6/OTAImageProcessorImpl.h @@ -26,11 +26,10 @@ #ifdef P6_OTA extern "C" { -#include "bootutil/bootutil.h" -#include "cy_flash_psoc6.h" +#include "cy_ota_flash.h" #include "flash_map_backend.h" #include "flash_qspi.h" -#include "sysflash/sysflash.h" +#include "sysflash.h" } namespace chip { diff --git a/src/platform/Infineon/PSOC6/P6Config.cpp b/src/platform/Infineon/PSOC6/PSOC6Config.cpp similarity index 52% rename from src/platform/Infineon/PSOC6/P6Config.cpp rename to src/platform/Infineon/PSOC6/PSOC6Config.cpp index 2ef8a5ed038476..1c040811686fa3 100644 --- a/src/platform/Infineon/PSOC6/P6Config.cpp +++ b/src/platform/Infineon/PSOC6/PSOC6Config.cpp @@ -20,21 +20,21 @@ /** * @file - * Utilities for interacting with the the P6 key-value store. + * Utilities for interacting with the the PSOC6 key-value store. */ /* this file behaves like a config.h, comes first */ #include #include -#include +#include #include #include #include #include #include -#include +#include namespace chip { namespace DeviceLayer { @@ -43,57 +43,57 @@ namespace Internal { // *** CAUTION ***: Changing the names or namespaces of these values will *break* existing devices. // Namespaces used to store device configuration information. -const char P6Config::kConfigNamespace_ChipFactory[] = "chip-factory"; -const char P6Config::kConfigNamespace_ChipConfig[] = "chip-config"; -const char P6Config::kConfigNamespace_ChipCounters[] = "chip-counters"; +const char PSOC6Config::kConfigNamespace_ChipFactory[] = "chip-factory"; +const char PSOC6Config::kConfigNamespace_ChipConfig[] = "chip-config"; +const char PSOC6Config::kConfigNamespace_ChipCounters[] = "chip-counters"; // Keys stored in the chip-factory namespace -const P6Config::Key P6Config::kConfigKey_SerialNum = { kConfigNamespace_ChipFactory, "serial-num" }; -const P6Config::Key P6Config::kConfigKey_MfrDeviceId = { kConfigNamespace_ChipFactory, "device-id" }; -const P6Config::Key P6Config::kConfigKey_MfrDeviceCert = { kConfigNamespace_ChipFactory, "device-cert" }; -const P6Config::Key P6Config::kConfigKey_MfrDeviceICACerts = { kConfigNamespace_ChipFactory, "device-ca-certs" }; -const P6Config::Key P6Config::kConfigKey_MfrDevicePrivateKey = { kConfigNamespace_ChipFactory, "device-key" }; -const P6Config::Key P6Config::kConfigKey_SoftwareVersion = { kConfigNamespace_ChipFactory, "software-ver" }; -const P6Config::Key P6Config::kConfigKey_HardwareVersion = { kConfigNamespace_ChipFactory, "hardware-ver" }; -const P6Config::Key P6Config::kConfigKey_ManufacturingDate = { kConfigNamespace_ChipFactory, "mfg-date" }; -const P6Config::Key P6Config::kConfigKey_SetupPinCode = { kConfigNamespace_ChipFactory, "pin-code" }; -const P6Config::Key P6Config::kConfigKey_SetupDiscriminator = { kConfigNamespace_ChipFactory, "discriminator" }; -const P6Config::Key P6Config::kConfigKey_Spake2pIterationCount = { kConfigNamespace_ChipFactory, "iteration-count" }; -const P6Config::Key P6Config::kConfigKey_Spake2pSalt = { kConfigNamespace_ChipFactory, "salt" }; -const P6Config::Key P6Config::kConfigKey_Spake2pVerifier = { kConfigNamespace_ChipFactory, "verifier" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_SerialNum = { kConfigNamespace_ChipFactory, "serial-num" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_MfrDeviceId = { kConfigNamespace_ChipFactory, "device-id" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_MfrDeviceCert = { kConfigNamespace_ChipFactory, "device-cert" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_MfrDeviceICACerts = { kConfigNamespace_ChipFactory, "device-ca-certs" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_MfrDevicePrivateKey = { kConfigNamespace_ChipFactory, "device-key" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_SoftwareVersion = { kConfigNamespace_ChipFactory, "software-ver" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_HardwareVersion = { kConfigNamespace_ChipFactory, "hardware-ver" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_ManufacturingDate = { kConfigNamespace_ChipFactory, "mfg-date" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_SetupPinCode = { kConfigNamespace_ChipFactory, "pin-code" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_SetupDiscriminator = { kConfigNamespace_ChipFactory, "discriminator" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_Spake2pIterationCount = { kConfigNamespace_ChipFactory, "iteration-count" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_Spake2pSalt = { kConfigNamespace_ChipFactory, "salt" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_Spake2pVerifier = { kConfigNamespace_ChipFactory, "verifier" }; // Keys stored in the chip-config namespace -const P6Config::Key P6Config::kConfigKey_ServiceConfig = { kConfigNamespace_ChipConfig, "service-config" }; -const P6Config::Key P6Config::kConfigKey_PairedAccountId = { kConfigNamespace_ChipConfig, "account-id" }; -const P6Config::Key P6Config::kConfigKey_ServiceId = { kConfigNamespace_ChipConfig, "service-id" }; -const P6Config::Key P6Config::kConfigKey_LastUsedEpochKeyId = { kConfigNamespace_ChipConfig, "last-ek-id" }; -const P6Config::Key P6Config::kConfigKey_FailSafeArmed = { kConfigNamespace_ChipConfig, "fail-safe-armed" }; -const P6Config::Key P6Config::kConfigKey_WiFiStationSecType = { kConfigNamespace_ChipConfig, "sta-sec-type" }; -const P6Config::Key P6Config::kConfigKey_RegulatoryLocation = { kConfigNamespace_ChipConfig, "regulatory-location" }; -const P6Config::Key P6Config::kConfigKey_CountryCode = { kConfigNamespace_ChipConfig, "country-code" }; -const P6Config::Key P6Config::kConfigKey_WiFiSSID = { kConfigNamespace_ChipConfig, "wifi-ssid" }; -const P6Config::Key P6Config::kConfigKey_WiFiPassword = { kConfigNamespace_ChipConfig, "wifi-password" }; -const P6Config::Key P6Config::kConfigKey_WiFiSecurity = { kConfigNamespace_ChipConfig, "wifi-security" }; -const P6Config::Key P6Config::kConfigKey_WiFiMode = { kConfigNamespace_ChipConfig, "wifimode" }; -const P6Config::Key P6Config::kConfigKey_UniqueId = { kConfigNamespace_ChipConfig, "unique-id" }; -const P6Config::Key P6Config::kConfigKey_LockUser = { kConfigNamespace_ChipConfig, "lock-user" }; -const P6Config::Key P6Config::kConfigKey_Credential = { kConfigNamespace_ChipConfig, "credential" }; -const P6Config::Key P6Config::kConfigKey_LockUserName = { kConfigNamespace_ChipConfig, "lock-user-name" }; -const P6Config::Key P6Config::kConfigKey_CredentialData = { kConfigNamespace_ChipConfig, "credential-data" }; -const P6Config::Key P6Config::kConfigKey_UserCredentials = { kConfigNamespace_ChipConfig, "user-credentials" }; -const P6Config::Key P6Config::kConfigKey_WeekDaySchedules = { kConfigNamespace_ChipConfig, "weekday-schedules" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_ServiceConfig = { kConfigNamespace_ChipConfig, "service-config" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_PairedAccountId = { kConfigNamespace_ChipConfig, "account-id" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_ServiceId = { kConfigNamespace_ChipConfig, "service-id" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_LastUsedEpochKeyId = { kConfigNamespace_ChipConfig, "last-ek-id" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_FailSafeArmed = { kConfigNamespace_ChipConfig, "fail-safe-armed" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_WiFiStationSecType = { kConfigNamespace_ChipConfig, "sta-sec-type" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_RegulatoryLocation = { kConfigNamespace_ChipConfig, "regulatory-location" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_CountryCode = { kConfigNamespace_ChipConfig, "country-code" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_WiFiSSID = { kConfigNamespace_ChipConfig, "wifi-ssid" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_WiFiPassword = { kConfigNamespace_ChipConfig, "wifi-password" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_WiFiSecurity = { kConfigNamespace_ChipConfig, "wifi-security" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_WiFiMode = { kConfigNamespace_ChipConfig, "wifimode" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_UniqueId = { kConfigNamespace_ChipConfig, "unique-id" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_LockUser = { kConfigNamespace_ChipConfig, "lock-user" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_Credential = { kConfigNamespace_ChipConfig, "credential" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_LockUserName = { kConfigNamespace_ChipConfig, "lock-user-name" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_CredentialData = { kConfigNamespace_ChipConfig, "credential-data" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_UserCredentials = { kConfigNamespace_ChipConfig, "user-credentials" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_WeekDaySchedules = { kConfigNamespace_ChipConfig, "weekday-schedules" }; ; -const P6Config::Key P6Config::kConfigKey_YearDaySchedules = { kConfigNamespace_ChipConfig, "yearday-schedules" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_YearDaySchedules = { kConfigNamespace_ChipConfig, "yearday-schedules" }; ; -const P6Config::Key P6Config::kConfigKey_HolidaySchedules = { kConfigNamespace_ChipConfig, "holiday-schedules" }; +const PSOC6Config::Key PSOC6Config::kConfigKey_HolidaySchedules = { kConfigNamespace_ChipConfig, "holiday-schedules" }; ; // Keys stored in the Chip-counters namespace -const P6Config::Key P6Config::kCounterKey_RebootCount = { kConfigNamespace_ChipCounters, "reboot-count" }; -const P6Config::Key P6Config::kCounterKey_UpTime = { kConfigNamespace_ChipCounters, "up-time" }; -const P6Config::Key P6Config::kCounterKey_TotalOperationalHours = { kConfigNamespace_ChipCounters, "total-hours" }; +const PSOC6Config::Key PSOC6Config::kCounterKey_RebootCount = { kConfigNamespace_ChipCounters, "reboot-count" }; +const PSOC6Config::Key PSOC6Config::kCounterKey_UpTime = { kConfigNamespace_ChipCounters, "up-time" }; +const PSOC6Config::Key PSOC6Config::kCounterKey_TotalOperationalHours = { kConfigNamespace_ChipCounters, "total-hours" }; -CHIP_ERROR P6Config::ReadConfigValue(Key key, bool & val) +CHIP_ERROR PSOC6Config::ReadConfigValue(Key key, bool & val) { bool in; char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; @@ -107,7 +107,7 @@ CHIP_ERROR P6Config::ReadConfigValue(Key key, bool & val) return err; } -CHIP_ERROR P6Config::ReadConfigValue(Key key, uint32_t & val) +CHIP_ERROR PSOC6Config::ReadConfigValue(Key key, uint32_t & val) { uint32_t in; char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; @@ -121,7 +121,7 @@ CHIP_ERROR P6Config::ReadConfigValue(Key key, uint32_t & val) return err; } -CHIP_ERROR P6Config::ReadConfigValue(Key key, uint64_t & val) +CHIP_ERROR PSOC6Config::ReadConfigValue(Key key, uint64_t & val) { uint64_t in; char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; @@ -135,7 +135,7 @@ CHIP_ERROR P6Config::ReadConfigValue(Key key, uint64_t & val) return err; } -CHIP_ERROR P6Config::ReadConfigValueStr(Key key, char * buf, size_t bufSize, size_t & outLen) +CHIP_ERROR PSOC6Config::ReadConfigValueStr(Key key, char * buf, size_t bufSize, size_t & outLen) { char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; key.to_str(key_str, MTB_KVSTORE_MAX_KEY_SIZE); @@ -147,7 +147,7 @@ CHIP_ERROR P6Config::ReadConfigValueStr(Key key, char * buf, size_t bufSize, siz return err; } -CHIP_ERROR P6Config::ReadConfigValueBin(Key key, uint8_t * buf, size_t bufSize, size_t & outLen) +CHIP_ERROR PSOC6Config::ReadConfigValueBin(Key key, uint8_t * buf, size_t bufSize, size_t & outLen) { char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; key.to_str(key_str, MTB_KVSTORE_MAX_KEY_SIZE); @@ -159,28 +159,28 @@ CHIP_ERROR P6Config::ReadConfigValueBin(Key key, uint8_t * buf, size_t bufSize, return err; } -CHIP_ERROR P6Config::WriteConfigValue(Key key, bool val) +CHIP_ERROR PSOC6Config::WriteConfigValue(Key key, bool val) { char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; key.to_str(key_str, MTB_KVSTORE_MAX_KEY_SIZE); return PersistedStorage::KeyValueStoreMgr().Put(key_str, static_cast(&val), sizeof(bool)); } -CHIP_ERROR P6Config::WriteConfigValue(Key key, uint32_t val) +CHIP_ERROR PSOC6Config::WriteConfigValue(Key key, uint32_t val) { char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; key.to_str(key_str, MTB_KVSTORE_MAX_KEY_SIZE); return PersistedStorage::KeyValueStoreMgr().Put(key_str, static_cast(&val), 4); } -CHIP_ERROR P6Config::WriteConfigValue(Key key, uint64_t val) +CHIP_ERROR PSOC6Config::WriteConfigValue(Key key, uint64_t val) { char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; key.to_str(key_str, MTB_KVSTORE_MAX_KEY_SIZE); return PersistedStorage::KeyValueStoreMgr().Put(key_str, static_cast(&val), 8); } -CHIP_ERROR P6Config::WriteConfigValueStr(Key key, const char * str) +CHIP_ERROR PSOC6Config::WriteConfigValueStr(Key key, const char * str) { size_t size = strlen(str) + 1; char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; @@ -188,27 +188,27 @@ CHIP_ERROR P6Config::WriteConfigValueStr(Key key, const char * str) return PersistedStorage::KeyValueStoreMgr().Put(key_str, str, size); } -CHIP_ERROR P6Config::WriteConfigValueStr(Key key, const char * str, size_t strLen) +CHIP_ERROR PSOC6Config::WriteConfigValueStr(Key key, const char * str, size_t strLen) { char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; key.to_str(key_str, MTB_KVSTORE_MAX_KEY_SIZE); return PersistedStorage::KeyValueStoreMgr().Put(key_str, str, strLen); } -CHIP_ERROR P6Config::WriteConfigValueBin(Key key, const uint8_t * data, size_t dataLen) +CHIP_ERROR PSOC6Config::WriteConfigValueBin(Key key, const uint8_t * data, size_t dataLen) { char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; key.to_str(key_str, MTB_KVSTORE_MAX_KEY_SIZE); return PersistedStorage::KeyValueStoreMgr().Put(key_str, data, dataLen); } -CHIP_ERROR P6Config::ClearConfigValue(Key key) +CHIP_ERROR PSOC6Config::ClearConfigValue(Key key) { char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; key.to_str(key_str, MTB_KVSTORE_MAX_KEY_SIZE); return PersistedStorage::KeyValueStoreMgr().Delete(key_str); } -bool P6Config::ConfigValueExists(Key key) +bool PSOC6Config::ConfigValueExists(Key key) { char key_str[MTB_KVSTORE_MAX_KEY_SIZE] = { 0 }; key.to_str(key_str, MTB_KVSTORE_MAX_KEY_SIZE); @@ -221,7 +221,7 @@ bool P6Config::ConfigValueExists(Key key) } // Clear out keys in config namespace -CHIP_ERROR P6Config::FactoryResetConfig(void) +CHIP_ERROR PSOC6Config::FactoryResetConfig(void) { CHIP_ERROR err = CHIP_NO_ERROR; const Key * config_keys[] = { &kConfigKey_ServiceConfig, &kConfigKey_PairedAccountId, &kConfigKey_ServiceId, @@ -249,7 +249,7 @@ CHIP_ERROR P6Config::FactoryResetConfig(void) return CHIP_NO_ERROR; } -void P6Config::RunConfigUnitTest() {} +void PSOC6Config::RunConfigUnitTest() {} } // namespace Internal } // namespace DeviceLayer diff --git a/src/platform/Infineon/PSOC6/P6Config.h b/src/platform/Infineon/PSOC6/PSOC6Config.h similarity index 93% rename from src/platform/Infineon/PSOC6/P6Config.h rename to src/platform/Infineon/PSOC6/PSOC6Config.h index 7e62fd6e66b772..17fa896346c348 100644 --- a/src/platform/Infineon/PSOC6/P6Config.h +++ b/src/platform/Infineon/PSOC6/PSOC6Config.h @@ -20,7 +20,7 @@ /** * @file - * Utilities for interacting with the the P6 key-value store. + * Utilities for interacting with the the PSOC6 key-value store. */ #pragma once @@ -35,12 +35,12 @@ namespace DeviceLayer { namespace Internal { /** - * Provides functions and definitions for accessing device configuration information on the P6. + * Provides functions and definitions for accessing device configuration information on the PSOC6. * * This class is designed to be mixed-in to concrete implementation classes as a means to * provide access to configuration information to generic base classes. */ -class P6Config +class PSOC6Config { public: struct Key; @@ -114,7 +114,7 @@ class P6Config static void RunConfigUnitTest(void); }; -struct P6Config::Key +struct PSOC6Config::Key { const char * Namespace; const char * Name; @@ -124,7 +124,7 @@ struct P6Config::Key bool operator==(const Key & other) const; }; -inline CHIP_ERROR P6Config::Key::to_str(char * buf, size_t buf_size) const +inline CHIP_ERROR PSOC6Config::Key::to_str(char * buf, size_t buf_size) const { if (buf_size < len() + 1) { @@ -139,14 +139,14 @@ inline CHIP_ERROR P6Config::Key::to_str(char * buf, size_t buf_size) const } // Length of key str (not including terminating null char) -inline size_t P6Config::Key::len() const +inline size_t PSOC6Config::Key::len() const { // + 1 for separating ';' size_t out_size = strlen(Namespace) + strlen(Name) + 1; return out_size; } -inline bool P6Config::Key::operator==(const Key & other) const +inline bool PSOC6Config::Key::operator==(const Key & other) const { return strcmp(Namespace, other.Namespace) == 0 && strcmp(Name, other.Name) == 0; } diff --git a/src/platform/Infineon/PSOC6/P6Utils.cpp b/src/platform/Infineon/PSOC6/PSOC6Utils.cpp similarity index 85% rename from src/platform/Infineon/PSOC6/P6Utils.cpp rename to src/platform/Infineon/PSOC6/PSOC6Utils.cpp index 2964cc4b5dfa5b..c65a29f6a96475 100644 --- a/src/platform/Infineon/PSOC6/P6Utils.cpp +++ b/src/platform/Infineon/PSOC6/PSOC6Utils.cpp @@ -19,17 +19,18 @@ /** * @file - * General utility methods for the P6 platform. + * General utility methods for the PSOC6 platform. */ /* this file behaves like a config.h, comes first */ #include #include "cy_network_mw_core.h" +#include "cy_nw_helper.h" #include #include #include #include -#include +#include #include "lwip/icmp.h" #include "lwip/inet.h" @@ -43,7 +44,7 @@ #include "lwip/sys.h" #include "lwip/timeouts.h" #include -#include +#include using namespace ::chip::DeviceLayer::Internal; using chip::DeviceLayer::Internal::DeviceNetworkInfo; @@ -96,39 +97,39 @@ typedef struct uint8_t data[PING_DATA_SIZE]; } icmp_packet_t; -CHIP_ERROR P6Utils::IsAPEnabled(bool & apEnabled) +CHIP_ERROR PSOC6Utils::IsAPEnabled(bool & apEnabled) { apEnabled = (WiFiMode == WIFI_MODE_AP || WiFiMode == WIFI_MODE_APSTA); return CHIP_NO_ERROR; } -CHIP_ERROR P6Utils::IsStationEnabled(bool & staEnabled) +CHIP_ERROR PSOC6Utils::IsStationEnabled(bool & staEnabled) { staEnabled = (WiFiMode == WIFI_MODE_STA || WiFiMode == WIFI_MODE_APSTA); return CHIP_NO_ERROR; } -bool P6Utils::IsStationProvisioned(void) +bool PSOC6Utils::IsStationProvisioned(void) { wifi_config_t stationConfig; return (p6_wifi_get_config(WIFI_IF_STA, &stationConfig) == CHIP_NO_ERROR && strlen((const char *) stationConfig.sta.ssid) != 0); } -CHIP_ERROR P6Utils::IsStationConnected(bool & connected) +CHIP_ERROR PSOC6Utils::IsStationConnected(bool & connected) { CHIP_ERROR err = CHIP_NO_ERROR; connected = cy_wcm_is_connected_to_ap(); return err; } -CHIP_ERROR P6Utils::StartWiFiLayer(void) +CHIP_ERROR PSOC6Utils::StartWiFiLayer(void) { CHIP_ERROR err = CHIP_NO_ERROR; cy_rslt_t result = CY_RSLT_SUCCESS; cy_wcm_config_t wcm_config; wcm_config.interface = CY_WCM_INTERFACE_TYPE_AP_STA; - ChipLogProgress(DeviceLayer, "Starting P6 WiFi layer"); + ChipLogProgress(DeviceLayer, "Starting PSOC6 WiFi layer"); if (wcm_init_done == false) { @@ -136,7 +137,7 @@ CHIP_ERROR P6Utils::StartWiFiLayer(void) if (result != CY_RSLT_SUCCESS) { err = CHIP_ERROR_INTERNAL; - ChipLogError(DeviceLayer, "StartWiFiLayer() P6 Wi-Fi Started Failed: %s", chip::ErrorStr(err)); + ChipLogError(DeviceLayer, "StartWiFiLayer() PSOC6 Wi-Fi Started Failed: %s", chip::ErrorStr(err)); SuccessOrExit(err); } wcm_init_done = true; @@ -146,7 +147,7 @@ CHIP_ERROR P6Utils::StartWiFiLayer(void) return err; } -CHIP_ERROR P6Utils::EnableStationMode(void) +CHIP_ERROR PSOC6Utils::EnableStationMode(void) { CHIP_ERROR err = CHIP_NO_ERROR; ChipLogProgress(DeviceLayer, "EnableStationMode"); @@ -163,7 +164,7 @@ CHIP_ERROR P6Utils::EnableStationMode(void) return err; } -CHIP_ERROR P6Utils::SetAPMode(bool enabled) +CHIP_ERROR PSOC6Utils::SetAPMode(bool enabled) { CHIP_ERROR err = CHIP_NO_ERROR; ChipLogProgress(DeviceLayer, "SetAPMode"); @@ -193,7 +194,7 @@ CHIP_ERROR P6Utils::SetAPMode(bool enabled) return err; } -const char * P6Utils::WiFiModeToStr(wifi_mode_t wifiMode) +const char * PSOC6Utils::WiFiModeToStr(wifi_mode_t wifiMode) { switch (wifiMode) { @@ -210,49 +211,49 @@ const char * P6Utils::WiFiModeToStr(wifi_mode_t wifiMode) } } -CHIP_ERROR P6Utils::GetWiFiSSID(char * buf, size_t bufSize) +CHIP_ERROR PSOC6Utils::GetWiFiSSID(char * buf, size_t bufSize) { size_t num = 0; - return P6Config::ReadConfigValueStr(P6Config::kConfigKey_WiFiSSID, buf, bufSize, num); + return PSOC6Config::ReadConfigValueStr(PSOC6Config::kConfigKey_WiFiSSID, buf, bufSize, num); } -CHIP_ERROR P6Utils::StoreWiFiSSID(char * buf, size_t size) +CHIP_ERROR PSOC6Utils::StoreWiFiSSID(char * buf, size_t size) { - return P6Config::WriteConfigValueStr(P6Config::kConfigKey_WiFiSSID, buf, size); + return PSOC6Config::WriteConfigValueStr(PSOC6Config::kConfigKey_WiFiSSID, buf, size); } -CHIP_ERROR P6Utils::GetWiFiPassword(char * buf, size_t bufSize) +CHIP_ERROR PSOC6Utils::GetWiFiPassword(char * buf, size_t bufSize) { size_t num = 0; - return P6Config::ReadConfigValueStr(P6Config::kConfigKey_WiFiPassword, buf, bufSize, num); + return PSOC6Config::ReadConfigValueStr(PSOC6Config::kConfigKey_WiFiPassword, buf, bufSize, num); } -CHIP_ERROR P6Utils::StoreWiFiPassword(char * buf, size_t size) +CHIP_ERROR PSOC6Utils::StoreWiFiPassword(char * buf, size_t size) { - return P6Config::WriteConfigValueStr(P6Config::kConfigKey_WiFiPassword, buf, size); + return PSOC6Config::WriteConfigValueStr(PSOC6Config::kConfigKey_WiFiPassword, buf, size); } -CHIP_ERROR P6Utils::GetWiFiSecurityCode(uint32_t & security) +CHIP_ERROR PSOC6Utils::GetWiFiSecurityCode(uint32_t & security) { - return P6Config::ReadConfigValue(P6Config::kConfigKey_WiFiSecurity, security); + return PSOC6Config::ReadConfigValue(PSOC6Config::kConfigKey_WiFiSecurity, security); } -CHIP_ERROR P6Utils::StoreWiFiSecurityCode(uint32_t security) +CHIP_ERROR PSOC6Utils::StoreWiFiSecurityCode(uint32_t security) { - return P6Config::WriteConfigValue(P6Config::kConfigKey_WiFiSecurity, security); + return PSOC6Config::WriteConfigValue(PSOC6Config::kConfigKey_WiFiSecurity, security); } -CHIP_ERROR P6Utils::wifi_get_mode(uint32_t & mode) +CHIP_ERROR PSOC6Utils::wifi_get_mode(uint32_t & mode) { - return P6Config::ReadConfigValue(P6Config::kConfigKey_WiFiMode, mode); + return PSOC6Config::ReadConfigValue(PSOC6Config::kConfigKey_WiFiMode, mode); } -CHIP_ERROR P6Utils::wifi_set_mode(uint32_t mode) +CHIP_ERROR PSOC6Utils::wifi_set_mode(uint32_t mode) { - return P6Config::WriteConfigValue(P6Config::kConfigKey_WiFiMode, mode); + return PSOC6Config::WriteConfigValue(PSOC6Config::kConfigKey_WiFiMode, mode); } -CHIP_ERROR P6Utils::p6_wifi_set_config(wifi_interface_t interface, wifi_config_t * conf) +CHIP_ERROR PSOC6Utils::p6_wifi_set_config(wifi_interface_t interface, wifi_config_t * conf) { CHIP_ERROR err = CHIP_NO_ERROR; if (interface == WIFI_IF_STA) @@ -281,15 +282,15 @@ CHIP_ERROR P6Utils::p6_wifi_set_config(wifi_interface_t interface, wifi_config_t return err; } -CHIP_ERROR P6Utils::p6_wifi_get_config(wifi_interface_t interface, wifi_config_t * conf) +CHIP_ERROR PSOC6Utils::p6_wifi_get_config(wifi_interface_t interface, wifi_config_t * conf) { uint32 code = 0; CHIP_ERROR err = CHIP_NO_ERROR; if (interface == WIFI_IF_STA) { - if (P6Config::ConfigValueExists(P6Config::kConfigKey_WiFiSSID) && - P6Config::ConfigValueExists(P6Config::kConfigKey_WiFiPassword) && - P6Config::ConfigValueExists(P6Config::kConfigKey_WiFiSecurity)) + if (PSOC6Config::ConfigValueExists(PSOC6Config::kConfigKey_WiFiSSID) && + PSOC6Config::ConfigValueExists(PSOC6Config::kConfigKey_WiFiPassword) && + PSOC6Config::ConfigValueExists(PSOC6Config::kConfigKey_WiFiSecurity)) { /* Retrieve Wi-Fi Configurations from Storage */ err = GetWiFiSSID((char *) conf->sta.ssid, sizeof(conf->sta.ssid)); @@ -320,7 +321,7 @@ CHIP_ERROR P6Utils::p6_wifi_get_config(wifi_interface_t interface, wifi_config_t return err; } -CHIP_ERROR P6Utils::GetWiFiStationProvision(Internal::DeviceNetworkInfo & netInfo, bool includeCredentials) +CHIP_ERROR PSOC6Utils::GetWiFiStationProvision(Internal::DeviceNetworkInfo & netInfo, bool includeCredentials) { CHIP_ERROR err = CHIP_NO_ERROR; wifi_config_t stationConfig; @@ -350,7 +351,7 @@ CHIP_ERROR P6Utils::GetWiFiStationProvision(Internal::DeviceNetworkInfo & netInf return err; } -CHIP_ERROR P6Utils::SetWiFiStationProvision(const Internal::DeviceNetworkInfo & netInfo) +CHIP_ERROR PSOC6Utils::SetWiFiStationProvision(const Internal::DeviceNetworkInfo & netInfo) { CHIP_ERROR err = CHIP_NO_ERROR; wifi_config_t wifiConfig; @@ -358,9 +359,9 @@ CHIP_ERROR P6Utils::SetWiFiStationProvision(const Internal::DeviceNetworkInfo & char wifiSSID[kMaxWiFiSSIDLength + 1]; size_t netInfoSSIDLen = strlen(netInfo.WiFiSSID); - // Ensure that P6 station mode is enabled. This is required before p6_wifi_set_config + // Ensure that PSOC6 station mode is enabled. This is required before p6_wifi_set_config // can be called. - err = P6Utils::EnableStationMode(); + err = PSOC6Utils::EnableStationMode(); SuccessOrExit(err); // Enforce that wifiSSID is null terminated before copying it @@ -374,10 +375,10 @@ CHIP_ERROR P6Utils::SetWiFiStationProvision(const Internal::DeviceNetworkInfo & wifiSSID[kMaxWiFiSSIDLength] = '\0'; } - // Initialize an P6 wifi_config_t structure based on the new provision information. + // Initialize an PSOC6 wifi_config_t structure based on the new provision information. populate_wifi_config_t(&wifiConfig, WIFI_IF_STA, (cy_wcm_ssid_t *) wifiSSID, (cy_wcm_passphrase_t *) netInfo.WiFiKey); - // Configure the P6 WiFi interface. + // Configure the PSOC6 WiFi interface. ReturnLogErrorOnFailure(p6_wifi_set_config(WIFI_IF_STA, &wifiConfig)); ChipLogProgress(DeviceLayer, "WiFi station provision set (SSID: %s)", netInfo.WiFiSSID); @@ -386,18 +387,18 @@ CHIP_ERROR P6Utils::SetWiFiStationProvision(const Internal::DeviceNetworkInfo & return err; } -CHIP_ERROR P6Utils::ClearWiFiStationProvision(void) +CHIP_ERROR PSOC6Utils::ClearWiFiStationProvision(void) { CHIP_ERROR err = CHIP_NO_ERROR; wifi_config_t stationConfig; ChipLogProgress(DeviceLayer, "ClearWiFiStationProvision"); - // Clear the P6 WiFi station configuration. + // Clear the PSOC6 WiFi station configuration. memset(&stationConfig.sta, 0, sizeof(stationConfig.sta)); ReturnLogErrorOnFailure(p6_wifi_set_config(WIFI_IF_STA, &stationConfig)); return err; } -CHIP_ERROR P6Utils::p6_wifi_disconnect(void) +CHIP_ERROR PSOC6Utils::p6_wifi_disconnect(void) { CHIP_ERROR err = CHIP_NO_ERROR; cy_rslt_t result = CY_RSLT_SUCCESS; @@ -411,7 +412,7 @@ CHIP_ERROR P6Utils::p6_wifi_disconnect(void) return err; } -CHIP_ERROR P6Utils::p6_wifi_connect(void) +CHIP_ERROR PSOC6Utils::p6_wifi_connect(void) { CHIP_ERROR err = CHIP_NO_ERROR; cy_rslt_t result = CY_RSLT_SUCCESS; @@ -445,7 +446,7 @@ static const cy_wcm_ip_setting_t ap_mode_ip_settings2 = { INITIALISER_IPV4_ADDRESS1(.netmask, MAKE_IPV4_ADDRESS1(255, 255, 255, 0)), }; -CHIP_ERROR P6Utils::p6_start_ap(void) +CHIP_ERROR PSOC6Utils::p6_start_ap(void) { CHIP_ERROR err = CHIP_NO_ERROR; cy_rslt_t result = CY_RSLT_SUCCESS; @@ -481,7 +482,7 @@ CHIP_ERROR P6Utils::p6_start_ap(void) return err; } -CHIP_ERROR P6Utils::p6_stop_ap(void) +CHIP_ERROR PSOC6Utils::p6_stop_ap(void) { CHIP_ERROR err = CHIP_NO_ERROR; cy_rslt_t result = CY_RSLT_SUCCESS; @@ -495,8 +496,8 @@ CHIP_ERROR P6Utils::p6_stop_ap(void) return err; } -void P6Utils::populate_wifi_config_t(wifi_config_t * wifi_config, wifi_interface_t interface, const cy_wcm_ssid_t * ssid, - const cy_wcm_passphrase_t * password, cy_wcm_security_t security) +void PSOC6Utils::populate_wifi_config_t(wifi_config_t * wifi_config, wifi_interface_t interface, const cy_wcm_ssid_t * ssid, + const cy_wcm_passphrase_t * password, cy_wcm_security_t security) { CY_ASSERT(wifi_config != NULL); @@ -723,7 +724,7 @@ void ping_raw(void) } #endif -CHIP_ERROR P6Utils::ping_init(void) +CHIP_ERROR PSOC6Utils::ping_init(void) { CHIP_ERROR err = CHIP_NO_ERROR; struct netif * net_interface = NULL; @@ -819,7 +820,7 @@ static void xtlv_unpack_xtlv(const xtlv_t * xtlv, uint16_t * type, uint16_t * le } } -void P6Utils::unpack_xtlv_buf(const uint8_t * tlv_buf, uint16_t buflen, wl_cnt_ver_30_t * cnt, wl_cnt_ge40mcst_v1_t * cnt_ge40) +void PSOC6Utils::unpack_xtlv_buf(const uint8_t * tlv_buf, uint16_t buflen, wl_cnt_ver_30_t * cnt, wl_cnt_ge40mcst_v1_t * cnt_ge40) { uint16_t len; uint16_t type; @@ -853,7 +854,7 @@ void P6Utils::unpack_xtlv_buf(const uint8_t * tlv_buf, uint16_t buflen, wl_cnt_v } } -/* Get the Heap total size for P6 Linker file */ +/* Get the Heap total size for PSOC6 Linker file */ uint32_t get_heap_total() { extern uint8_t __HeapBase; /* Symbol exported by the linker. */ @@ -865,7 +866,7 @@ uint32_t get_heap_total() } /* Populate Heap info based on heap total size and Current Heap usage */ -void P6Utils::heap_usage(heap_info_t * heap) +void PSOC6Utils::heap_usage(heap_info_t * heap) { struct mallinfo mall_info = mallinfo(); diff --git a/src/platform/Infineon/PSOC6/P6Utils.h b/src/platform/Infineon/PSOC6/PSOC6Utils.h similarity index 99% rename from src/platform/Infineon/PSOC6/P6Utils.h rename to src/platform/Infineon/PSOC6/PSOC6Utils.h index c313e963576215..fbb28c4c0e5e7a 100644 --- a/src/platform/Infineon/PSOC6/P6Utils.h +++ b/src/platform/Infineon/PSOC6/PSOC6Utils.h @@ -187,7 +187,7 @@ namespace chip { namespace DeviceLayer { namespace Internal { -class P6Utils +class PSOC6Utils { public: static CHIP_ERROR IsAPEnabled(bool & apEnabled); diff --git a/src/platform/Infineon/crypto/trustm/CHIPCryptoPALHsm_P256_trustm.cpp b/src/platform/Infineon/crypto/trustm/CHIPCryptoPALHsm_P256_trustm.cpp index 895b53222672b4..23856be89d93c1 100644 --- a/src/platform/Infineon/crypto/trustm/CHIPCryptoPALHsm_P256_trustm.cpp +++ b/src/platform/Infineon/crypto/trustm/CHIPCryptoPALHsm_P256_trustm.cpp @@ -277,8 +277,7 @@ CHIP_ERROR P256PublicKey::ECDSA_validate_hash_signature(const uint8_t * hash, si size_t signature_trustm_len = sizeof(signature_trustm); MutableByteSpan out_der_sig_span(signature_trustm, signature_trustm_len); - uint8_t hash_length_u8 = static_cast(hash_length); - uint16_t signature_trustm_len_u16 = static_cast(signature_trustm_len); + uint8_t hash_length_u8 = static_cast(hash_length); VerifyOrReturnError(hash != nullptr, CHIP_ERROR_INVALID_ARGUMENT); VerifyOrReturnError(hash_length > 0, CHIP_ERROR_INVALID_ARGUMENT); @@ -292,7 +291,7 @@ CHIP_ERROR P256PublicKey::ECDSA_validate_hash_signature(const uint8_t * hash, si signature_trustm_len = out_der_sig_span.size(); // ECC verify - return_status = trustm_ecdsa_verify((uint8_t *) hash, hash_length_u8, (uint8_t *) signature_trustm, signature_trustm_len_u16, + return_status = trustm_ecdsa_verify((uint8_t *) hash, hash_length_u8, (uint8_t *) signature_trustm, signature_trustm_len, (uint8_t *) bytes, (uint8_t) kP256_PublicKey_Length); VerifyOrExit(return_status == OPTIGA_LIB_SUCCESS, error = CHIP_ERROR_INTERNAL); diff --git a/src/platform/Infineon/crypto/trustm/CHIPCryptoPALHsm_utils_trustm.cpp b/src/platform/Infineon/crypto/trustm/CHIPCryptoPALHsm_utils_trustm.cpp index be25fd89b824d6..4623c3f852ff18 100644 --- a/src/platform/Infineon/crypto/trustm/CHIPCryptoPALHsm_utils_trustm.cpp +++ b/src/platform/Infineon/crypto/trustm/CHIPCryptoPALHsm_utils_trustm.cpp @@ -36,9 +36,9 @@ #include "pal_os_timer.h" #include -optiga_crypt_t * p_local_crypt = NULL; -optiga_util_t * p_local_util = NULL; -static bool trustm_isOpen = false; +optiga_crypt_t * me_crypt = NULL; +optiga_util_t * me_util = NULL; +static bool trustm_isOpen = false; #define ENABLE_HMAC_MULTI_STEP (0) #define OPTIGA_UTIL_DER_BITSTRING_TAG (0x03) #define OPTIGA_UTIL_DER_NUM_UNUSED_BITS (0x00) @@ -55,10 +55,7 @@ static bool trustm_isOpen = false; void vApplicationTickHook(void); -void vApplicationTickHook(void) -{ - pal_os_event_trigger_registered_callback(); -} +void vApplicationTickHook(void) {} #define WAIT_FOR_COMPLETION(ret) \ if (OPTIGA_LIB_SUCCESS != ret) \ @@ -67,9 +64,7 @@ void vApplicationTickHook(void) } \ while (optiga_lib_status == OPTIGA_LIB_BUSY) \ { \ - pal_os_event_trigger_registered_callback(); \ } \ - \ if (OPTIGA_LIB_SUCCESS != optiga_lib_status) \ { \ ret = optiga_lib_status; \ @@ -113,7 +108,6 @@ static void optiga_crypt_callback(void * context, optiga_lib_status_t return_sta static bool init = false; void trustm_Open(void) { - optiga_lib_status_t xResult; uint16_t dOptigaOID = 0xE0C4; // Maximum Power, Minimum Current limitation uint8_t cCurrentLimit = 15; @@ -123,75 +117,74 @@ void trustm_Open(void) optiga_lib_status_t return_status; do { - /** - * 1. Create OPTIGA Crypt Instance - */ - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - if (NULL == p_local_crypt) + // Create Optiga crypt instance + if (me_crypt == NULL) { - break; + me_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); + if (NULL == me_crypt) + { + break; + } } - // printf("trustm created crypt Instance \r\n"); - /** - * 1. Create OPTIGA Util Instance - */ - p_local_util = optiga_util_create(0, optiga_util_callback, NULL); - if (NULL == p_local_util) + else { - break; + printf("Error: me_crypt already initialised\n"); + } + // Create Optiga Util instance + if (me_util == NULL) + { + me_util = optiga_util_create(0, optiga_util_callback, NULL); + if (NULL == me_util) + { + break; + } + } + else + { + printf("Error: me_crypt already initialised\n"); } - // printf("trustm created util Instance \r\n"); /** * Open the application on OPTIGA which is a precondition to perform any other operations * using optiga_util_open_application */ optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_util_open_application(p_local_util, 0); // skip restore - while (optiga_lib_status == OPTIGA_LIB_BUSY) - - // Only run once for initialisation - if (init) - { - xResult = optiga_util_write_data(p_local_util, dOptigaOID, OPTIGA_UTIL_WRITE_ONLY, 0, &cCurrentLimit, 1); - - if (OPTIGA_LIB_SUCCESS != xResult) - { - break; - } - while (optiga_lib_status == OPTIGA_LIB_BUSY) - ; - // Set init to true - init = true; - } - + return_status = optiga_util_open_application(me_util, 0); // skip restore if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_util_open_application api returns error !!! - printf("optiga_util_open_application api returns error !!!\n"); + printf("optiga_util_open_application api returns error %02X\n", return_status); break; } + // Wait until the optiga_util_open_application is completed + WAIT_FOR_COMPLETION(return_status); - while (optiga_lib_status == OPTIGA_LIB_BUSY) - ; - if (OPTIGA_LIB_SUCCESS != optiga_lib_status) + if (OPTIGA_LIB_SUCCESS != return_status) { // optiga_util_open_application failed printf("optiga_util_open_application failed\n"); break; } + trustm_isOpen = true; - // printf("trustm open application successful \r\n"); - + // Only run once for initialisation + if (!init) + { + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = optiga_util_write_data(me_util, dOptigaOID, OPTIGA_UTIL_ERASE_AND_WRITE, 0, &cCurrentLimit, 1); + if (OPTIGA_LIB_SUCCESS != return_status) + { + printf("optiga_util_write_data api returns error %02X\n", return_status); + break; + } + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) + { + printf("optiga_util_write_data returns error\n"); + break; + } + // Set init to true + init = true; + } } while (0); - - // p_local_util and p_local_crypt instance can be destroyed - // if no close_application w.r.t hibernate is required to be performed - if (p_local_util || p_local_crypt) - { - optiga_util_destroy(p_local_util); - optiga_crypt_destroy(p_local_crypt); - } - trustm_isOpen = true; } } @@ -206,19 +199,28 @@ void trustm_close(void) * using optiga_util_close_application */ optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_util_close_application(p_local_util, 0); + return_status = optiga_util_close_application(me_util, 0); if (OPTIGA_LIB_SUCCESS != return_status) + { + printf("optiga_util_close_application api returns error %02X\n", return_status); break; + } + + WAIT_FOR_COMPLETION(return_status); - while (optiga_lib_status == OPTIGA_LIB_BUSY) + if (OPTIGA_LIB_SUCCESS != return_status) { - pal_os_event_trigger_registered_callback(); + // optiga_util_close_application failed + printf("optiga_util_close_application failed\n"); + break; } // destroy util and crypt instances - optiga_util_destroy(p_local_util); - optiga_crypt_destroy(p_local_crypt); + optiga_util_destroy(me_util); + optiga_crypt_destroy(me_crypt); pal_os_event_destroy(NULL); + me_util = NULL; + me_crypt = NULL; trustm_isOpen = false; return_status = OPTIGA_LIB_SUCCESS; } while (0); @@ -232,37 +234,25 @@ void read_certificate_from_optiga(uint16_t optiga_oid, char * cert_pem, uint16_t uint16_t size_to_copy = 0; optiga_lib_status_t return_status; - optiga_util_t * me_util = NULL; uint8_t ifx_cert_hex[1024]; uint16_t ifx_cert_hex_len = sizeof(ifx_cert_hex); do { - // Create an instance of optiga_util to read the certificate from OPTIGA. - me_util = optiga_util_create(0, optiga_util_callback, NULL); - if (!me_util) - { - optiga_lib_print_message("optiga_util_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - break; - } optiga_lib_status = OPTIGA_LIB_BUSY; return_status = optiga_util_read_data(me_util, optiga_oid, 0, ifx_cert_hex, &ifx_cert_hex_len); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_util_read_data api returns error !!! - optiga_lib_print_message("optiga_util_read_data api returns error !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + printf("optiga_util_read_data api returns error %02X\n", return_status); break; } - - while (optiga_lib_status == OPTIGA_LIB_BUSY) - ; - if (OPTIGA_LIB_SUCCESS != optiga_lib_status) + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_util_read_data failed - optiga_lib_print_message("optiga_util_read_data failed", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_util_read_data returns error + printf("read_certificate_from_optiga failed\n"); break; } - // convert to PEM format // If the first byte is TLS Identity Tag, than we need to skip 9 first bytes offset_to_read = ifx_cert_hex[0] == 0xc0 ? 9 : 0; @@ -292,113 +282,52 @@ void read_certificate_from_optiga(uint16_t optiga_oid, char * cert_pem, uint16_t *cert_pem_length = offset_to_write + 27; } while (0); - - // me_util instance to be destroyed - if (me_util) - { - optiga_util_destroy(me_util); - } } + void write_data(uint16_t optiga_oid, const uint8_t * p_data, uint16_t length) { - optiga_util_t * me_util = NULL; optiga_lib_status_t return_status; do { - // Create an instance of optiga_util to open the application on OPTIGA. - me_util = optiga_util_create(0, optiga_util_callback, NULL); - if (!me_util) + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = optiga_util_write_data(me_util, optiga_oid, OPTIGA_UTIL_ERASE_AND_WRITE, 0, p_data, length); + if (OPTIGA_LIB_SUCCESS != return_status) { - optiga_lib_print_message("optiga_util_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + printf("optiga_util_write_data api returns error %02X\n", return_status); break; } + WAIT_FOR_COMPLETION(return_status); - optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_util_write_data(me_util, optiga_oid, OPTIGA_UTIL_ERASE_AND_WRITE, 0, p_data, length); + if (OPTIGA_LIB_SUCCESS != return_status) { - if (OPTIGA_LIB_SUCCESS != return_status) - { - optiga_lib_print_message("optiga_util_wirte_data api returns error !!!", OPTIGA_UTIL_SERVICE, - OPTIGA_UTIL_SERVICE_COLOR); - break; - } - - while (OPTIGA_LIB_BUSY == optiga_lib_status) - { - // Wait until the optiga_util_write_data operation is completed - } - - if (OPTIGA_LIB_SUCCESS != optiga_lib_status) - { - optiga_lib_print_message("optiga_util_write_data failed", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - return_status = optiga_lib_status; - break; - } - else - { - optiga_lib_print_message("optiga_util_write_data successful", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - } + printf("write_data failed\n"); + return_status = optiga_lib_status; + break; } } while (0); - - // me_util instance can be destroyed - // if no close_application w.r.t hibernate is required to be performed - if (me_util) - { - optiga_util_destroy(me_util); - } } void write_metadata(uint16_t optiga_oid, const uint8_t * p_data, uint8_t length) { - optiga_util_t * me_util = NULL; optiga_lib_status_t return_status; do { - // Create an instance of optiga_util to open the application on OPTIGA. - me_util = optiga_util_create(0, optiga_util_callback, NULL); - if (!me_util) + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = optiga_util_write_metadata(me_util, optiga_oid, p_data, length); + if (OPTIGA_LIB_SUCCESS != return_status) { - optiga_lib_print_message("optiga_util_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + printf("optiga_util_write_metadata api returns error %02X\n", return_status); break; } - - optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_util_write_metadata(me_util, optiga_oid, p_data, length); + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) { - if (OPTIGA_LIB_SUCCESS != return_status) - { - optiga_lib_print_message("optiga_util_wirte_data api returns error !!!", OPTIGA_UTIL_SERVICE, - OPTIGA_UTIL_SERVICE_COLOR); - break; - } - - while (OPTIGA_LIB_BUSY == optiga_lib_status) - { - // Wait until the optiga_util_write_metadata operation is completed - } - - if (OPTIGA_LIB_SUCCESS != optiga_lib_status) - { - optiga_lib_print_message("optiga_util_write_metadata failed", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - return_status = optiga_lib_status; - break; - } - else - { - optiga_lib_print_message("optiga_util_write_metadata successful", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - } + printf("optiga_util_write_metadata failed\n"); + break; } } while (0); - - // me_util instance can be destroyed - // if no close_application w.r.t hibernate is required to be performed - if (me_util) - { - optiga_util_destroy(me_util); - } } optiga_lib_status_t deriveKey_HKDF(const uint8_t * salt, uint16_t salt_length, const uint8_t * info, uint16_t info_length, @@ -408,39 +337,22 @@ optiga_lib_status_t deriveKey_HKDF(const uint8_t * salt, uint16_t salt_length, c do { - // Create an instance of optiga_crypt_t - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - if (NULL == p_local_crypt) - { - optiga_lib_print_message("optiga_crypt_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - break; - } - optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_crypt_hkdf(p_local_crypt, OPTIGA_HKDF_SHA_256, TRUSTM_HKDF_OID_KEY, /* Input secret OID */ + return_status = optiga_crypt_hkdf(me_crypt, OPTIGA_HKDF_SHA_256, TRUSTM_HKDF_OID_KEY, /* Input secret OID */ salt, salt_length, info, info_length, derived_key_length, TRUE, derived_key); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_hkdf api returns error !!! - optiga_lib_print_message("optiga_crypt_hkdf api returns error !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + printf("optiga_crypt_hkdf api returns error %02X\n", return_status); break; } - - while (p_local_crypt->instance_state != OPTIGA_LIB_INSTANCE_FREE) - ; - - if (OPTIGA_LIB_SUCCESS != optiga_lib_status) + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_hkdf failed - optiga_lib_print_message("optiga_crypt_hkdf failed", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + printf("optiga_crypt_hkdf failed\n"); break; } } while (0); - if (p_local_crypt) - { - optiga_crypt_destroy(p_local_crypt); - } return return_status; } @@ -451,25 +363,24 @@ optiga_lib_status_t hmac_sha256(optiga_hmac_type_t type, const uint8_t * input_d do { - // Create an instance of optiga_crypt_t - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - if (NULL == p_local_crypt) - { - optiga_lib_print_message("optiga_crypt_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - break; - } - - return_status = OPTIGA_LIB_BUSY; + optiga_lib_status = OPTIGA_LIB_BUSY; #if ENABLE_HMAC_MULTI_STEP // If the size is less than the max length supported if (input_data_length <= MAX_MAC_DATA_LEN) { - return_status = - optiga_crypt_hmac(p_local_crypt, type, TRUSTM_HMAC_OID_KEY, input_data, input_data_length, mac, mac_length); + return_status = optiga_crypt_hmac(me_crypt, type, TRUSTM_HMAC_OID_KEY, input_data, input_data_length, mac, mac_length); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_hmac api returns error !!! - optiga_lib_print_message("optiga_crypt_hmac api returns error !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_hmac returns error !!! + printf("optiga_crypt_hmac api error %02X\n", return_status); + break; + } + + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) + { + // optiga_crypt_hmac returns error !!! + printf("optiga_crypt_hmac returns error\n"); break; } } @@ -479,13 +390,18 @@ optiga_lib_status_t hmac_sha256(optiga_hmac_type_t type, const uint8_t * input_d uint32_t dataLenTemp = 0; uint32_t remainingLen = input_data_length; // Start the HMAC Operation - return_status = optiga_crypt_hmac_start(p_local_crypt, type, TRUSTM_HMAC_OID_KEY, input_data, MAX_MAC_DATA_LEN); - + return_status = optiga_crypt_hmac_start(me_crypt, type, TRUSTM_HMAC_OID_KEY, input_data, MAX_MAC_DATA_LEN); + if (OPTIGA_LIB_SUCCESS != return_status) + { + // optiga_crypt_hmac returns error !!! + printf("optiga_crypt_hmac_start api error %02X\n", return_status); + break; + } + WAIT_FOR_COMPLETION(return_status); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_hmac_start api returns error !!! - optiga_lib_print_message("optiga_crypt_hmac_start api returns error !!!", OPTIGA_UTIL_SERVICE, - OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_hmac_start returns error !!! + printf("optiga_crypt_hmac_start returns error\n"); break; } remainingLen = input_data_length - MAX_MAC_DATA_LEN; @@ -496,18 +412,21 @@ optiga_lib_status_t hmac_sha256(optiga_hmac_type_t type, const uint8_t * input_d if (remainingLen > MAX_MAC_DATA_LEN) { - return_status = OPTIGA_LIB_BUSY; - // printf("HMAC Update\n"); - // Continue HMAC operation on input data + optiga_lib_status = OPTIGA_LIB_BUSY; return_status = - optiga_crypt_hmac_update(p_local_crypt, (input_data + (input_data_length - remainingLen)), dataLenTemp); + optiga_crypt_hmac_update(me_crypt, (input_data + (input_data_length - remainingLen)), dataLenTemp); + if (OPTIGA_LIB_SUCCESS != return_status) + { + // optiga_crypt_hmac_update returns error !!! + printf("optiga_crypt_hmac_update api error %02X\n", return_status); + break; + } + WAIT_FOR_COMPLETION(return_status); remainingLen = remainingLen - dataLenTemp; - if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_hmac_update api returns error !!! - optiga_lib_print_message("optiga_crypt_hmac_update api returns error !!!", OPTIGA_UTIL_SERVICE, - OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_hmac_update returns error !!! + printf("optiga_crypt_hmac_update returns error\n"); break; } } @@ -515,15 +434,20 @@ optiga_lib_status_t hmac_sha256(optiga_hmac_type_t type, const uint8_t * input_d { // End HMAC sequence and return the MAC generated // printf("HMAC Finalize\n"); - return_status = OPTIGA_LIB_BUSY; - return_status = optiga_crypt_hmac_finalize(p_local_crypt, (input_data + (input_data_length - remainingLen)), - dataLenTemp, mac, mac_length); - + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = optiga_crypt_hmac_finalize(me_crypt, (input_data + (input_data_length - remainingLen)), + dataLenTemp, mac, mac_length); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_hmac_finalize api returns error !!! - optiga_lib_print_message("optiga_crypt_hmac_finalize api returns error !!!", OPTIGA_UTIL_SERVICE, - OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_hmac_finalize returns error !!! + printf("optiga_crypt_hmac_finalize api error %02X\n", return_status); + break; + } + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) + { + // optiga_crypt_hmac_finalize returns error !!! + printf("optiga_crypt_hmac_finalize returns error\n"); break; } } @@ -531,70 +455,48 @@ optiga_lib_status_t hmac_sha256(optiga_hmac_type_t type, const uint8_t * input_d } #else - return_status = optiga_crypt_hmac(p_local_crypt, type, TRUSTM_HMAC_OID_KEY, input_data, input_data_length, mac, mac_length); - // printf("Output Length %ld Input Length %ld \n", *mac_length, input_data_length); + return_status = optiga_crypt_hmac(me_crypt, type, TRUSTM_HMAC_OID_KEY, input_data, input_data_length, mac, mac_length); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_hmac api returns error !!! - optiga_lib_print_message("optiga_crypt_hmac api returns error !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_hmac returns error !!! + printf("optiga_crypt_hmac api error %02X\n", return_status); break; } - - while (p_local_crypt->instance_state != OPTIGA_LIB_INSTANCE_FREE) - ; - - if (OPTIGA_LIB_SUCCESS != optiga_lib_status) + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_hkdf failed - optiga_lib_print_message("optiga_crypt_hkdf failed", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_hmac returns error !!! + printf("optiga_crypt_hmac returns error\n"); break; } #endif } while (0); - if (p_local_crypt) - { - optiga_crypt_destroy(p_local_crypt); - } return return_status; } + optiga_lib_status_t optiga_crypt_rng(uint8_t * random_data, uint16_t random_data_length) { optiga_lib_status_t return_status; do { - // Create an instance of optiga_crypt_t - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - if (NULL == p_local_crypt) - { - optiga_lib_print_message("optiga_crypt_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - break; - } - - return_status = OPTIGA_LIB_BUSY; - return_status = optiga_crypt_random(p_local_crypt, OPTIGA_RNG_TYPE_DRNG, random_data, random_data_length); + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = optiga_crypt_random(me_crypt, OPTIGA_RNG_TYPE_DRNG, random_data, random_data_length); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_random api returns error !!! - optiga_lib_print_message("optiga_crypt_random api returns error !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_random returns error !!! + printf("optiga_crypt_random api error %02X\n", return_status); break; } - - while (p_local_crypt->instance_state != OPTIGA_LIB_INSTANCE_FREE) - ; - - if (OPTIGA_LIB_SUCCESS != optiga_lib_status) + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) { // optiga_crypt_random failed - optiga_lib_print_message("optiga_crypt_random failed", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + printf("optiga_crypt_random returns error\n"); break; } } while (0); - if (p_local_crypt) - { - optiga_crypt_destroy(p_local_crypt); - } return return_status; } optiga_lib_status_t trustm_ecc_keygen(uint16_t optiga_key_id, uint8_t key_type, optiga_ecc_curve_t curve_id, uint8_t * pubkey, @@ -610,35 +512,24 @@ optiga_lib_status_t trustm_ecc_keygen(uint16_t optiga_key_id, uint8_t key_type, } do { - // Create an instance of optiga_crypt_t - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - if (NULL == p_local_crypt) + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = + optiga_crypt_ecc_generate_keypair(me_crypt, curve_id, key_type, FALSE, &optiga_key_id, (pubkey + i), pubkey_length); + if (OPTIGA_LIB_SUCCESS != return_status) { - optiga_lib_print_message("optiga_crypt_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_ecc_generate_keypair api returns error !!! + printf("optiga_crypt_ecc_generate_keypair api error %02X\n", return_status); break; } - - optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_crypt_ecc_generate_keypair(p_local_crypt, curve_id, key_type, FALSE, &optiga_key_id, (pubkey + i), - pubkey_length); + WAIT_FOR_COMPLETION(return_status); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_ecc_generate_keypair api returns error !!! - optiga_lib_print_message("optiga_crypt_ecc_generate_keypair api returns error !!!", OPTIGA_UTIL_SERVICE, - OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_ecc_generate_keypair returns error !!! + printf("optiga_crypt_ecc_generate_keypair returns error\n"); break; } - - while (p_local_crypt->instance_state != OPTIGA_LIB_INSTANCE_FREE) - ; - } while (0); - if (p_local_crypt) - { - optiga_crypt_destroy(p_local_crypt); - } - *pubkey_length += sizeof(header256); return return_status; } @@ -648,32 +539,22 @@ void trustmGetKey(uint16_t optiga_oid, uint8_t * pubkey, uint16_t * pubkeyLen) uint16_t offset = 0; do { - // Create an instance of optiga_crypt_t - p_local_util = optiga_util_create(0, optiga_util_callback, NULL); - if (NULL == p_local_util) + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = optiga_util_read_data(me_util, optiga_oid, offset, pubkey, pubkeyLen); + if (OPTIGA_LIB_SUCCESS != return_status) { - optiga_lib_print_message("optiga_util_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_util_read_data api returns error !!! + printf("optiga_util_read_data api error %02X\n", return_status); break; } - - optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_util_read_data(p_local_util, optiga_oid, offset, pubkey, pubkeyLen); + WAIT_FOR_COMPLETION(return_status); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_util_read_pubkey api returns error !!! - optiga_lib_print_message("optiga_util_read_pubkey returns error !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_util_read_pubkey returns error !!! + printf("optiga_util_read_pubkey returns error\n"); break; } - - while (optiga_lib_status == OPTIGA_LIB_BUSY) - ; - } while (0); - - if (p_local_util) - { - optiga_util_destroy(p_local_util); - } } optiga_lib_status_t trustm_hash(uint8_t * msg, uint16_t msg_length, uint8_t * digest, uint8_t digest_length) { @@ -681,34 +562,25 @@ optiga_lib_status_t trustm_hash(uint8_t * msg, uint16_t msg_length, uint8_t * di hash_data_from_host_t hash_data_host; do { - // Create an instance of optiga_crypt_t - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - if (NULL == p_local_crypt) - { - optiga_lib_print_message("optiga_crypt_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - break; - } hash_data_host.buffer = msg; hash_data_host.length = msg_length; optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_crypt_hash(p_local_crypt, OPTIGA_HASH_TYPE_SHA_256, OPTIGA_CRYPT_HOST_DATA, &hash_data_host, digest); - + return_status = optiga_crypt_hash(me_crypt, OPTIGA_HASH_TYPE_SHA_256, OPTIGA_CRYPT_HOST_DATA, &hash_data_host, digest); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_ecdsa_sign api returns error !!! - optiga_lib_print_message("optiga_crypt_hash api returns error !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_hash api returns error !!! + printf("optiga_crypt_hash api error %02X\n", return_status); + break; + } + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) + { + // optiga_crypt_hash api returns error !!! + printf("optiga_crypt_hash returns error\n"); break; } - - while (p_local_crypt->instance_state != OPTIGA_LIB_INSTANCE_FREE) - ; - } while (0); - if (p_local_crypt) - { - optiga_crypt_destroy(p_local_crypt); - } return return_status; } optiga_lib_status_t trustm_ecdsa_sign(optiga_key_id_t optiga_key_id, uint8_t * digest, uint8_t digest_length, uint8_t * signature, @@ -718,26 +590,21 @@ optiga_lib_status_t trustm_ecdsa_sign(optiga_key_id_t optiga_key_id, uint8_t * d int i; do { - // Create an instance of optiga_crypt_t - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - if (NULL == p_local_crypt) + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = optiga_crypt_ecdsa_sign(me_crypt, digest, digest_length, optiga_key_id, signature, signature_length); + if (OPTIGA_LIB_SUCCESS != return_status) { - optiga_lib_print_message("optiga_crypt_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_ecdsa_sign api returns error !!! + printf("optiga_crypt_ecdsa_sign api error %02X\n", return_status); break; } - optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_crypt_ecdsa_sign(p_local_crypt, digest, digest_length, optiga_key_id, signature, signature_length); + WAIT_FOR_COMPLETION(return_status); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_ecdsa_sign api returns error !!! - optiga_lib_print_message("optiga_crypt_ecdsa_sign api returns error !!!", OPTIGA_UTIL_SERVICE, - OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_ecdsa_sign returns error !!! + printf("optiga_crypt_ecdsa_sign returns error\n"); break; } - - while (p_local_crypt->instance_state != OPTIGA_LIB_INSTANCE_FREE) - ; - for (i = (*signature_length - 1); i >= 0; i--) { signature[i + 2] = signature[i]; @@ -749,23 +616,18 @@ optiga_lib_status_t trustm_ecdsa_sign(optiga_key_id_t optiga_key_id, uint8_t * d } while (0); - if (p_local_crypt) - { - optiga_crypt_destroy(p_local_crypt); - } return return_status; } + void ecc_pub_key_bit(uint8_t * q_buffer, uint8_t q_length, uint8_t * pub_key_buffer, uint16_t * pub_key_length) { -#define OPTIGA_UTIL_ECC_DER_ADDITIONAL_LENGTH (0x02) +#define OPTIGA_UTIL_ECC_DER_ADDITIONAL_LENGTH (0x01) uint16_t index = 0; pub_key_buffer[index++] = OPTIGA_UTIL_DER_BITSTRING_TAG; pub_key_buffer[index++] = q_length + OPTIGA_UTIL_ECC_DER_ADDITIONAL_LENGTH; pub_key_buffer[index++] = OPTIGA_UTIL_DER_NUM_UNUSED_BITS; - // Compression format. Supports only 04 [uncompressed] - pub_key_buffer[index++] = 0x04; pal_os_memcpy(&pub_key_buffer[index], q_buffer, q_length); index += q_length; @@ -781,44 +643,36 @@ optiga_lib_status_t trustm_ecdsa_verify(uint8_t * digest, uint8_t digest_length, uint8_t ecc_public_key[70] = { 0x00 }; uint16_t i; uint16_t ecc_public_key_length = 0; + ecc_pub_key_bit(ecc_pubkey, ecc_pubkey_length, ecc_public_key, &ecc_public_key_length); public_key_from_host_t public_key_details = { ecc_public_key, ecc_public_key_length, (uint8_t) OPTIGA_ECC_CURVE_NIST_P_256 }; do { - // Create an instance of optiga_crypt_t - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - - if (NULL == p_local_crypt) - { - optiga_lib_print_message("optiga_crypt_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - break; - } signature_length = signature[1]; for (i = 0; i < signature_length; i++) { signature[i] = signature[i + 2]; } - return_status = OPTIGA_LIB_BUSY; - return_status = optiga_crypt_ecdsa_verify(p_local_crypt, digest, digest_length, signature, signature_length, - OPTIGA_CRYPT_HOST_DATA, &public_key_details); + + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = optiga_crypt_ecdsa_verify(me_crypt, digest, digest_length, signature, signature_length, + OPTIGA_CRYPT_HOST_DATA, &public_key_details); if (OPTIGA_LIB_SUCCESS != return_status) { // optiga_crypt_ecdsa_verify api returns error !!! - optiga_lib_print_message("optiga_crypt_ecdsa_verify api returns error !!!", OPTIGA_UTIL_SERVICE, - OPTIGA_UTIL_SERVICE_COLOR); + printf("optiga_crypt_ecdsa_verify api error %02X\n", return_status); + break; + } + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) + { + // optiga_crypt_ecdsa_verify returns error !!! + printf("optiga_crypt_ecdsa_verify returns error\n"); break; } - - while (p_local_crypt->instance_state != OPTIGA_LIB_INSTANCE_FREE) - ; - } while (0); - if (p_local_crypt) - { - optiga_crypt_destroy(p_local_crypt); - } return return_status; } @@ -834,40 +688,35 @@ CHIP_ERROR trustmGetCertificate(uint16_t optiga_oid, uint8_t * buf, uint16_t * b trustm_Open(); do { - // Create an instance of optiga_util to read the certificate from OPTIGA. - p_local_util = optiga_util_create(0, optiga_util_callback, NULL); - if (!p_local_util) - { - optiga_lib_print_message("optiga_util_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - break; - } optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_util_read_data(p_local_util, optiga_oid, 0, ifx_cert_hex, &ifx_cert_hex_len); + return_status = optiga_util_read_data(me_util, optiga_oid, 0, ifx_cert_hex, &ifx_cert_hex_len); if (OPTIGA_LIB_SUCCESS != return_status) { // optiga_util_read_data api returns error !!! - optiga_lib_print_message("optiga_util_read_data api returns error !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + printf("optiga_util_read_data api error %02X\n", return_status); break; } - while (optiga_lib_status == OPTIGA_LIB_BUSY) - ; - if (OPTIGA_LIB_SUCCESS != optiga_lib_status) + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) { // optiga_util_read_data failed - optiga_lib_print_message("optiga_util_read_data failed", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + printf("trustmGetCertificate failed\n"); break; } - memcpy(buf, ifx_cert_hex, ifx_cert_hex_len); *buflen = ifx_cert_hex_len; } while (0); - if (p_local_util) + if (return_status == OPTIGA_LIB_SUCCESS) + { + return CHIP_NO_ERROR; + } + else { - optiga_util_destroy(p_local_util); + return CHIP_ERROR_INTERNAL; } - return CHIP_NO_ERROR; } + optiga_lib_status_t trustm_ecdh_derive_secret(optiga_key_id_t optiga_key_id, uint8_t * public_key, uint16_t public_key_length, uint8_t * shared_secret, uint8_t shared_secret_length) { @@ -879,33 +728,23 @@ optiga_lib_status_t trustm_ecdh_derive_secret(optiga_key_id_t optiga_key_id, uin }; do { - // Create an instance of optiga_crypt_t - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - - if (NULL == p_local_crypt) + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = optiga_crypt_ecdh(me_crypt, optiga_key_id, &public_key_details, TRUE, shared_secret); + if (OPTIGA_LIB_SUCCESS != return_status) { - optiga_lib_print_message("optiga_crypt_create failed !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_util_read_data api returns error !!! + printf("optiga_crypt_ecdh api error %02X\n", return_status); break; } - - optiga_lib_status = OPTIGA_LIB_BUSY; - return_status = optiga_crypt_ecdh(p_local_crypt, optiga_key_id, &public_key_details, TRUE, shared_secret); + WAIT_FOR_COMPLETION(return_status); if (OPTIGA_LIB_SUCCESS != return_status) { - // optiga_crypt_ecdh api returns error !!! - optiga_lib_print_message("optiga_crypt_ecdh api returns error !!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_ecdh returns error !!! + printf("optiga_crypt_ecdh returns error\n"); break; } - - while (p_local_crypt->instance_state != OPTIGA_LIB_INSTANCE_FREE) - ; - } while (0); - if (p_local_crypt) - { - optiga_crypt_destroy(p_local_crypt); - } return return_status; } @@ -921,37 +760,40 @@ optiga_lib_status_t trustm_PBKDF2_HMAC(const unsigned char * salt, size_t slen, unsigned char * out_p = output; do { - // Create an instance of optiga_crypt_t - p_local_crypt = optiga_crypt_create(0, optiga_crypt_callback, NULL); - if (NULL == p_local_crypt) + // Calculate U1, U1 ends up in work + optiga_lib_status = OPTIGA_LIB_BUSY; + return_status = + optiga_crypt_hmac(me_crypt, OPTIGA_HMAC_SHA_256, TRUSTM_HMAC_OID_KEY, salt, (uint32_t) slen, work, &work_len); + if (OPTIGA_LIB_SUCCESS != return_status) { - optiga_lib_print_message("optiga_crypt_create failed!!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_hmac api returns error !!! + printf("optiga_crypt_hmac api 1 error %02X\n", return_status); break; } - - // Calculate U1, U1 ends up in work - return_status = - optiga_crypt_hmac(p_local_crypt, OPTIGA_HMAC_SHA_256, TRUSTM_HMAC_OID_KEY, salt, (uint32_t) slen, work, &work_len); - + WAIT_FOR_COMPLETION(return_status); if (OPTIGA_LIB_SUCCESS != return_status) { - optiga_lib_print_message("optiga_crypt_hmac api returns error!!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + printf("optiga_crypt_hmac 1 returns error\n"); break; } - return_status = OPTIGA_LIB_BUSY; memcpy(md1, work, md1_len); for (unsigned int i = 1; i < iteration_count; i++) { + optiga_lib_status = OPTIGA_LIB_BUSY; // Calculated subsequent U, which ends up in md1 - return_status = optiga_crypt_hmac(p_local_crypt, OPTIGA_HMAC_SHA_256, TRUSTM_HMAC_OID_KEY, md1, md1_len, md1, &md1_len); - + return_status = optiga_crypt_hmac(me_crypt, OPTIGA_HMAC_SHA_256, TRUSTM_HMAC_OID_KEY, md1, md1_len, md1, &md1_len); if (OPTIGA_LIB_SUCCESS != return_status) { - optiga_lib_print_message("optiga_crypt_hmac api returns error!!!", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); + // optiga_crypt_hmac api returns error !!! + printf("optiga_crypt_hmac api 2 error %02X\n", return_status); + break; + } + WAIT_FOR_COMPLETION(return_status); + if (OPTIGA_LIB_SUCCESS != return_status) + { + printf("optiga_crypt_hmac 2 returns error\n"); break; } - return_status = OPTIGA_LIB_BUSY; - // U1 xor U2 for (int j = 0; j < (int) md1_len; j++) { @@ -959,25 +801,8 @@ optiga_lib_status_t trustm_PBKDF2_HMAC(const unsigned char * salt, size_t slen, } } - while (p_local_crypt->instance_state != OPTIGA_LIB_INSTANCE_FREE) - ; - - if (OPTIGA_LIB_SUCCESS != optiga_lib_status) - - { - - // optiga_crypt_hkdf failed - - optiga_lib_print_message("optiga_crypt_pbkdf_hmac failed failed", OPTIGA_UTIL_SERVICE, OPTIGA_UTIL_SERVICE_COLOR); - - break; - } memcpy(out_p, work, key_length); } while (0); - if (p_local_crypt) - { - optiga_crypt_destroy(p_local_crypt); - } return return_status; } diff --git a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.h b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.h index 317bff7c05403e..c45ff84bb0f26e 100644 --- a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.h +++ b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.h @@ -142,6 +142,7 @@ class GenericThreadStackManagerImpl_OpenThread // ===== Members available to the implementation subclass. + CHIP_ERROR ConfigureThreadStack(otInstance * otInst); CHIP_ERROR DoInit(otInstance * otInst); bool IsThreadAttachedNoLock(void); bool IsThreadInterfaceUpNoLock(void); diff --git a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.hpp b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.hpp index 876cb54385efe6..61452f5ff0ec90 100644 --- a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.hpp +++ b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.hpp @@ -1088,29 +1088,21 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread::_GetPollPeriod(u return CHIP_NO_ERROR; } +/** + * @brief Helper that sets callbacks for OpenThread state changes and configures the Thread stack. + * Assigns mOTInst to an instance, and configures the OT stack on a device by setting state change callbacks enabling features + * for IPv6 address configuration, enabling the Thread network if necessary, and handling SRP if enabled. + * Allows for the configuration of the Thread stack on a device where the instance and the otCLI are already initialised. + * + * @param otInst Pointer to the OT instance + * @return CHIP_ERROR OpenThread error mapped to CHIP_ERROR + */ template -CHIP_ERROR GenericThreadStackManagerImpl_OpenThread::DoInit(otInstance * otInst) +CHIP_ERROR GenericThreadStackManagerImpl_OpenThread::ConfigureThreadStack(otInstance * otInst) { CHIP_ERROR err = CHIP_NO_ERROR; otError otErr = OT_ERROR_NONE; - // Arrange for OpenThread errors to be translated to text. - RegisterOpenThreadErrorFormatter(); - - mOTInst = NULL; - - // If an OpenThread instance hasn't been supplied, call otInstanceInitSingle() to - // create or acquire a singleton instance of OpenThread. - if (otInst == NULL) - { - otInst = otInstanceInitSingle(); - VerifyOrExit(otInst != NULL, err = MapOpenThreadError(OT_ERROR_FAILED)); - } - -#if !defined(PW_RPC_ENABLED) && CHIP_DEVICE_CONFIG_THREAD_ENABLE_CLI - otAppCliInit(otInst); -#endif - mOTInst = otInst; // Arrange for OpenThread to call the OnOpenThreadStateChange method whenever a @@ -1146,14 +1138,42 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread::DoInit(otInstanc } #endif - initNetworkCommissioningThreadDriver(); - exit: ChipLogProgress(DeviceLayer, "OpenThread started: %s", otThreadErrorToString(otErr)); return err; } +template +CHIP_ERROR GenericThreadStackManagerImpl_OpenThread::DoInit(otInstance * otInst) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + // Arrange for OpenThread errors to be translated to text. + RegisterOpenThreadErrorFormatter(); + + mOTInst = NULL; + + // If an OpenThread instance hasn't been supplied, call otInstanceInitSingle() to + // create or acquire a singleton instance of OpenThread. + if (otInst == NULL) + { + otInst = otInstanceInitSingle(); + VerifyOrExit(otInst != NULL, err = MapOpenThreadError(OT_ERROR_FAILED)); + } + +#if !defined(PW_RPC_ENABLED) && CHIP_DEVICE_CONFIG_THREAD_ENABLE_CLI + otAppCliInit(otInst); +#endif + + err = ConfigureThreadStack(otInst); + + initNetworkCommissioningThreadDriver(); + +exit: + return err; +} + template bool GenericThreadStackManagerImpl_OpenThread::IsThreadAttachedNoLock(void) { diff --git a/src/platform/logging/BUILD.gn b/src/platform/logging/BUILD.gn index 6d54ca897a4ac6..bc41c12da17e88 100644 --- a/src/platform/logging/BUILD.gn +++ b/src/platform/logging/BUILD.gn @@ -79,7 +79,7 @@ source_set("default") { } else { assert( chip_device_platform == "fake" || chip_device_platform == "android" || - chip_device_platform == "external") + chip_device_platform == "external" || chip_device_platform == "none") } } } diff --git a/src/platform/logging/impl/stdio/Logging.cpp b/src/platform/logging/impl/stdio/Logging.cpp index 26e050f0286f9f..d36fe2aae2dc64 100644 --- a/src/platform/logging/impl/stdio/Logging.cpp +++ b/src/platform/logging/impl/stdio/Logging.cpp @@ -59,6 +59,7 @@ void LogV(const char * module, uint8_t category, const char * msg, va_list v) printf("[%s] ", module); vprintf(msg, v); printf("\033[0m\n"); + fflush(stdout); #if defined(_POSIX_THREAD_SAFE_FUNCTIONS) funlockfile(stdout); diff --git a/src/platform/nrfconnect/CHIPDevicePlatformConfig.h b/src/platform/nrfconnect/CHIPDevicePlatformConfig.h index 991c3689425ae7..d0d31252f99368 100644 --- a/src/platform/nrfconnect/CHIPDevicePlatformConfig.h +++ b/src/platform/nrfconnect/CHIPDevicePlatformConfig.h @@ -74,6 +74,11 @@ #define CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP 0 #endif +// nrfconnect platform does not support ethernet yet, but we need this config defined as we share the Zephyr platform +#ifndef CHIP_DEVICE_CONFIG_ENABLE_ETHERNET +#define CHIP_DEVICE_CONFIG_ENABLE_ETHERNET 0 +#endif // CHIP_DEVICE_CONFIG_ENABLE_ETHERNET + #ifdef CONFIG_BT #define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE CONFIG_BT #else diff --git a/src/platform/nrfconnect/CHIPPlatformConfig.h b/src/platform/nrfconnect/CHIPPlatformConfig.h index ee4609e05c5e5c..096bc3426c5fe3 100644 --- a/src/platform/nrfconnect/CHIPPlatformConfig.h +++ b/src/platform/nrfconnect/CHIPPlatformConfig.h @@ -141,3 +141,9 @@ #define CHIP_CONFIG_ICD_CLIENTS_SUPPORTED_PER_FABRIC CONFIG_CHIP_ICD_CLIENTS_PER_FABRIC #endif // CONFIG_CHIP_ICD_CLIENTS_PER_FABRIC #endif // CHIP_CONFIG_ICD_CLIENTS_SUPPORTED_PER_FABRIC + +#ifndef CHIP_CONFIG_ENABLE_BDX_LOG_TRANSFER +#ifdef CONFIG_CHIP_ENABLE_BDX_LOG_TRANSFER +#define CHIP_CONFIG_ENABLE_BDX_LOG_TRANSFER CONFIG_CHIP_ENABLE_BDX_LOG_TRANSFER +#endif // CONFIG_CHIP_ENABLE_BDX_LOG_TRANSFER +#endif // CHIP_CONFIG_ENABLE_BDX_LOG_TRANSFER diff --git a/src/platform/nrfconnect/ConnectivityManagerImpl.cpp b/src/platform/nrfconnect/ConnectivityManagerImpl.cpp index ecd185200c78f7..971c365561b2bc 100644 --- a/src/platform/nrfconnect/ConnectivityManagerImpl.cpp +++ b/src/platform/nrfconnect/ConnectivityManagerImpl.cpp @@ -24,6 +24,10 @@ #include #include +#ifndef CONFIG_ARCH_POSIX +#include +#endif + #include #if INET_CONFIG_ENABLE_TCP_ENDPOINT diff --git a/src/platform/nrfconnect/SystemPlatformConfig.h b/src/platform/nrfconnect/SystemPlatformConfig.h index fb544466dcdd75..de2f59cb7eac27 100644 --- a/src/platform/nrfconnect/SystemPlatformConfig.h +++ b/src/platform/nrfconnect/SystemPlatformConfig.h @@ -66,3 +66,6 @@ struct ChipDeviceEvent; #endif // CHIP_SYSTEM_CONFIG_PACKETBUFFER_CAPACITY_MAX // ========== Platform-specific Configuration Overrides ========= + +// Disable Zephyr Socket extensions module, as the Zephyr RTOS now implements recvmsg() +#define CHIP_SYSTEM_CONFIG_USE_ZEPHYR_SOCKET_EXTENSIONS 0 diff --git a/src/platform/nrfconnect/wifi/WiFiManager.cpp b/src/platform/nrfconnect/wifi/WiFiManager.cpp index 11784f4475cfe0..6b1effd541be15 100644 --- a/src/platform/nrfconnect/wifi/WiFiManager.cpp +++ b/src/platform/nrfconnect/wifi/WiFiManager.cpp @@ -49,6 +49,21 @@ namespace DeviceLayer { namespace { +app::Clusters::NetworkCommissioning::WiFiBandEnum ConvertBandEnum(uint8_t band) +{ + switch (band) + { + case WIFI_FREQ_BAND_2_4_GHZ: + return app::Clusters::NetworkCommissioning::WiFiBandEnum::k2g4; + case WIFI_FREQ_BAND_5_GHZ: + return app::Clusters::NetworkCommissioning::WiFiBandEnum::k5g; + case WIFI_FREQ_BAND_6_GHZ: + return app::Clusters::NetworkCommissioning::WiFiBandEnum::k6g; + default: + return app::Clusters::NetworkCommissioning::WiFiBandEnum::kUnknownEnumValue; + } +} + NetworkCommissioning::WiFiScanResponse ToScanResponse(const wifi_scan_result * result) { NetworkCommissioning::WiFiScanResponse response = {}; @@ -61,9 +76,10 @@ NetworkCommissioning::WiFiScanResponse ToScanResponse(const wifi_scan_result * r // TODO: Distinguish WPA versions response.security.Set(result->security == WIFI_SECURITY_TYPE_PSK ? NetworkCommissioning::WiFiSecurity::kWpaPersonal : NetworkCommissioning::WiFiSecurity::kUnencrypted); - response.channel = result->channel; - response.rssi = result->rssi; - response.ssidLen = result->ssid_length; + response.channel = result->channel; + response.rssi = result->rssi; + response.ssidLen = result->ssid_length; + response.wiFiBand = ConvertBandEnum(result->band); memcpy(response.ssid, result->ssid, result->ssid_length); // TODO: MAC/BSSID is not filled by the Wi-Fi driver memcpy(response.bssid, result->mac, result->mac_length); @@ -300,8 +316,8 @@ CHIP_ERROR WiFiManager::GetNetworkStatistics(NetworkStatistics & stats) const stats.mPacketMulticastRxCount = data.multicast.rx; stats.mPacketMulticastTxCount = data.multicast.tx; - stats.mPacketUnicastRxCount = data.pkts.rx - data.multicast.rx - data.broadcast.rx; - stats.mPacketUnicastTxCount = data.pkts.tx - data.multicast.tx - data.broadcast.tx; + stats.mPacketUnicastRxCount = data.unicast.rx; + stats.mPacketUnicastTxCount = data.unicast.tx; stats.mBeaconsSuccessCount = data.sta_mgmt.beacons_rx; stats.mBeaconsLostCount = data.sta_mgmt.beacons_miss; diff --git a/src/platform/silabs/ConfigurationManagerImpl.cpp b/src/platform/silabs/ConfigurationManagerImpl.cpp index 9454367d3bf030..5a511038c799ed 100644 --- a/src/platform/silabs/ConfigurationManagerImpl.cpp +++ b/src/platform/silabs/ConfigurationManagerImpl.cpp @@ -260,6 +260,18 @@ void ConfigurationManagerImpl::RunConfigUnitTest(void) #endif // CONFIG_BUILD_FOR_HOST_UNIT_TEST } +/// @brief Helper to erase Thread info from device +void ConfigurationManagerImpl::ClearThreadStack() +{ +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT + ThreadStackMgr().ClearAllSrpHostAndServices(); +#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT + ChipLogProgress(DeviceLayer, "Clearing Thread provision"); + ThreadStackMgr().ErasePersistentInfo(); +#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD +} + void ConfigurationManagerImpl::DoFactoryReset(intptr_t arg) { CHIP_ERROR err; @@ -272,13 +284,7 @@ void ConfigurationManagerImpl::DoFactoryReset(intptr_t arg) ChipLogError(DeviceLayer, "FactoryResetConfig() failed: %s", chip::ErrorStr(err)); } -#if CHIP_DEVICE_CONFIG_ENABLE_THREAD -#if CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT - ThreadStackMgr().ClearAllSrpHostAndServices(); -#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT - ChipLogProgress(DeviceLayer, "Clearing Thread provision"); - ThreadStackMgr().ErasePersistentInfo(); -#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD + GetDefaultInstance().ClearThreadStack(); PersistedStorage::KeyValueStoreMgrImpl().ErasePartition(); diff --git a/src/platform/silabs/ConfigurationManagerImpl.h b/src/platform/silabs/ConfigurationManagerImpl.h index f34e37ed91bb52..262b68053a3214 100644 --- a/src/platform/silabs/ConfigurationManagerImpl.h +++ b/src/platform/silabs/ConfigurationManagerImpl.h @@ -46,6 +46,8 @@ class ConfigurationManagerImpl : public Internal::GenericConfigurationManagerImp CHIP_ERROR GetTotalOperationalHours(uint32_t & totalOperationalHours); CHIP_ERROR StoreTotalOperationalHours(uint32_t totalOperationalHours); + void ClearThreadStack(); + private: // ===== Members that implement the ConfigurationManager public interface. diff --git a/src/platform/silabs/ThreadStackManagerImpl.h b/src/platform/silabs/ThreadStackManagerImpl.h index c56990fb0d3712..411c8eeb0676e1 100644 --- a/src/platform/silabs/ThreadStackManagerImpl.h +++ b/src/platform/silabs/ThreadStackManagerImpl.h @@ -25,12 +25,17 @@ #pragma once -#include #include #include #include +#include "cmsis_os2.h" + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT +static constexpr uint32_t threadSrpClearAllFlags = 0x0001U; +#endif + extern "C" void otSysEventSignalPending(void); namespace chip { @@ -47,8 +52,7 @@ extern int GetEntropy_EFR32(uint8_t * buf, size_t bufSize); * using the Silicon Labs SDK and the OpenThread stack. */ class ThreadStackManagerImpl final : public ThreadStackManager, - public Internal::GenericThreadStackManagerImpl_OpenThread, - public Internal::GenericThreadStackManagerImpl_FreeRTOS + public Internal::GenericThreadStackManagerImpl_OpenThread { // Allow the ThreadStackManager interface class to delegate method calls to // the implementation methods provided by this class. @@ -58,8 +62,6 @@ class ThreadStackManagerImpl final : public ThreadStackManager, // this class. #ifndef DOXYGEN_SHOULD_SKIP_THIS friend Internal::GenericThreadStackManagerImpl_OpenThread; - friend Internal::GenericThreadStackManagerImpl_OpenThread; - friend Internal::GenericThreadStackManagerImpl_FreeRTOS; #endif // Allow glue functions called by OpenThread to call helper methods on this @@ -72,11 +74,21 @@ class ThreadStackManagerImpl final : public ThreadStackManager, using ThreadStackManager::InitThreadStack; CHIP_ERROR InitThreadStack(otInstance * otInst); + void FactoryResetThreadStack(void); private: // ===== Methods that implement the ThreadStackManager abstract interface. CHIP_ERROR _InitThreadStack(void); + CHIP_ERROR _StartThreadTask(void); + void _LockThreadStack(void); + bool _TryLockThreadStack(void); + void _UnlockThreadStack(void); + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT + void _WaitOnSrpClearAllComplete(); + void _NotifySrpClearAllComplete(); +#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT // ===== Members for internal use by the following friends. friend ThreadStackManager & ::chip::DeviceLayer::ThreadStackMgr(void); @@ -90,6 +102,10 @@ class ThreadStackManagerImpl final : public ThreadStackManager, // ===== Private members for use by this class only. ThreadStackManagerImpl() = default; + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT + osThreadId_t mSrpClearAllRequester = NULL; +#endif }; /** diff --git a/src/platform/silabs/efr32/ThreadStackManagerImpl.cpp b/src/platform/silabs/efr32/ThreadStackManagerImpl.cpp index 2cab401837e8d8..d2ae058a8a03f1 100644 --- a/src/platform/silabs/efr32/ThreadStackManagerImpl.cpp +++ b/src/platform/silabs/efr32/ThreadStackManagerImpl.cpp @@ -26,7 +26,8 @@ /* this file behaves like a config.h, comes first */ #include -#include +#include +#include #include #include #include @@ -35,11 +36,42 @@ #include -// Forward declaration -extern "C" otInstance * otGetInstance(void); +#include +#include + +extern "C" { +#include "platform-efr32.h" +otInstance * otGetInstance(void); +#if CHIP_DEVICE_CONFIG_THREAD_ENABLE_CLI +void otAppCliInit(otInstance * aInstance); +#endif // CHIP_DEVICE_CONFIG_THREAD_ENABLE_CLI +} namespace chip { namespace DeviceLayer { +namespace { +otInstance * sOTInstance = NULL; + +// Network commissioning +#ifndef _NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_ +NetworkCommissioning::GenericThreadDriver sGenericThreadDriver; +app::Clusters::NetworkCommissioning::Instance sThreadNetworkCommissioningInstance(0 /* Endpoint Id */, &sGenericThreadDriver); +#endif + +void initStaticNetworkCommissioningThreadDriver(void) +{ +#ifndef _NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_ + sThreadNetworkCommissioningInstance.Init(); +#endif +} + +void shutdownStaticNetworkCommissioningThreadDriver(void) +{ +#ifndef _NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_ + sThreadNetworkCommissioningInstance.Shutdown(); +#endif +} +}; // namespace using namespace ::chip::DeviceLayer::Internal; @@ -47,61 +79,81 @@ ThreadStackManagerImpl ThreadStackManagerImpl::sInstance; CHIP_ERROR ThreadStackManagerImpl::_InitThreadStack(void) { - return InitThreadStack(NULL); + return InitThreadStack(sOTInstance); } -CHIP_ERROR ThreadStackManagerImpl::InitThreadStack(otInstance * otInst) +CHIP_ERROR ThreadStackManagerImpl::_StartThreadTask(void) { - CHIP_ERROR err = CHIP_NO_ERROR; - - // Initialize the generic implementation base classes. - err = GenericThreadStackManagerImpl_FreeRTOS::DoInit(); - SuccessOrExit(err); - err = GenericThreadStackManagerImpl_OpenThread::DoInit(otInst); - SuccessOrExit(err); + // Stubbed since our thread task is created in the InitThreadStack function and it will start once the scheduler starts. + return CHIP_NO_ERROR; +} -exit: - return err; +void ThreadStackManagerImpl::_LockThreadStack(void) +{ + sl_ot_rtos_acquire_stack_mutex(); } -bool ThreadStackManagerImpl::IsInitialized() +bool ThreadStackManagerImpl::_TryLockThreadStack(void) { - return sInstance.mThreadStackLock != NULL; + // TODO: Implement a non-blocking version of the mutex lock + sl_ot_rtos_acquire_stack_mutex(); + return true; } -} // namespace DeviceLayer -} // namespace chip +void ThreadStackManagerImpl::_UnlockThreadStack(void) +{ + sl_ot_rtos_release_stack_mutex(); +} -using namespace ::chip::DeviceLayer; +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT +void ThreadStackManagerImpl::_WaitOnSrpClearAllComplete() +{ + // Only 1 task can be blocked on a srpClearAll request + if (mSrpClearAllRequester == NULL) + { + mSrpClearAllRequester = osThreadGetId(); + // Wait on OnSrpClientNotification which confirms the clearing is done. + // It will notify this current task with NotifySrpClearAllComplete. + // However, we won't wait more than 2s. + osThreadFlagsWait(threadSrpClearAllFlags, osFlagsWaitAny, pdMS_TO_TICKS(2000)); + mSrpClearAllRequester = NULL; + } +} -/** - * Glue function called directly by the OpenThread stack when tasklet processing work - * is pending. - */ -extern "C" void otTaskletsSignalPending(otInstance * p_instance) +void ThreadStackManagerImpl::_NotifySrpClearAllComplete() { - ThreadStackMgrImpl().SignalThreadActivityPending(); + if (mSrpClearAllRequester) + { + osThreadFlagsSet(mSrpClearAllRequester, threadSrpClearAllFlags); + } } +#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT -/** - * Glue function called directly by the OpenThread stack when system event processing work - * is pending. - */ -extern "C" void otSysEventSignalPending(void) +CHIP_ERROR ThreadStackManagerImpl::InitThreadStack(otInstance * otInst) { - BaseType_t yieldRequired = ThreadStackMgrImpl().SignalThreadActivityPendingFromISR(); - portYIELD_FROM_ISR(yieldRequired); + CHIP_ERROR err = CHIP_NO_ERROR; + err = GenericThreadStackManagerImpl_OpenThread::ConfigureThreadStack(otInst); + initStaticNetworkCommissioningThreadDriver(); + return err; } -extern "C" void * otPlatCAlloc(size_t aNum, size_t aSize) +void ThreadStackManagerImpl::FactoryResetThreadStack(void) { - return CHIPPlatformMemoryCalloc(aNum, aSize); + VerifyOrReturn(sOTInstance != NULL); + otInstanceFactoryReset(sOTInstance); + shutdownStaticNetworkCommissioningThreadDriver(); } -extern "C" void otPlatFree(void * aPtr) +bool ThreadStackManagerImpl::IsInitialized() { - CHIPPlatformMemoryFree(aPtr); + return otGetInstance() != NULL; } + +} // namespace DeviceLayer +} // namespace chip + +using namespace ::chip::DeviceLayer; + #ifndef SL_COMPONENT_CATALOG_PRESENT extern "C" __WEAK void sl_openthread_init(void) { @@ -137,7 +189,22 @@ extern "C" otError otPlatUartEnable(void) extern "C" otInstance * otGetInstance(void) { - return ThreadStackMgrImpl().OTInstance(); + return sOTInstance; +} + +extern "C" void sl_ot_create_instance(void) +{ + VerifyOrDie(chip::Platform::MemoryInit() == CHIP_NO_ERROR); + mbedtls_platform_set_calloc_free(CHIPPlatformMemoryCalloc, CHIPPlatformMemoryFree); + sOTInstance = otInstanceInitSingle(); +} + +extern "C" void sl_ot_cli_init(void) +{ +#if !defined(PW_RPC_ENABLED) && CHIP_DEVICE_CONFIG_THREAD_ENABLE_CLI + VerifyOrDie(sOTInstance != NULL); + otAppCliInit(sOTInstance); +#endif } #if CHIP_DEVICE_CONFIG_THREAD_ENABLE_CLI diff --git a/src/platform/silabs/platformAbstraction/GsdkSpam.cpp b/src/platform/silabs/platformAbstraction/GsdkSpam.cpp index 0881bea848112b..514003305868cf 100644 --- a/src/platform/silabs/platformAbstraction/GsdkSpam.cpp +++ b/src/platform/silabs/platformAbstraction/GsdkSpam.cpp @@ -79,10 +79,6 @@ CHIP_ERROR SilabsPlatform::Init(void) sl_iostream_set_default(sl_iostream_stdio_handle); #endif -#if CHIP_ENABLE_OPENTHREAD - sl_ot_sys_init(); -#endif - #ifdef SL_CATALOG_SYSTEMVIEW_TRACE_PRESENT SEGGER_SYSVIEW_Conf(); #endif diff --git a/src/python_testing/TC_DA_1_7.py b/src/python_testing/TC_DA_1_7.py index 8338cf4713a2a5..be1e466002eebc 100644 --- a/src/python_testing/TC_DA_1_7.py +++ b/src/python_testing/TC_DA_1_7.py @@ -158,15 +158,13 @@ def steps_TC_DA_1_7(self): @async_test_body async def test_TC_DA_1_7(self): - # post_cert_tests (or sdk) can use the qr or manual code - # We don't currently support this in cert because the base doesn't support multiple QR/manual num = 0 if self.matter_test_config.discriminators: num += len(self.matter_test_config.discriminators) if self.matter_test_config.qr_code_content: - num += 1 + num += len(self.matter_test_config.qr_code_content) if self.matter_test_config.manual_code: - num += 1 + num += len(self.matter_test_config.manual_code) if num != self.expected_number_of_DUTs(): if self.allow_sdk_dac: diff --git a/src/python_testing/TC_DeviceConformance.py b/src/python_testing/TC_DeviceConformance.py index 851921df60f0a4..c7fa19c45cec2c 100644 --- a/src/python_testing/TC_DeviceConformance.py +++ b/src/python_testing/TC_DeviceConformance.py @@ -32,6 +32,8 @@ import chip.clusters as Clusters from basic_composition_support import BasicCompositionTests from chip.tlv import uint +from choice_conformance_support import (evaluate_attribute_choice_conformance, evaluate_command_choice_conformance, + evaluate_feature_choice_conformance) from conformance_support import ConformanceDecision, conformance_allowed from global_attribute_ids import GlobalAttributeIds from matter_testing_support import (AttributePathLocation, ClusterPathLocation, CommandPathLocation, MatterBaseTest, ProblemNotice, @@ -188,7 +190,17 @@ def check_spec_conformance_for_commands(command_type: CommandType): check_spec_conformance_for_commands(CommandType.ACCEPTED) check_spec_conformance_for_commands(CommandType.GENERATED) - # TODO: Add choice checkers + feature_choice_problems = evaluate_feature_choice_conformance( + endpoint_id, cluster_id, self.xml_clusters, feature_map, attribute_list, all_command_list) + attribute_choice_problems = evaluate_attribute_choice_conformance( + endpoint_id, cluster_id, self.xml_clusters, feature_map, attribute_list, all_command_list) + command_choice_problem = evaluate_command_choice_conformance( + endpoint_id, cluster_id, self.xml_clusters, feature_map, attribute_list, all_command_list) + + if feature_choice_problems or attribute_choice_problems or command_choice_problem: + success = False + problems.extend(feature_choice_problems + attribute_choice_problems + command_choice_problem) + print(f'success = {success}') return success, problems diff --git a/src/python_testing/TC_SC_7_1.py b/src/python_testing/TC_SC_7_1.py new file mode 100644 index 00000000000000..b702bf438fba86 --- /dev/null +++ b/src/python_testing/TC_SC_7_1.py @@ -0,0 +1,114 @@ +# +# Copyright (c) 2022 Project CHIP Authors +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# See https://github.com/project-chip/connectedhomeip/blob/master/docs/testing/python.md#defining-the-ci-test-arguments +# for details about the block below. +# +# === BEGIN CI TEST ARGUMENTS === +# test-runner-runs: run1 +# test-runner-run/run1/app: ${ALL_CLUSTERS_APP} +# test-runner-run/run1/factoryreset: True +# test-runner-run/run1/quiet: True +# test-runner-run/run1/app-args: --discriminator 2222 --KVS kvs1 --trace-to json:${TRACE_APP}.json +# test-runner-run/run1/script-args: --storage-path admin_storage.json --bool-arg post_cert_test:true --qr-code MT:-24J0KCZ16750648G00 --trace-to json:${TRACE_TEST_JSON}.json --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto +# === END CI TEST ARGUMENTS === + +# Note that in the CI we are using the post-cert test as we can only start one app from the current script. +# This should still be fine as this test has unit tests for other conditions. See test_TC_SC_7_1.py +import logging + +import chip.clusters as Clusters +from matter_testing_support import MatterBaseTest, TestStep, async_test_body, default_matter_test_main +from mobly import asserts + + +def _trusted_root_test_step(dut_num: int) -> TestStep: + read_trusted_roots_over_pase = f'TH establishes a PASE session to DUT{dut_num} using the provided setup code and reads the TrustedRootCertificates attribute from the operational credentials cluster over PASE' + return TestStep(dut_num, read_trusted_roots_over_pase, "List should be empty as the DUT should be in factory reset ") + + +class TC_SC_7_1(MatterBaseTest): + ''' TC-SC-7.1 + + This test requires two instances of the DUT with the same PID/VID to confirm that the individual + devices are provisioned with different discriminators and PAKE salts in the same product line. + + This test MUST be run on a factory reset device, over PASE, with no commissioned fabrics. + ''' + + def __init__(self, *args): + super().__init__(*args) + self.post_cert_test = False + + def setup_class(self): + super().setup_class() + self.post_cert_test = self.user_params.get("post_cert_test", False) + + def expected_number_of_DUTs(self) -> int: + return 1 if self.post_cert_test else 2 + + def steps_TC_SC_7_1(self): + if self.post_cert_test: + return [_trusted_root_test_step(1), + TestStep(2, "TH extracts the discriminator from the provided setup code", "Ensure the code is not the default")] + + return [_trusted_root_test_step(1), + _trusted_root_test_step(2), + TestStep(3, "TH compares the discriminators from the provided setup codes", "Discriminators do not match")] + + # TODO: Need a pics or something to limit this to devices that have a factory-provided matter setup code (as opposed to a field upgradable device / device with a custom commissioning where this test won't apply) + + @async_test_body + async def test_TC_SC_7_1(self): + # For now, this test is WAY easier if we just ask for the setup code instead of discriminator / passcode + asserts.assert_false(self.matter_test_config.discriminators, + "This test needs to be run with either the QR or manual setup code. The QR code is preferred.") + + if len(self.matter_test_config.qr_code_content + self.matter_test_config.manual_code) != self.expected_number_of_DUTs(): + if self.post_cert_test: + msg = "The post_cert_test flag is only for use post-certification. When using this flag, specify a single discriminator, manual-code or qr-code-content" + else: + msg = "This test requires two devices for use at certification. Specify two device discriminators or QR codes ex. --discriminator 1234 5678" + asserts.fail(msg) + + # Make sure these are no fabrics on the device so we know we're looking at the factory discriminator. This also ensures that the provided codes are correct. + for i, setup_code in enumerate(self.matter_test_config.qr_code_content + self.matter_test_config.manual_code): + self.step(i+1) + await self.default_controller.FindOrEstablishPASESession(setupCode=setup_code, nodeid=i+1) + root_certs = await self.read_single_attribute_check_success(node_id=i+1, cluster=Clusters.OperationalCredentials, attribute=Clusters.OperationalCredentials.Attributes.TrustedRootCertificates, endpoint=0) + asserts.assert_equal( + root_certs, [], "Root certificates found on device. Device must be factory reset before running this test.") + + self.step(i+2) + setup_payload_info = self.get_setup_payload_info() + if self.post_cert_test: + # For post-cert, we're testing against the defaults + # TODO: Does it even make sense to test against a manual code in post-cert? It's such a small space, collisions are likely. Should we restrict post-cert to QR? What if one isn't provided? + asserts.assert_not_equal(setup_payload_info[0].filter_value, 3840, "Device is using the default discriminator") + else: + if setup_payload_info[0].filter_value == setup_payload_info[1].filter_value and self.matter_test_config.manual_code is not None: + logging.warn("The two provided discriminators are the same. Note that this CAN occur by chance, especially when using manual codes with the short discriminator. Consider using a QR code, or a different device if you believe the DUTs have individually provisioned") + asserts.assert_not_equal( + setup_payload_info[0].filter_value, setup_payload_info[1].filter_value, "Devices are using the same discriminator values") + + # TODO: add test for PAKE salt. This needs to be plumbed through starting from HandlePBKDFParamResponse. + # Will handle in a separate follow up as the plumbing here is aggressive and through some of the crypto layers. + # TODO: Other unit-specific values? + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/src/python_testing/TC_SWTCH.py b/src/python_testing/TC_SWTCH.py new file mode 100644 index 00000000000000..867897ec54ec9d --- /dev/null +++ b/src/python_testing/TC_SWTCH.py @@ -0,0 +1,290 @@ +# +# Copyright (c) 2023 Project CHIP Authors +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# See https://github.com/project-chip/connectedhomeip/blob/master/docs/testing/python.md#defining-the-ci-test-arguments +# for details about the block below. +# +# === BEGIN CI TEST ARGUMENTS === +# test-runner-runs: run1 +# test-runner-run/run1/app: ${ALL_CLUSTERS_APP} +# test-runner-run/run1/factoryreset: True +# test-runner-run/run1/quiet: True +# test-runner-run/run1/app-args: --discriminator 1234 --KVS kvs1 --trace-to json:${TRACE_APP}.json +# test-runner-run/run1/script-args: --storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --endpoint 3 --trace-to json:${TRACE_TEST_JSON}.json --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto --PICS src/app/tests/suites/certification/ci-pics-values +# === END CI TEST ARGUMENTS === + +import json +import logging +import queue +import time +from typing import Any + +import chip.clusters as Clusters +from chip.clusters import ClusterObjects as ClusterObjects +from chip.clusters.Attribute import EventReadResult, TypedAttributePath +from matter_testing_support import (AttributeValue, ClusterAttributeChangeAccumulator, EventChangeCallback, MatterBaseTest, + async_test_body, default_matter_test_main) +from mobly import asserts + +logger = logging.getLogger(__name__) + + +class TC_SwitchTests(MatterBaseTest): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def desc_TC_SWTCH_2_4(self) -> str: + """Returns a description of this test""" + return "[TC-SWTCH-2.4] Momentary Switch Long Press Verification" + + def pics_TC_SWTCH_2_4(self): + """ This function returns a list of PICS for this test case that must be True for the test to be run""" + return ["SWTCH.S", "SWTCH.S.F01"] + + # def steps_TC_SWTCH_2_4(self) -> list[TestStep]: + # steps = [ + # TestStep("0", "Commissioning, already done", is_commissioning=True), + # # TODO: fill when test is done + # ] + + # return steps + + def _send_named_pipe_command(self, command_dict: dict[str, Any]): + app_pid = self.matter_test_config.app_pid + if app_pid == 0: + asserts.fail("The --app-pid flag must be set when usage of button simulation named pipe is required (e.g. CI)") + + app_pipe = f"/tmp/chip_all_clusters_fifo_{app_pid}" + command = json.dumps(command_dict) + + # Sends an out-of-band command to the sample app + with open(app_pipe, "w") as outfile: + logging.info(f"Sending named pipe command to {app_pipe}: '{command}'") + outfile.write(command + "\n") + # Delay for pipe command to be processed (otherwise tests may be flaky). + time.sleep(0.1) + + def _use_button_simulator(self) -> bool: + return self.check_pics("PICS_SDK_CI_ONLY") or self.user_params.get("use_button_simulator", False) + + def _ask_for_switch_idle(self): + if not self._use_button_simulator(): + self.wait_for_user_input(prompt_msg="Ensure switch is idle") + + def _ask_for_long_press(self, endpoint_id: int, pressed_position: int): + if not self._use_button_simulator(): + self.wait_for_user_input( + prompt_msg=f"Press switch position {pressed_position} for a long time (around 5 seconds) on the DUT, then release it.") + else: + command_dict = {"Name": "SimulateActionSwitchLongPress", "EndpointId": endpoint_id, + "ButtonId": pressed_position, "LongPressDelayMillis": 5000, "LongPressDurationMillis": 5500} + self._send_named_pipe_command(command_dict) + + def _placeholder_for_step(self, step_id: str): + # TODO: Global search an replace of `self._placeholder_for_step` with `self.step` when done. + logging.info(f"Step {step_id}") + pass + + def _placeholder_for_skip(self, step_id: str): + logging.info(f"Skipped step {step_id}") + + def _await_sequence_of_reports(self, report_queue: queue.Queue, endpoint_id: int, attribute: TypedAttributePath, sequence: list[Any], timeout_sec: float): + start_time = time.time() + elapsed = 0.0 + time_remaining = timeout_sec + + sequence_idx = 0 + actual_values = [] + + while time_remaining > 0: + expected_value = sequence[sequence_idx] + logging.info(f"Expecting value {expected_value} for attribute {attribute} on endpoint {endpoint_id}") + try: + item: AttributeValue = report_queue.get(block=True, timeout=time_remaining) + + # Track arrival of all values for the given attribute. + if item.endpoint_id == endpoint_id and item.attribute == attribute: + actual_values.append(item.value) + + if item.value == expected_value: + logging.info(f"Got expected attribute change {sequence_idx+1}/{len(sequence)} for attribute {attribute}") + sequence_idx += 1 + else: + asserts.assert_equal(item.value, expected_value, + msg="Did not get expected attribute value in correct sequence.") + + # We are done waiting when we have accumulated all results. + if sequence_idx == len(sequence): + logging.info("Got all attribute changes, done waiting.") + return + except queue.Empty: + # No error, we update timeouts and keep going + pass + + elapsed = time.time() - start_time + time_remaining = timeout_sec - elapsed + + asserts.fail(f"Did not get full sequence {sequence} in {timeout_sec:.1f} seconds. Got {actual_values} before time-out.") + + def _await_sequence_of_events(self, event_queue: queue.Queue, endpoint_id: int, sequence: list[ClusterObjects.ClusterEvent], timeout_sec: float): + start_time = time.time() + elapsed = 0.0 + time_remaining = timeout_sec + + sequence_idx = 0 + actual_events = [] + + while time_remaining > 0: + logging.info(f"Expecting event {sequence[sequence_idx]} on endpoint {endpoint_id}") + try: + item: EventReadResult = event_queue.get(block=True, timeout=time_remaining) + expected_event = sequence[sequence_idx] + event_data = item.Data + + if item.Header.EndpointId == endpoint_id and item.Header.ClusterId == event_data.cluster_id: + actual_events.append(event_data) + + if event_data == expected_event: + logging.info(f"Got expected Event {sequence_idx+1}/{len(sequence)}: {event_data}") + sequence_idx += 1 + else: + asserts.assert_equal(event_data, expected_event, msg="Did not get expected event in correct sequence.") + + # We are done waiting when we have accumulated all results. + if sequence_idx == len(sequence): + logging.info("Got all expected events, done waiting.") + return + except queue.Empty: + # No error, we update timeouts and keep going + pass + + elapsed = time.time() - start_time + time_remaining = timeout_sec - elapsed + + asserts.fail(f"Did not get full sequence {sequence} in {timeout_sec:.1f} seconds. Got {actual_events} before time-out.") + + def _expect_no_events_for_cluster(self, event_queue: queue.Queue, endpoint_id: int, expected_cluster: ClusterObjects.Cluster, timeout_sec: float): + start_time = time.time() + elapsed = 0.0 + time_remaining = timeout_sec + + logging.info(f"Waiting {timeout_sec:.1f} seconds for no more events for cluster {expected_cluster} on endpoint {endpoint_id}") + while time_remaining > 0: + try: + item: EventReadResult = event_queue.get(block=True, timeout=time_remaining) + event_data = item.Data + + if item.Header.EndpointId == endpoint_id and item.Header.ClusterId == event_data.cluster_id and item.Header.ClusterId == expected_cluster.id: + asserts.fail(f"Got Event {event_data} when we expected no further events for {expected_cluster}") + except queue.Empty: + # No error, we update timeouts and keep going + pass + + elapsed = time.time() - start_time + time_remaining = timeout_sec - elapsed + + logging.info(f"Successfully waited for no further events on {expected_cluster} for {elapsed:.1f} seconds") + + @async_test_body + async def test_TC_SWTCH_2_4(self): + # TODO: Make this come from PIXIT + switch_pressed_position = 1 + post_prompt_settle_delay_seconds = 10.0 + + # Commission DUT - already done + + # Read feature map to set bool markers + cluster = Clusters.Objects.Switch + feature_map = await self.read_single_attribute_check_success(cluster, attribute=cluster.Attributes.FeatureMap) + + has_ms_feature = (feature_map & cluster.Bitmaps.Feature.kMomentarySwitch) != 0 + has_msr_feature = (feature_map & cluster.Bitmaps.Feature.kMomentarySwitchRelease) != 0 + has_msl_feature = (feature_map & cluster.Bitmaps.Feature.kMomentarySwitchLongPress) != 0 + has_as_feature = (feature_map & cluster.Bitmaps.Feature.kActionSwitch) != 0 + # has_msm_feature = (feature_map & cluster.Bitmaps.Feature.kMomentarySwitchMultiPress) != 0 + + if not has_ms_feature: + logging.info("Skipping rest of test: SWTCH.S.F01(MS) feature not present") + self.skip_all_remaining_steps("2") + + endpoint_id = self.matter_test_config.endpoint + + # Step 1: Set up subscription to all Switch cluster events + self._placeholder_for_step("1") + event_listener = EventChangeCallback(cluster) + attrib_listener = ClusterAttributeChangeAccumulator(cluster) + await event_listener.start(self.default_controller, self.dut_node_id, endpoint=endpoint_id) + await attrib_listener.start(self.default_controller, self.dut_node_id, endpoint=endpoint_id) + + # Step 2: Operator does not operate switch on the DUT + self._placeholder_for_step("2") + self._ask_for_switch_idle() + + # Step 3: TH reads the CurrentPosition attribute from the DUT + self._placeholder_for_step("3") + + # Verify that the value is 0 + current_position = await self.read_single_attribute_check_success(cluster, attribute=cluster.Attributes.CurrentPosition) + asserts.assert_equal(current_position, 0) + + # Step 4a: Operator operates switch (keep pressed for long time, e.g. 5 seconds) on the DUT, the release it + self._placeholder_for_step("4a") + self._ask_for_long_press(endpoint_id, switch_pressed_position) + + # Step 4b: TH expects report of CurrentPosition 1, followed by a report of Current Position 0. + self._placeholder_for_step("4b") + logging.info( + f"Starting to wait for {post_prompt_settle_delay_seconds:.1f} seconds for CurrentPosition to go {switch_pressed_position}, then 0.") + self._await_sequence_of_reports(report_queue=attrib_listener.attribute_queue, endpoint_id=endpoint_id, attribute=cluster.Attributes.CurrentPosition, sequence=[ + switch_pressed_position, 0], timeout_sec=post_prompt_settle_delay_seconds) + + # Step 4c: TH expects at least InitialPress with NewPosition = 1 + self._placeholder_for_step("4c") + logging.info(f"Starting to wait for {post_prompt_settle_delay_seconds:.1f} seconds for InitialPress event.") + expected_events = [cluster.Events.InitialPress(newPosition=switch_pressed_position)] + self._await_sequence_of_events(event_queue=event_listener.event_queue, endpoint_id=endpoint_id, + sequence=expected_events, timeout_sec=post_prompt_settle_delay_seconds) + + # Step 4d: For MSL/AS, expect to see LongPress/LongRelease in that order + if not has_msl_feature and not has_as_feature: + logging.info("Skipping Step 4d due to missing MSL and AS features") + self._placeholder_for_skip("4d") + else: + # Steb 4d: TH expects report of LongPress, LongRelease in that order. + self._placeholder_for_step("4d") + logging.info(f"Starting to wait for {post_prompt_settle_delay_seconds:.1f} seconds for LongPress then LongRelease.") + expected_events = [] + expected_events.append(cluster.Events.LongPress(newPosition=switch_pressed_position)) + expected_events.append(cluster.Events.LongRelease(previousPosition=switch_pressed_position)) + self._await_sequence_of_events(event_queue=event_listener.event_queue, endpoint_id=endpoint_id, + sequence=expected_events, timeout_sec=post_prompt_settle_delay_seconds) + + # Step 4e: For MS & (!MSL & !AS & !MSR), expect no further events for 10 seconds. + if not has_msl_feature and not has_as_feature and not has_msr_feature: + self._placeholder_for_step("4e") + self._expect_no_events_for_cluster(event_queue=event_listener.event_queue, + endpoint_id=endpoint_id, expected_cluster=cluster, timeout_sec=10.0) + + # Step 4f: For MSR & not MSL, expect to see ShortRelease. + if not has_msl_feature and has_msr_feature: + self._placeholder_for_step("4f") + expected_events = [cluster.Events.ShortRelease(previousPosition=switch_pressed_position)] + self._await_sequence_of_events(event_queue=event_listener.event_queue, endpoint_id=endpoint_id, + sequence=expected_events, timeout_sec=post_prompt_settle_delay_seconds) + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/src/python_testing/TestChoiceConformanceSupport.py b/src/python_testing/TestChoiceConformanceSupport.py new file mode 100644 index 00000000000000..8436bc8418a804 --- /dev/null +++ b/src/python_testing/TestChoiceConformanceSupport.py @@ -0,0 +1,211 @@ +# +# Copyright (c) 2023 Project CHIP Authors +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import itertools +import xml.etree.ElementTree as ElementTree + +import jinja2 +from choice_conformance_support import (evaluate_attribute_choice_conformance, evaluate_command_choice_conformance, + evaluate_feature_choice_conformance) +from matter_testing_support import MatterBaseTest, ProblemNotice, default_matter_test_main +from mobly import asserts +from spec_parsing_support import XmlCluster, add_cluster_data_from_xml + +FEATURE_TEMPLATE = '''\ + + + {%- if XXX %}' + + {% endif %} + + +''' + +ATTRIBUTE_TEMPLATE = ( + ' \n' + ' \n' + ' {% if XXX %}' + ' \n' + ' {% endif %}' + ' \n' + ' \n' +) + +COMMAND_TEMPLATE = ( + ' \n' + ' \n' + ' {% if XXX %}' + ' \n' + ' {% endif %}' + ' \n' + ' \n' +) + +CLUSTER_TEMPLATE = ( + '\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' {{ feature_string }}\n' + ' \n' + ' \n' + ' {{ attribute_string}}\n' + ' \n' + ' \n' + ' {{ command_string }}\n' + ' \n' + '\n') + + +def _create_elements(template_str: str, base_name: str) -> list[str]: + xml_str = [] + + def add_elements(curr_choice: str, starting_id: int, more: str, XXX: bool): + for i in range(3): + element_name = f'{base_name}{curr_choice.upper()*(i+1)}' + environment = jinja2.Environment() + template = environment.from_string(template_str) + xml_str.append(template.render(id=(i + starting_id), name=element_name, choice=curr_choice, more=more, XXX=XXX)) + add_elements('a', 1, 'false', False) + add_elements('b', 4, 'true', False) + add_elements('c', 7, 'false', True) + add_elements('d', 10, 'true', True) + + return xml_str + +# TODO: this setup makes my life easy because it assumes that choice conformances apply only within one table +# if this is not true (ex, you can have choose 1 of a feature or an attribute), then this gets more complex +# in this case we need to have this test evaluate the same choice conformance value between multiple tables, and all +# the conformances need to be assessed for the entire element set. +# I've done it this way specifically so I can hardcode the choice values and test the features, attributes and commands +# separately, even though I load them all at the start. + +# Cluster with choices on all elements +# 3 of each element with O.a +# 3 of each element with O.b+ +# 3 of each element with [XXX].c +# 3 of each element with [XXX].d+ +# 1 element named XXX + + +def _create_features(): + xml = _create_elements(FEATURE_TEMPLATE, 'F') + xxx = (' \n' + ' \n' + ' \n') + xml.append(xxx) + return '\n'.join(xml) + + +def _create_attributes(): + xml = _create_elements(ATTRIBUTE_TEMPLATE, "attr") + xxx = (' \n' + ' \n' + ' \n') + xml.append(xxx) + return '\n'.join(xml) + + +def _create_commands(): + xml = _create_elements(COMMAND_TEMPLATE, 'cmd') + xxx = (' \n' + ' \n' + ' \n') + xml.append(xxx) + return '\n'.join(xml) + + +def _create_cluster(): + environment = jinja2.Environment() + template = environment.from_string(CLUSTER_TEMPLATE) + return template.render(feature_string=_create_features(), attribute_string=_create_attributes(), command_string=_create_commands()) + + +class TestConformanceSupport(MatterBaseTest): + def setup_class(self): + super().setup_class() + + clusters: dict[int, XmlCluster] = {} + pure_base_clusters: dict[str, XmlCluster] = {} + ids_by_name: dict[str, int] = {} + problems: list[ProblemNotice] = [] + cluster_xml = ElementTree.fromstring(_create_cluster()) + add_cluster_data_from_xml(cluster_xml, clusters, pure_base_clusters, ids_by_name, problems) + self.clusters = clusters + # each element type uses 13 IDs from 1-13 (or bits for the features) and we want to test all the combinations + num_elements = 13 + ids = range(1, num_elements + 1) + self.all_id_combos = [] + combos = [] + for r in range(1, num_elements + 1): + combos.extend(list(itertools.combinations(ids, r))) + for combo in combos: + # The first three IDs are all O.a, so we need exactly one for the conformance to be valid + expected_failures = set() + if len(set([1, 2, 3]) & set(combo)) != 1: + expected_failures.add('a') + if len(set([4, 5, 6]) & set(combo)) < 1: + expected_failures.add('b') + # For these, we are checking that choice conformance checkers + # - Correctly report errors and correct cases when the gating feature is ON + # - Do not report any errors when the gating features is off. + # Errors where we incorrectly set disallowed features based on the gating feature are checked + # elsewhere in the cert test in a comprehensive way. We just want to ensure that we are not + # incorrectly reporting choice conformance error as well + if 13 in combo and ((len(set([7, 8, 9]) & set(combo)) != 1)): + expected_failures.add('c') + if 13 in combo and (len(set([10, 11, 12]) & set(combo)) < 1): + expected_failures.add('d') + + self.all_id_combos.append((combo, expected_failures)) + + def _evaluate_problems(self, problems, expected_failures=list[str]): + if len(expected_failures) != len(problems): + print(problems) + asserts.assert_equal(len(expected_failures), len(problems), 'Unexpected number of choice conformance problems') + actual_failures = set([p.choice.marker for p in problems]) + asserts.assert_equal(actual_failures, expected_failures, "Mismatch between failures") + + def test_features(self): + def make_feature_map(combo: tuple[int]) -> int: + feature_map = 0 + for bit in combo: + feature_map += pow(2, bit) + return feature_map + + for combo, expected_failures in self.all_id_combos: + problems = evaluate_feature_choice_conformance(0, 1, self.clusters, make_feature_map(combo), [], []) + self._evaluate_problems(problems, expected_failures) + + def test_attributes(self): + for combo, expected_failures in self.all_id_combos: + problems = evaluate_attribute_choice_conformance(0, 1, self.clusters, 0, list(combo), []) + self._evaluate_problems(problems, expected_failures) + + def test_commands(self): + for combo, expected_failures in self.all_id_combos: + problems = evaluate_command_choice_conformance(0, 1, self.clusters, 0, [], list(combo)) + self._evaluate_problems(problems, expected_failures) + + +if __name__ == "__main__": + default_matter_test_main() diff --git a/src/python_testing/basic_composition_support.py b/src/python_testing/basic_composition_support.py index 69f9633962eaca..678c249d0abf5d 100644 --- a/src/python_testing/basic_composition_support.py +++ b/src/python_testing/basic_composition_support.py @@ -99,9 +99,11 @@ def ConvertValue(value) -> Any: class BasicCompositionTests: async def connect_over_pase(self, dev_ctrl): - setupCode = self.matter_test_config.qr_code_content if self.matter_test_config.qr_code_content is not None else self.matter_test_config.manual_code - asserts.assert_true(setupCode, "Require either --qr-code or --manual-code.") - await dev_ctrl.FindOrEstablishPASESession(setupCode, self.dut_node_id) + asserts.assert_true(self.matter_test_config.qr_code_content == [] or self.matter_test_config.manual_code == [], + "Cannot have both QR and manual code specified") + setupCode = self.matter_test_config.qr_code_content + self.matter_test_config.manual_code + asserts.assert_equal(len(setupCode), 1, "Require one of either --qr-code or --manual-code.") + await dev_ctrl.FindOrEstablishPASESession(setupCode[0], self.dut_node_id) def dump_wildcard(self, dump_device_composition_path: typing.Optional[str]): node_dump_dict = {endpoint_id: MatterTlvToJson(self.endpoints_tlv[endpoint_id]) for endpoint_id in self.endpoints_tlv} diff --git a/src/python_testing/choice_conformance_support.py b/src/python_testing/choice_conformance_support.py new file mode 100644 index 00000000000000..58d37bf10180b0 --- /dev/null +++ b/src/python_testing/choice_conformance_support.py @@ -0,0 +1,74 @@ +from chip.tlv import uint +from conformance_support import Choice, ConformanceDecisionWithChoice +from global_attribute_ids import GlobalAttributeIds +from matter_testing_support import AttributePathLocation, ProblemNotice, ProblemSeverity +from spec_parsing_support import XmlCluster + + +class ChoiceConformanceProblemNotice(ProblemNotice): + def __init__(self, location: AttributePathLocation, choice: Choice, count: int): + problem = f'Problem with choice conformance {choice} - {count} selected' + super().__init__(test_name='Choice conformance', location=location, severity=ProblemSeverity.ERROR, problem=problem, spec_location='') + self.choice = choice + self.count = count + + +def _add_to_counts_if_required(conformance_decision_with_choice: ConformanceDecisionWithChoice, element_present: bool, counts: dict[Choice, int]): + choice = conformance_decision_with_choice.choice + if not choice: + return + counts[choice] = counts.get(choice, 0) + if element_present: + counts[choice] += 1 + + +def _evaluate_choices(location: AttributePathLocation, counts: dict[Choice, int]) -> list[ChoiceConformanceProblemNotice]: + problems: list[ChoiceConformanceProblemNotice] = [] + for choice, count in counts.items(): + if count == 0 or (not choice.more and count > 1): + problems.append(ChoiceConformanceProblemNotice(location, choice, count)) + return problems + + +def evaluate_feature_choice_conformance(endpoint_id: int, cluster_id: int, xml_clusters: dict[int, XmlCluster], feature_map: uint, attribute_list: list[uint], all_command_list: list[uint]) -> list[ChoiceConformanceProblemNotice]: + all_features = [1 << i for i in range(32)] + all_features = [f for f in all_features if f in xml_clusters[cluster_id].features.keys()] + + # Other pieces of the 10.2 test check for unknown features, so just remove them here to check choice conformance + counts: dict[Choice, int] = {} + for f in all_features: + xml_feature = xml_clusters[cluster_id].features[f] + conformance_decision_with_choice = xml_feature.conformance(feature_map, attribute_list, all_command_list) + _add_to_counts_if_required(conformance_decision_with_choice, (feature_map & f), counts) + + location = AttributePathLocation(endpoint_id=endpoint_id, cluster_id=cluster_id, + attribute_id=GlobalAttributeIds.FEATURE_MAP_ID) + return _evaluate_choices(location, counts) + + +def evaluate_attribute_choice_conformance(endpoint_id: int, cluster_id: int, xml_clusters: dict[int, XmlCluster], feature_map: uint, attribute_list: list[uint], all_command_list: list[uint]) -> list[ChoiceConformanceProblemNotice]: + all_attributes = xml_clusters[cluster_id].attributes.keys() + + counts: dict[Choice, int] = {} + for attribute_id in all_attributes: + conformance_decision_with_choice = xml_clusters[cluster_id].attributes[attribute_id].conformance( + feature_map, attribute_list, all_command_list) + _add_to_counts_if_required(conformance_decision_with_choice, attribute_id in attribute_list, counts) + + location = AttributePathLocation(endpoint_id=endpoint_id, cluster_id=cluster_id, + attribute_id=GlobalAttributeIds.ATTRIBUTE_LIST_ID) + return _evaluate_choices(location, counts) + + +def evaluate_command_choice_conformance(endpoint_id: int, cluster_id: int, xml_clusters: dict[int, XmlCluster], feature_map: uint, attribute_list: list[uint], all_command_list: list[uint]) -> list[ChoiceConformanceProblemNotice]: + all_commands = xml_clusters[cluster_id].accepted_commands.keys() + + counts: dict[Choice, int] = {} + for command_id in all_commands: + conformance_decision_with_choice = xml_clusters[cluster_id].accepted_commands[command_id].conformance( + feature_map, attribute_list, all_command_list) + _add_to_counts_if_required(conformance_decision_with_choice, command_id in all_command_list, counts) + + location = AttributePathLocation(endpoint_id=endpoint_id, cluster_id=cluster_id, + attribute_id=GlobalAttributeIds.ACCEPTED_COMMAND_LIST_ID) + return _evaluate_choices(location, counts) diff --git a/src/python_testing/matter_testing_support.py b/src/python_testing/matter_testing_support.py index 9fab7acf8dd0c0..e3c8683acd52ae 100644 --- a/src/python_testing/matter_testing_support.py +++ b/src/python_testing/matter_testing_support.py @@ -34,7 +34,7 @@ from dataclasses import dataclass, field from datetime import datetime, timedelta, timezone from enum import Enum -from typing import List, Optional, Tuple +from typing import Any, List, Optional, Tuple from chip.tlv import float32, uint @@ -231,19 +231,22 @@ def name(self) -> str: class EventChangeCallback: - def __init__(self, expected_cluster: ClusterObjects): + def __init__(self, expected_cluster: ClusterObjects.Cluster): """This class creates a queue to store received event callbacks, that can be checked by the test script expected_cluster: is the cluster from which the events are expected """ self._q = queue.Queue() self._expected_cluster = expected_cluster - async def start(self, dev_ctrl, node_id: int, endpoint: int): + async def start(self, dev_ctrl, node_id: int, endpoint: int, fabric_filtered: bool = False, min_interval_sec: int = 0, max_interval_sec: int = 30) -> Any: """This starts a subscription for events on the specified node_id and endpoint. The cluster is specified when the class instance is created.""" + urgent = True self._subscription = await dev_ctrl.ReadEvent(node_id, - events=[(endpoint, self._expected_cluster, True)], reportInterval=(1, 5), - fabricFiltered=False, keepSubscriptions=True, autoResubscribe=False) + events=[(endpoint, self._expected_cluster, urgent)], reportInterval=( + min_interval_sec, max_interval_sec), + fabricFiltered=fabric_filtered, keepSubscriptions=True, autoResubscribe=False) self._subscription.SetEventUpdateCallback(self.__call__) + return self._subscription def __call__(self, res: EventReadResult, transaction: SubscriptionTransaction): """This is the subscription callback when an event is received. @@ -265,6 +268,10 @@ def wait_for_event_report(self, expected_event: ClusterObjects.ClusterEvent, tim asserts.assert_equal(res.Header.EventId, expected_event.event_id, "Expected event ID not found in event report") return res.Data + @property + def event_queue(self) -> queue.Queue: + return self._q + class AttributeChangeCallback: def __init__(self, expected_attribute: ClusterObjects.ClusterAttributeDescriptor): @@ -299,6 +306,45 @@ def wait_for_report(self): asserts.fail("[AttributeChangeCallback] Attribute {expected_attribute} not found in returned report") +@dataclass +class AttributeValue: + endpoint_id: int + attribute: ClusterObjects.ClusterAttributeDescriptor + value: Any + + +class ClusterAttributeChangeAccumulator: + def __init__(self, expected_cluster: ClusterObjects.Cluster): + self._q = queue.Queue() + self._expected_cluster = expected_cluster + self._subscription = None + + async def start(self, dev_ctrl, node_id: int, endpoint: int, fabric_filtered: bool = False, min_interval_sec: int = 0, max_interval_sec: int = 30) -> Any: + """This starts a subscription for attributes on the specified node_id and endpoint. The cluster is specified when the class instance is created.""" + self._subscription = await dev_ctrl.ReadAttribute( + nodeid=node_id, + attributes=[(endpoint, self._expected_cluster)], + reportInterval=(min_interval_sec, max_interval_sec), + fabricFiltered=fabric_filtered, + keepSubscriptions=True + ) + self._subscription.SetAttributeUpdateCallback(self.__call__) + return self._subscription + + def __call__(self, path: TypedAttributePath, transaction: SubscriptionTransaction): + """This is the subscription callback when an attribute report is received. + It checks the report is from the expected_cluster and then posts it into the queue for later processing.""" + if path.ClusterType == self._expected_cluster: + data = transaction.GetAttribute(path) + value = AttributeValue(endpoint_id=path.Path.EndpointId, attribute=path.AttributeType, value=data) + logging.info(f"Got subscription report for {path.AttributeType}: {data}") + self._q.put(value) + + @property + def attribute_queue(self) -> queue.Queue: + return self._q + + class InternalTestRunnerHooks(TestRunnerHooks): def start(self, count: int): @@ -366,8 +412,8 @@ class MatterTestConfig: # This allows cert tests to be run without re-commissioning for RR-1.1. maximize_cert_chains: bool = True - qr_code_content: Optional[str] = None - manual_code: Optional[str] = None + qr_code_content: List[str] = field(default_factory=list) + manual_code: List[str] = field(default_factory=list) wifi_ssid: Optional[str] = None wifi_passphrase: Optional[str] = None @@ -680,7 +726,7 @@ def get_test_steps(self, test: str) -> list[TestStep]: return [TestStep(1, "Run entire test")] if steps is None else steps def get_defined_test_steps(self, test: str) -> list[TestStep]: - steps_name = 'steps_' + test[5:] + steps_name = f'steps_{test.removeprefix("test_")}' try: fn = getattr(self, steps_name) return fn() @@ -700,7 +746,7 @@ def get_test_pics(self, test: str) -> list[str]: return [] if pics is None else pics def _get_defined_pics(self, test: str) -> list[TestStep]: - steps_name = 'pics_' + test[5:] + steps_name = f'pics_{test.removeprefix("test_")}' try: fn = getattr(self, steps_name) return fn() @@ -720,7 +766,7 @@ def get_test_desc(self, test: str) -> str: ex: 133.1.1. [TC-ACL-1.1] Global attributes ''' - desc_name = 'desc_' + test[5:] + desc_name = f'desc_{test.removeprefix("test_")}' try: fn = getattr(self, desc_name) return fn() @@ -1067,39 +1113,50 @@ def step(self, step: typing.Union[int, str]): self.current_step_index = self.current_step_index + 1 self.step_skipped = False - def get_setup_payload_info(self) -> SetupPayloadInfo: - if self.matter_test_config.qr_code_content is not None: - qr_code = self.matter_test_config.qr_code_content + def get_setup_payload_info(self) -> List[SetupPayloadInfo]: + setup_payloads = [] + for qr_code in self.matter_test_config.qr_code_content: try: - setup_payload = SetupPayload().ParseQrCode(qr_code) + setup_payloads.append(SetupPayload().ParseQrCode(qr_code)) except ChipStackError: asserts.fail(f"QR code '{qr_code} failed to parse properly as a Matter setup code.") - elif self.matter_test_config.manual_code is not None: - manual_code = self.matter_test_config.manual_code + for manual_code in self.matter_test_config.manual_code: try: - setup_payload = SetupPayload().ParseManualPairingCode(manual_code) + setup_payloads.append(SetupPayload().ParseManualPairingCode(manual_code)) except ChipStackError: asserts.fail( f"Manual code code '{manual_code}' failed to parse properly as a Matter setup code. Check that all digits are correct and length is 11 or 21 characters.") - else: - asserts.fail("Require either --qr-code or --manual-code.") - - info = SetupPayloadInfo() - info.passcode = setup_payload.setup_passcode - if setup_payload.short_discriminator is not None: - info.filter_type = discovery.FilterType.SHORT_DISCRIMINATOR - info.filter_value = setup_payload.short_discriminator - else: - info.filter_type = discovery.FilterType.LONG_DISCRIMINATOR - info.filter_value = setup_payload.long_discriminator - return info + infos = [] + for setup_payload in setup_payloads: + info = SetupPayloadInfo() + info.passcode = setup_payload.setup_passcode + if setup_payload.short_discriminator is not None: + info.filter_type = discovery.FilterType.SHORT_DISCRIMINATOR + info.filter_value = setup_payload.short_discriminator + else: + info.filter_type = discovery.FilterType.LONG_DISCRIMINATOR + info.filter_value = setup_payload.long_discriminator + infos.append(info) + + num_passcodes = 0 if self.matter_test_config.setup_passcodes is None else len(self.matter_test_config.setup_passcodes) + num_discriminators = 0 if self.matter_test_config.discriminators is None else len(self.matter_test_config.discriminators) + asserts.assert_equal(num_passcodes, num_discriminators, "Must have same number of discriminators as passcodes") + if self.matter_test_config.discriminators: + for idx, discriminator in enumerate(self.matter_test_config.discriminators): + info = SetupPayloadInfo() + info.passcode = self.matter_test_config.setup_passcodes[idx] + info.filter_type = DiscoveryFilterType.LONG_DISCRIMINATOR + info.filter_value = discriminator + infos.append(info) + + return infos def wait_for_user_input(self, prompt_msg: str, prompt_msg_placeholder: str = "Submit anything to continue", - default_value: str = "y") -> str: + default_value: str = "y") -> Optional[str]: """Ask for user input and wait for it. Args: @@ -1108,13 +1165,19 @@ def wait_for_user_input(self, default_value (str, optional): TH UI prompt default value. Defaults to "y". Returns: - str: User input + str: User input or none if input is closed. """ if self.runner_hook: self.runner_hook.show_prompt(msg=prompt_msg, placeholder=prompt_msg_placeholder, default_value=default_value) - return input(f'{prompt_msg.removesuffix(chr(10))}\n') + logging.info("========= USER PROMPT =========") + logging.info(f">>> {prompt_msg.rstrip()} (press enter to confirm)") + try: + return input() + except EOFError: + logging.info("========= EOF on STDIN =========") + return None def generate_mobly_test_config(matter_test_config: MatterTestConfig): @@ -1293,27 +1356,23 @@ def populate_commissioning_args(args: argparse.Namespace, config: MatterTestConf config.commissioning_method = args.commissioning_method config.commission_only = args.commission_only - # TODO: this should also allow multiple once QR and manual codes are supported. - config.qr_code_content = args.qr_code - if args.manual_code: - config.manual_code = args.manual_code - else: - config.manual_code = None + config.qr_code_content.extend(args.qr_code) + config.manual_code.extend(args.manual_code) if args.commissioning_method is None: return True - if args.discriminators is None and (args.qr_code is None and args.manual_code is None): + if args.discriminators == [] and (args.qr_code == [] and args.manual_code == []): print("error: Missing --discriminator when no --qr-code/--manual-code present!") return False config.discriminators = args.discriminators - if args.passcodes is None and (args.qr_code is None and args.manual_code is None): + if args.passcodes == [] and (args.qr_code == [] and args.manual_code == []): print("error: Missing --passcode when no --qr-code/--manual-code present!") return False config.setup_passcodes = args.passcodes - if args.qr_code is not None and args.manual_code is not None: + if args.qr_code != [] and args.manual_code != []: print("error: Cannot have both --qr-code and --manual-code present!") return False @@ -1321,8 +1380,7 @@ def populate_commissioning_args(args: argparse.Namespace, config: MatterTestConf print("error: supplied number of discriminators does not match number of passcodes") return False - device_descriptors = [config.qr_code_content] if config.qr_code_content is not None else [ - config.manual_code] if config.manual_code is not None else config.discriminators + device_descriptors = config.qr_code_content + config.manual_code + config.discriminators if len(config.dut_node_ids) > len(device_descriptors): print("error: More node IDs provided than discriminators") @@ -1491,9 +1549,9 @@ def parse_matter_test_args(argv: Optional[List[str]] = None) -> MatterTestConfig code_group = parser.add_mutually_exclusive_group(required=False) code_group.add_argument('-q', '--qr-code', type=str, - metavar="QR_CODE", help="QR setup code content (overrides passcode and discriminator)") + metavar="QR_CODE", default=[], help="QR setup code content (overrides passcode and discriminator)", nargs="+") code_group.add_argument('--manual-code', type=str_from_manual_code, - metavar="MANUAL_CODE", help="Manual setup code content (overrides passcode and discriminator)") + metavar="MANUAL_CODE", default=[], help="Manual setup code content (overrides passcode and discriminator)", nargs="+") fabric_group = parser.add_argument_group( title="Fabric selection", description="Fabric selection for single-fabric basic usage, and commissioning") @@ -1567,15 +1625,7 @@ async def _commission_device(self, i) -> bool: dev_ctrl = self.default_controller conf = self.matter_test_config - # TODO: qr code and manual code aren't lists - - if conf.qr_code_content or conf.manual_code: - info = self.get_setup_payload_info() - else: - info = SetupPayloadInfo() - info.passcode = conf.setup_passcodes[i] - info.filter_type = DiscoveryFilterType.LONG_DISCRIMINATOR - info.filter_value = conf.discriminators[i] + info = self.get_setup_payload_info()[i] if conf.commissioning_method == "on-network": try: diff --git a/src/python_testing/post_certification_tests/production_device_checks.py b/src/python_testing/post_certification_tests/production_device_checks.py index 0e8fd617c44110..6988076e6a87af 100644 --- a/src/python_testing/post_certification_tests/production_device_checks.py +++ b/src/python_testing/post_certification_tests/production_device_checks.py @@ -352,9 +352,9 @@ def __init__(self, code: str, code_type: SetupCodeType): self.config = MatterTestConfig(endpoint=0, dut_node_ids=[ 1], global_test_params=global_test_params, storage_path=self.admin_storage) if code_type == SetupCodeType.QR: - self.config.qr_code_content = code + self.config.qr_code_content = [code] else: - self.config.manual_code = code + self.config.manual_code = [code] self.config.paa_trust_store_path = Path(self.paa_path) # Set for DA-1.2, which uses the CD signing certs for verification. This test is now set to use the production CD signing certs from the DCL. self.config.global_test_params['cd_cert_dir'] = tmpdir_cd diff --git a/src/python_testing/test_testing/MockTestRunner.py b/src/python_testing/test_testing/MockTestRunner.py index 5d6592b5a8cd41..ae8d1730b8fda9 100644 --- a/src/python_testing/test_testing/MockTestRunner.py +++ b/src/python_testing/test_testing/MockTestRunner.py @@ -37,9 +37,12 @@ async def __call__(self, *args, **kwargs): class MockTestRunner(): - def __init__(self, filename: str, classname: str, test: str, endpoint: int, pics: dict[str, bool] = {}): - self.config = MatterTestConfig( - tests=[test], endpoint=endpoint, dut_node_ids=[1], pics=pics) + def __init__(self, filename: str, classname: str, test: str, endpoint: int, pics: dict[str, bool] = None): + self.test = test + self.endpoint = endpoint + self.pics = pics + self.set_test_config(MatterTestConfig()) + self.stack = MatterStackState(self.config) self.default_controller = self.stack.certificate_authorities[0].adminList[0].NewController( nodeId=self.config.controller_node_id, @@ -49,9 +52,20 @@ def __init__(self, filename: str, classname: str, test: str, endpoint: int, pics module = importlib.import_module(Path(os.path.basename(filename)).stem) self.test_class = getattr(module, classname) + def set_test_config(self, test_config: MatterTestConfig): + self.config = test_config + self.config.tests = [self.test] + self.config.endpoint = self.endpoint + if not self.config.dut_node_ids: + self.config.dut_node_ids = [1] + if self.pics: + self.config.pics = self.pics + def Shutdown(self): self.stack.Shutdown() def run_test_with_mock_read(self, read_cache: Attribute.AsyncReadTransaction.ReadResponse): self.default_controller.Read = AsyncMock(return_value=read_cache) + # This doesn't need to do anything since we are overriding the read anyway + self.default_controller.FindOrEstablishPASESession = AsyncMock(return_value=None) return run_tests_no_exit(self.test_class, self.config, None, self.default_controller, self.stack) diff --git a/src/python_testing/test_testing/test_TC_SC_7_1.py b/src/python_testing/test_testing/test_TC_SC_7_1.py new file mode 100644 index 00000000000000..3b1b6a5b1cd269 --- /dev/null +++ b/src/python_testing/test_testing/test_TC_SC_7_1.py @@ -0,0 +1,174 @@ +#!/usr/bin/env -S python3 -B +# +# Copyright (c) 2024 Project CHIP Authors +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import os +import sys +from random import randbytes + +import chip.clusters as Clusters +from chip.clusters import Attribute +from MockTestRunner import MockTestRunner + +try: + from matter_testing_support import MatterTestConfig +except ImportError: + sys.path.append(os.path.abspath( + os.path.join(os.path.dirname(__file__), '..'))) + from matter_testing_support import MatterTestConfig + + +def read_trusted_root(filled: bool) -> Attribute.AsyncReadTransaction.ReadResponse: + opcreds = Clusters.OperationalCredentials + trusted_roots = [randbytes(400)] if filled else [] + resp = Attribute.AsyncReadTransaction.ReadResponse({}, [], {}) + resp.attributes = {0: {opcreds: {opcreds.Attributes.TrustedRootCertificates: trusted_roots}}} + return resp + + +def main(): + # All QR and manual codes use vendor ID 0xFFF1, product ID 0x8000. + qr_2222_20202021 = 'MT:Y.K908OC16750648G00' + qr_3333_20202021 = 'MT:Y.K900C415W80648G00' + qr_2222_20202024 = 'MT:Y.K908OC16N71648G00' + qr_3840_20202021 = 'MT:Y.K90-Q000KA0648G00' + manual_2222_20202021 = '20054912334' + manual_3333_20202021 = '31693312339' + manual_2222_20202024 = '20055212333' + + test_runner = MockTestRunner('TC_SC_7_1', 'TC_SC_7_1', 'test_TC_SC_7_1', 0) + failures = [] + + # Tests with no code specified should fail + test_config = MatterTestConfig() + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on test with no codes') + + # Tests using discriminators should fail because we need QR or manual codes, no matter the number + test_config = MatterTestConfig(discriminators=[2222], setup_passcodes=[20202021]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on test with 1 discriminator') + + test_config = MatterTestConfig(discriminators=[2222, 3333], setup_passcodes=[20202021, 20202021]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on test with 2 discriminators') + + # Single qr code or manual without post-cert should cause a failure + test_config = MatterTestConfig(qr_code_content=[qr_2222_20202021]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on test with 1 QR code') + + test_config = MatterTestConfig(manual_code=[manual_2222_20202021]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on test with 1 manual code') + + # Two QR or manual codes with post cert marked should fail + test_config = MatterTestConfig(qr_code_content=[qr_2222_20202021, qr_3333_20202021], + global_test_params={'post_cert_test': True}) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on post-cert test with 2 QR codes') + + test_config = MatterTestConfig(manual_code=[manual_2222_20202021, manual_3333_20202021], + global_test_params={'post_cert_test': True}) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on post-cert test with 2 manual codes') + + # Incorrectly formatted codes should fail + test_config = MatterTestConfig(manual_code=[qr_2222_20202021, qr_2222_20202024]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on test with incorrectly formatted manual codes') + + test_config = MatterTestConfig(qr_code_content=[manual_2222_20202021, manual_2222_20202024]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on test with incorrectly formatted QR codes') + + # Two codes with the same discriminator should fail + test_config = MatterTestConfig(qr_code_content=[qr_2222_20202021, qr_2222_20202024]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on test with 2 QR codes with the same discriminator') + + test_config = MatterTestConfig(manual_code=[manual_2222_20202021, manual_2222_20202024]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on test with 2 manual codes with the same discriminator') + + # Post cert test should fail on default discriminator + test_config = MatterTestConfig(qr_code_content=[qr_3840_20202021], global_test_params={'post_cert_test': True}) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if ok: + failures.append('Expected assertion on post-cert test with default code') + + # Test should fail if there is fabric info + test_config = MatterTestConfig(qr_code_content=[qr_2222_20202021, qr_3333_20202021]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(True)) + if ok: + failures.append('Expected assertion on test when fabrics are present') + + # Test should pass on codes with two different discriminators + test_config = MatterTestConfig(qr_code_content=[qr_2222_20202021, qr_3333_20202021]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if not ok: + failures.append('Expected pass on QR code test') + + test_config = MatterTestConfig(manual_code=[manual_2222_20202021, manual_3333_20202021]) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if not ok: + failures.append('Expected pass on manual code test') + + # Test should pass on post-cert test + test_config = MatterTestConfig(qr_code_content=[qr_2222_20202021], global_test_params={'post_cert_test': True}) + test_runner.set_test_config(test_config) + ok = test_runner.run_test_with_mock_read(read_trusted_root(False)) + if not ok: + failures.append('Expected pass on post-cert test') + + test_runner.Shutdown() + print( + f"Test of TC-SC-7.1: test response incorrect: {len(failures)}") + for f in failures: + print(f) + + return 1 if failures else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/src/test_driver/linux-cirque/IcdWaitForActiveTest.py b/src/test_driver/linux-cirque/IcdWaitForActiveTest.py new file mode 100755 index 00000000000000..bb2c1cb8384a3c --- /dev/null +++ b/src/test_driver/linux-cirque/IcdWaitForActiveTest.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python3 +""" +Copyright (c) 2021 Project CHIP Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +import logging +import os +import sys + +from helper.CHIPTestBase import CHIPVirtualHome + +logger = logging.getLogger('MobileDeviceTest') +logger.setLevel(logging.INFO) + +sh = logging.StreamHandler() +sh.setFormatter( + logging.Formatter( + '%(asctime)s [%(name)s] %(levelname)s %(message)s')) +logger.addHandler(sh) + +CHIP_PORT = 5540 + +CIRQUE_URL = "http://localhost:5000" +CHIP_REPO = os.path.join(os.path.abspath( + os.path.dirname(__file__)), "..", "..", "..") +TEST_EXTPANID = "fedcba9876543210" +TEST_DISCRIMINATOR = 3840 +TEST_DISCRIMINATOR2 = 3584 +TEST_DISCRIMINATOR3 = 1203 +TEST_DISCRIMINATOR4 = 2145 +TEST_DISCOVERY_TYPE = [0, 1, 2] +MATTER_DEVELOPMENT_PAA_ROOT_CERTS = "credentials/development/paa-root-certs" + +DEVICE_CONFIG = { + 'device0': { + 'type': 'MobileDevice', + 'base_image': '@default', + 'capability': ['TrafficControl', 'Mount'], + 'rcp_mode': True, + 'docker_network': 'Ipv6', + 'traffic_control': {'latencyMs': 25}, + "mount_pairs": [[CHIP_REPO, CHIP_REPO]], + }, + 'device1': { + 'type': 'CHIPEndDevice', + 'base_image': '@default', + 'capability': ['Thread', 'TrafficControl', 'Mount'], + 'rcp_mode': True, + 'docker_network': 'Ipv6', + 'traffic_control': {'latencyMs': 25}, + "mount_pairs": [[CHIP_REPO, CHIP_REPO]], + } +} + + +class TestCommissioner(CHIPVirtualHome): + def __init__(self, device_config): + super().__init__(CIRQUE_URL, device_config) + self.logger = logger + + def setup(self): + self.initialize_home() + + def test_routine(self): + self.run_controller_test() + + def run_controller_test(self): + ethernet_ip = [device['description']['ipv6_addr'] for device in self.non_ap_devices + if device['type'] == 'CHIPEndDevice'][0] + server_ids = [device['id'] for device in self.non_ap_devices + if device['type'] == 'CHIPEndDevice'] + req_ids = [device['id'] for device in self.non_ap_devices + if device['type'] == 'MobileDevice'] + + for server in server_ids: + self.execute_device_cmd( + server, + ("CHIPCirqueDaemon.py -- run gdb -batch -return-child-result -q -ex \"set pagination off\" " + "-ex run -ex \"thread apply all bt\" --args {} --thread --discriminator {}").format( + os.path.join(CHIP_REPO, "out/debug/lit_icd/lit-icd-app"), TEST_DISCRIMINATOR)) + + self.reset_thread_devices(server_ids) + + req_device_id = req_ids[0] + + self.execute_device_cmd(req_device_id, "pip3 install --break-system-packages {}".format(os.path.join( + CHIP_REPO, "out/debug/linux_x64_gcc/controller/python/chip_clusters-0.0-py3-none-any.whl"))) + self.execute_device_cmd(req_device_id, "pip3 install --break-system-packages {}".format(os.path.join( + CHIP_REPO, "out/debug/linux_x64_gcc/controller/python/chip_core-0.0-cp37-abi3-linux_x86_64.whl"))) + self.execute_device_cmd(req_device_id, "pip3 install --break-system-packages {}".format(os.path.join( + CHIP_REPO, "out/debug/linux_x64_gcc/controller/python/chip_repl-0.0-py3-none-any.whl"))) + + command = ("gdb -batch -return-child-result -q -ex run -ex \"thread apply all bt\" " + "--args python3 {} -t 300 -a {} --paa-trust-store-path {}").format( + os.path.join( + CHIP_REPO, "src/controller/python/test/test_scripts/icd_wait_for_device_test.py"), ethernet_ip, + os.path.join(CHIP_REPO, MATTER_DEVELOPMENT_PAA_ROOT_CERTS)) + ret = self.execute_device_cmd(req_device_id, command) + + self.assertEqual(ret['return_code'], '0', + "Test failed: non-zero return code") + + +if __name__ == "__main__": + sys.exit(TestCommissioner(DEVICE_CONFIG).run_test()) diff --git a/src/test_driver/nrfconnect/sysbuild.conf b/src/test_driver/nrfconnect/sysbuild.conf new file mode 100644 index 00000000000000..d0c5eee2b93c39 --- /dev/null +++ b/src/test_driver/nrfconnect/sysbuild.conf @@ -0,0 +1,17 @@ +# +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +SB_CONFIG_MATTER=y diff --git a/src/transport/SessionManager.cpp b/src/transport/SessionManager.cpp index e22f0722d7cb55..17065e319cf3bd 100644 --- a/src/transport/SessionManager.cpp +++ b/src/transport/SessionManager.cpp @@ -714,27 +714,7 @@ void SessionManager::HandleConnectionClosed(Transport::ActiveTCPConnectionState { VerifyOrReturn(conn != nullptr); - // Mark the corresponding secure sessions as defunct - mSecureSessions.ForEachSession([&](auto session) { - if (session->IsActiveSession() && session->GetTCPConnection() == conn) - { - SessionHandle handle(*session); - // Notify the SessionConnection delegate of the connection - // closure. - if (mConnDelegate != nullptr) - { - mConnDelegate->OnTCPConnectionClosed(handle, conErr); - } - - // Dis-associate the connection from session by setting it to a - // nullptr. - session->SetTCPConnection(nullptr); - // Mark session as defunct - session->MarkAsDefunct(); - } - - return Loop::Continue; - }); + MarkSecureSessionOverTCPForEviction(conn, conErr); // TODO: A mechanism to mark an unauthenticated session as unusable when // the underlying connection is broken. Issue #32323 @@ -785,6 +765,8 @@ void SessionManager::TCPDisconnect(Transport::ActiveTCPConnectionState * conn, b conn->mPeerAddr.ToString(peerAddrBuf); ChipLogProgress(Inet, "Disconnecting TCP connection from peer at %s.", peerAddrBuf); mTransportMgr->TCPDisconnect(conn, shouldAbort); + + MarkSecureSessionOverTCPForEviction(conn, CHIP_NO_ERROR); } } #endif // INET_CONFIG_ENABLE_TCP_ENDPOINT @@ -1336,6 +1318,33 @@ Optional SessionManager::FindSecureSessionForNode(ScopedNodeId pe return mrpSession != nullptr ? MakeOptional(*mrpSession) : Optional::Missing(); } +#if INET_CONFIG_ENABLE_TCP_ENDPOINT +void SessionManager::MarkSecureSessionOverTCPForEviction(Transport::ActiveTCPConnectionState * conn, CHIP_ERROR conErr) +{ + // Mark the corresponding secure sessions for eviction + mSecureSessions.ForEachSession([&](auto session) { + if (session->IsActiveSession() && session->GetTCPConnection() == conn) + { + SessionHandle handle(*session); + // Notify the SessionConnection delegate of the connection + // closure. + if (mConnDelegate != nullptr) + { + mConnDelegate->OnTCPConnectionClosed(handle, conErr); + } + + // Dis-associate the connection from session by setting it to a + // nullptr. + session->SetTCPConnection(nullptr); + // Mark session for eviction. + session->MarkForEviction(); + } + + return Loop::Continue; + }); +} +#endif // INET_CONFIG_ENABLE_TCP_ENDPOINT + /** * Provides a means to get diagnostic information such as number of sessions. */ diff --git a/src/transport/SessionManager.h b/src/transport/SessionManager.h index 7d0c5645365f97..67871d4ee83b2a 100644 --- a/src/transport/SessionManager.h +++ b/src/transport/SessionManager.h @@ -616,6 +616,10 @@ class DLL_EXPORT SessionManager : public TransportMgrDelegate, public FabricTabl void OnReceiveError(CHIP_ERROR error, const Transport::PeerAddress & source); +#if INET_CONFIG_ENABLE_TCP_ENDPOINT + void MarkSecureSessionOverTCPForEviction(Transport::ActiveTCPConnectionState * conn, CHIP_ERROR conErr); +#endif // INET_CONFIG_ENABLE_TCP_ENDPOINT + static bool IsControlMessage(PayloadHeader & payloadHeader) { return payloadHeader.HasMessageType(Protocols::SecureChannel::MsgType::MsgCounterSyncReq) || diff --git a/third_party/infineon/psoc6/BUILD.gn b/third_party/infineon/psoc6/BUILD.gn index 19fe610b1e6777..82fe0865cec5ec 100644 --- a/third_party/infineon/psoc6/BUILD.gn +++ b/third_party/infineon/psoc6/BUILD.gn @@ -22,12 +22,25 @@ declare_args() { assert(psoc6_target_project != "", "psoc6_target_project must be specified") +mtb_json_local = + mtb_core_json # Can't modify without copying into current scope + +if (is_debug) { + mtb_json_local.cflags += [ "-Og" ] + mtb_json_local.cxxflags += [ "-Og" ] + mtb_json_local.defines += [ "-DDEBUG" ] +} else { + mtb_json_local.cflags += [ "-Os" ] + mtb_json_local.cxxflags += [ "-Os" ] + mtb_json_local.defines += [ "-DNDEBUG" ] +} + # Add includes, cflags, asmflags, etc in config config("psoc6_sdk_config") { # Pull out includes from generated json # Treat these includes as system includes, so warnings in them are not fatal. _system_include_dirs = [] - foreach(include_dir, mtb_json.includes) { + foreach(include_dir, mtb_json_local.includes) { # Strip off leading -I part include_dir = string_replace(include_dir, "-I", "", 1) @@ -48,24 +61,24 @@ config("psoc6_sdk_config") { # Pull out defines from generated json defines = [] - foreach(def, mtb_json.defines) { + foreach(def, mtb_json_local.defines) { # Strip off leading -D part defines += [ string_replace(def, "-D", "", 1) ] } # Pull out static libs (.a files) from generated json libs = [] - foreach(lib, mtb_json.libs) { + foreach(lib, mtb_json_local.libs) { # Path is relative to SDK lib = "${psoc6_sdk_root}/${lib}" libs += [ lib ] } - cflags_c = mtb_json.cflags - cflags_cc = mtb_json.cxxflags - asmflags = mtb_json.asflags - ldflags = filter_exclude(mtb_json.ldflags, [ "-T*" ]) + cflags_c = mtb_json_local.cflags + cflags_cc = mtb_json_local.cxxflags + asmflags = mtb_json_local.asflags + ldflags = filter_exclude(mtb_json_local.ldflags, [ "-T*" ]) # TODO, once the issue is properly fixed we should no longer need this warning. cflags_c += [ "-Wno-error=array-parameter" ] @@ -73,7 +86,7 @@ config("psoc6_sdk_config") { # Pull out linker flags with paths (-T flags) and make paths absolute # OTA app provides it's own linker script if (!chip_enable_ota_requestor) { - linker_script_flags = filter_include(mtb_json.ldflags, [ "-T*" ]) + linker_script_flags = filter_include(mtb_json_local.ldflags, [ "-T*" ]) foreach(linker_script, linker_script_flags) { # Strip off leading -T part linker_script = string_replace(linker_script, "-T", "", 1) diff --git a/third_party/infineon/psoc6/psoc6_board.gni b/third_party/infineon/psoc6/psoc6_board.gni index a6cae75a7aecc3..340f312a67753d 100644 --- a/third_party/infineon/psoc6/psoc6_board.gni +++ b/third_party/infineon/psoc6/psoc6_board.gni @@ -13,7 +13,7 @@ # limitations under the License. declare_args() { - # P6 board used + # PSOC6 board used psoc6_board = "" } diff --git a/third_party/infineon/psoc6/psoc6_sdk.gni b/third_party/infineon/psoc6/psoc6_sdk.gni index 90366ddac471aa..bc315affc544be 100644 --- a/third_party/infineon/psoc6/psoc6_sdk.gni +++ b/third_party/infineon/psoc6/psoc6_sdk.gni @@ -21,15 +21,9 @@ import("psoc6_board.gni") # TODO: Don't hardcode config/toolchain # TODO: Convert to GN action? -if (is_debug) { - debug_str = "Debug" -} else { - debug_str = "Release" -} -mtb_json = - read_file("${psoc6_sdk_root}/build/${psoc6_board}/$debug_str/GCC_ARM.json", - "json") +mtb_core_json = + read_file("${psoc6_sdk_root}/build/${psoc6_board}/GCC_ARM.json", "json") # Defines an psoc6 SDK build target. # @@ -73,13 +67,26 @@ template("psoc6_sdk_sources") { } # This is ugly. See note in BUILD.gn for reasoning - mtb_json_local = mtb_json # Can't modify without copying into current scope + mtb_json_local = + mtb_core_json # Can't modify without copying into current scope + + # Update the flags and defines for either Release or Debug mode + if (is_debug) { + mtb_json_local.cflags += [ "-Og" ] + mtb_json_local.cxxflags += [ "-Og" ] + mtb_json_local.defines += [ "-DDEBUG" ] + } else { + mtb_json_local.cflags += [ "-Os" ] + mtb_json_local.cxxflags += [ "-Os" ] + mtb_json_local.defines += [ "-DNDEBUG" ] + } + if (chip_enable_ota_requestor == true) { mtb_json_local.c_source -= [ - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_01_cm0p_sleep.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_02_cm0p_sleep.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_03_cm0p_sleep.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_04_cm0p_sleep.c", + "./libs/cat1cm0p/COMPONENT_CAT1A/COMPONENT_CM0P_SLEEP/psoc6_01_cm0p_sleep.c", + "./libs/cat1cm0p/COMPONENT_CAT1A/COMPONENT_CM0P_SLEEP/psoc6_02_cm0p_sleep.c", + "./libs/cat1cm0p/COMPONENT_CAT1A/COMPONENT_CM0P_SLEEP/psoc6_03_cm0p_sleep.c", + "./libs/cat1cm0p/COMPONENT_CAT1A/COMPONENT_CM0P_SLEEP/psoc6_04_cm0p_sleep.c", ] } diff --git a/third_party/infineon/psoc6/psoc6_sdk/Makefile b/third_party/infineon/psoc6/psoc6_sdk/Makefile deleted file mode 100755 index 45318c6686baa7..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/Makefile +++ /dev/null @@ -1,236 +0,0 @@ -################################################################################ -# \file Makefile -# \version 1.0 -# -# \brief -# Top-level application make file. -# -################################################################################ -# \copyright -# Copyright 2018-2021 Cypress Semiconductor Corporation -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -################################################################################ - - -################################################################################ -# Basic Configuration -################################################################################ - -# Target board/hardware (BSP). -# To change the target, it is recommended to use the Library manager -# ('make modlibs' from command line), which will also update Eclipse IDE launch -# configurations. If TARGET is manually edited, ensure TARGET_.mtb with a -# valid URL exists in the application, run 'make getlibs' to fetch BSP contents -# and update or regenerate launch configurations for your IDE. -TARGET=$(error TARGET should be set on make command-line) - -APPNAME=mtb-chip-sdk - -# Name of toolchain to use. Options include: -# -# GCC_ARM -- GCC provided with ModusToolbox IDE -# ARM -- ARM Compiler (must be installed separately) -# IAR -- IAR Compiler (must be installed separately) -# -# See also: CY_COMPILER_PATH below -TOOLCHAIN=GCC_ARM - -# Default build configuration. Options include: -# -# Debug -- build with minimal optimizations, focus on debugging. -# Release -- build with full optimizations -# Custom -- build with custom configuration, set the optimization flag in CFLAGS -# -# If CONFIG is manually edited, ensure to update or regenerate launch configurations -# for your IDE. -CONFIG=Debug - -# If set to "true" or "1", display full command-lines when building. -VERBOSE= - -# The MQTT Client library does not support secure connections to the Mosquitto -# broker by default, because the server uses the SHA1 hashing algorithm which -# is considered a weak message digest and is therefore not enabled by default. -# However, if it is required to connect securely to the Mosquitto Broker set -# this macro to "true" or "1". -ENABLE_SECURE_MOSQUITTO_BROKER_SUPPORT=0 - -################################################################################ -# Advanced Configuration -################################################################################ - -# Enable optional code that is ordinarily disabled by default. -# -# Available components depend on the specific targeted hardware and firmware -# in use. In general, if you have -# -# COMPONENTS=foo bar -# -# ... then code in directories named COMPONENT_foo and COMPONENT_bar will be -# added to the build -# -COMPONENTS=FREERTOS LWIP MBEDTLS RTOS_AWARE WICED_BLE OTA_MCUBOOT_PSOC - -# CHIP: ModusToolbox 2.2 & 2.3 do not have a way to disable indirect library -# dependencies. This causes trouble for CHIP because we need to use its -# bundled version of LwIP. -# -# As a work-around, we enable "QUICK_MODE" for the "getlibs" target. This -# tells it to skip automatic generation of .mtb files for indirect -# dependencies. We list everything we need as a direct dependency. -# -# This isn't ideal (it means have to manually manage dependencies), but it's -# the best we can do for these versions of ModusToolbox. -ifeq ($(filter getlibs,$(MAKECMDGOALS)),getlibs) -QUICK_MODE=true -endif - -# Like COMPONENTS, but disable optional code that was enabled by default. -DISABLE_COMPONENTS= - -# By default the build system automatically looks in the Makefile's directory -# tree for source code and builds it. The SOURCES variable can be used to -# manually add source code to the build process from a location not searched -# by default, or otherwise not found by the build system. -SOURCES= - -# Like SOURCES, but for include directories. Value should be paths to -# directories (without a leading -I). -INCLUDES=./configs - -# Custom configuration of mbedtls library. -MBEDTLSFLAGS = MBEDTLS_USER_CONFIG_FILE= - -# Add additional defines to the build process (without a leading -D). -DEFINES=$(MBEDTLSFLAGS) CYBSP_WIFI_CAPABLE CY_RETARGET_IO_CONVERT_LF_TO_CRLF CY_RTOS_AWARE PSOC_062_2M - -# Enable support for Mosquitto Broker based on 'ENABLE_SECURE_MOSQUITTO_BROKER_ -# SUPPORT' variable. See the MQTT Client library's README for more information. -ifneq (,$(filter $(ENABLE_SECURE_MOSQUITTO_BROKER_SUPPORT),true 1)) -DEFINES+=CY_MQTT_ENABLE_SECURE_TEST_MOSQUITTO_SUPPORT -endif - -# CY8CPROTO-062-4343W board shares the same GPIO for the user button (USER BTN1) -# and the CYW4343W host wake up pin. Since this example uses the GPIO for -# interfacing with the user button, the SDIO interrupt to wake up the host is -# disabled by setting CY_WIFI_HOST_WAKE_SW_FORCE to '0'. -ifeq ($(TARGET), CY8CPROTO-062-4343W) -DEFINES+=CY_WIFI_HOST_WAKE_SW_FORCE=0 -endif - -# Select softfp or hardfp floating point. Default is softfp. -VFP_SELECT= - -COMMON_WARNING_FLAGS = -Wall -Werror=all \ - -Wno-error=unused-function \ - -Wno-error=unused-but-set-variable \ - -Wno-error=unused-variable \ - -Wno-error=deprecated-declarations \ - -Wextra \ - -Wno-unused-parameter -Wno-sign-compare \ - -Wno-shadow \ - -Wno-maybe-uninitialized \ - -Wno-incompatible-pointer-types \ - -Wno-type-limits \ - -Wno-conversion - -# Additional / custom C compiler flags. -# -# NOTE: Includes and defines should use the INCLUDES and DEFINES variable -# above. -CFLAGS=$(COMMON_WARNING_FLAGS) - -# Additional / custom C++ compiler flags. -# -# NOTE: Includes and defines should use the INCLUDES and DEFINES variable -# above. -CXXFLAGS= - -# Additional / custom assembler flags. -# -# NOTE: Includes and defines should use the INCLUDES and DEFINES variable -# above. -ASFLAGS= - -# Additional / custom linker flags. -LDFLAGS= - -# Additional / custom libraries to link in to the application. -LDLIBS= - -# Path to the linker script to use (if empty, use the default linker script). -LINKER_SCRIPT= - -# Custom pre-build commands to run. -PREBUILD= - -# Custom post-build commands to run. -POSTBUILD= - - -################################################################################ -# Paths -################################################################################ - -# Relative path to the project directory (default is the Makefile's directory). -# -# This controls where automatic source code discovery looks for code. -CY_APP_PATH= - -# Relative path to the shared repo location. -# -# All .mtb files have the format, ##. If the field -# begins with $$ASSET_REPO$$, then the repo is deposited in the path specified by -# the CY_GETLIBS_SHARED_PATH variable. The default location is one directory level -# above the current app directory. -# This is used with CY_GETLIBS_SHARED_NAME variable, which specifies the directory name. -CY_GETLIBS_SHARED_PATH=../ - -# Directory name of the shared repo location. -# -CY_GETLIBS_SHARED_NAME=mtb_shared - -# Absolute path to the compiler's "bin" directory. -# -# The default depends on the selected TOOLCHAIN (GCC_ARM uses the ModusToolbox -# IDE provided compiler by default). -CY_COMPILER_PATH= - - -# Locate ModusToolbox IDE helper tools folders in default installation -# locations for Windows, Linux, and macOS. -CY_WIN_HOME=$(subst \,/,$(USERPROFILE)) -CY_TOOLS_PATHS ?= $(wildcard \ - $(CY_WIN_HOME)/ModusToolbox/tools_* \ - $(HOME)/ModusToolbox/tools_* \ - /Applications/ModusToolbox/tools_*) - -# If you install ModusToolbox IDE in a custom location, add the path to its -# "tools_X.Y" folder (where X and Y are the version number of the tools -# folder). Make sure you use forward slashes. -CY_TOOLS_PATHS+= - -# Default to the newest installed tools folder, or the users override (if it's -# found). -CY_TOOLS_DIR=$(lastword $(sort $(wildcard $(CY_TOOLS_PATHS)))) - -ifeq ($(CY_TOOLS_DIR),) -$(error Unable to find any of the available CY_TOOLS_PATHS -- $(CY_TOOLS_PATHS). On Windows, use forward slashes.) -endif - -$(info Tools Directory: $(CY_TOOLS_DIR)) - -include $(CY_TOOLS_DIR)/make/start.mk - diff --git a/third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Debug/GCC_ARM.json b/third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/GCC_ARM.json similarity index 83% rename from third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Debug/GCC_ARM.json rename to third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/GCC_ARM.json index bdf407807c5a42..89ef0454830145 100644 --- a/third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Debug/GCC_ARM.json +++ b/third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/GCC_ARM.json @@ -17,7 +17,6 @@ "-c", "-mcpu=cortex-m4", "--specs=nano.specs", - "-Og", "-mfloat-abi=softfp", "-mfpu=fpv4-sp-d16", "-mthumb", @@ -31,7 +30,6 @@ "-c", "-mcpu=cortex-m4", "--specs=nano.specs", - "-Og", "-mfloat-abi=softfp", "-mfpu=fpv4-sp-d16", "-mthumb", @@ -67,50 +65,48 @@ "-ffat-lto-objects", "-g", "-Wall", + "-pipe", "-Wl,--gc-sections", - "-T./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/cy8c6xxa_cm4_dual.ld" + "-T./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/linker.ld" ], "includes": [ "-I./configs", "-I.", - "-I./arch", - "-I./configs", "-I./libs", + "-I./libs/abstraction-rtos/include/COMPONENT_FREERTOS", + "-I./libs/secure-sockets/include/COMPONENT_FREERTOS", + "-I./arch", + "-I./libs/freertos", + "-I./libs/freertos/Source", + "-I./libs/freertos/Source/include", + "-I./libs/freertos/Source/portable", + "-I./libs/freertos/Source/portable/COMPONENT_CM4", + "-I./libs/freertos/Source/portable/COMPONENT_CM4/TOOLCHAIN_GCC_ARM", "-I./libs/TARGET_CY8CKIT-062S2-43012", "-I./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS", - "-I./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource", + "-I./configs/GeneratedSource", "-I./libs/TARGET_CY8CKIT-062S2-43012/bluetooth", "-I./libs/abstraction-rtos", "-I./libs/abstraction-rtos/include", - "-I./libs/abstraction-rtos/include/COMPONENT_FREERTOS", - "-I./libs/abstraction-rtos/include/Template", - "-I./libs/anycloud-ota", - "-I./libs/anycloud-ota/include", - "-I./libs/anycloud-ota/source", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil/include", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil/include/bootutil", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil/src", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/flash_qspi", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/include", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/include/flash_map_backend", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/mem_config", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/mcuboot_header", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/mcuboot_header/mcuboot_config", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/sysflash", - "-I./libs/anycloud-ota/source/port_support", - "-I./libs/anycloud-ota/source/port_support/serial_flash", - "-I./libs/anycloud-ota/source/port_support/untar", - "-I./libs/bluetooth-freertos", - "-I./libs/bluetooth-freertos/platform", - "-I./libs/bluetooth-freertos/platform/common", - "-I./libs/bluetooth-freertos/platform/debug", - "-I./libs/bluetooth-freertos/platform/include", - "-I./libs/btstack", + "-I./ota/config/", + "-I./libs/ota-update/include", + "-I./libs/ota-update/source", + "-I./libs/ota-update/configs", + "-I./libs/ota-update/source/COMPONENT_MBEDTLS", + "-I./libs/ota-update/source/COMPONENT_OTA_BLUETOOTH/", + "-I./libs/ota-update/configs/COMPONENT_OTA_BLUETOOTH_SECURE", + "-I./libs/ota-update/configs/FreeRTOS/COMPONENT_CM4", + "-I./libs/ota-bootloader-abstraction/source/COMPONENT_MCUBOOT", + "-I./libs/ota-bootloader-abstraction/configs/COMPONENT_MCUBOOT/flash/COMPONENT_OTA_PSOC_062", + "-I./libs/ota-bootloader-abstraction/include/", + "-I./libs/ota-bootloader-abstraction/configs/COMPONENT_MCUBOOT/flash/", + "-I./libs/ota-bootloader-abstraction/source/COMPONENT_MCUBOOT/", + "-I./libs/ota-bootloader-abstraction/source/untar/", + "-I./libs/btstack-integration/", + "-I./libs/btstack-integration/COMPONENT_HCI-UART/common", + "-I./libs/btstack-integration/COMPONENT_HCI-UART/include", "-I./libs/btstack/wiced_include", + "-I./libs/cat1cm0p/COMPONENT_CAT1A", "-I./libs/clib-support", "-I./libs/clib-support/TOOLCHAIN_GCC_ARM", "-I./libs/connectivity-utilities", @@ -121,12 +117,6 @@ "-I./libs/connectivity-utilities/network", "-I./libs/core-lib", "-I./libs/core-lib/include", - "-I./libs/freertos", - "-I./libs/freertos/Source", - "-I./libs/freertos/Source/include", - "-I./libs/freertos/Source/portable", - "-I./libs/freertos/Source/portable/COMPONENT_CM4", - "-I./libs/freertos/Source/portable/COMPONENT_CM4/TOOLCHAIN_GCC_ARM", "-I./libs/kv-store", "-I./libs/lwip", "-I./libs/lwip/src", @@ -137,6 +127,8 @@ "-I./libs/lwip/src/include/netif", "-I./libs/lwip/src/include/netif/ppp", "-I./libs/lwip/src/include/netif/ppp/polarssl", + "-I./libs/lwip-network-interface-integration/include", + "-I./libs/lwip-network-interface-integration/source", "-I./libs/mbedtls", "-I./libs/mbedtls/include", "-I./libs/mbedtls/include/mbedtls", @@ -151,19 +143,21 @@ "-I./libs/mtb-hal-cat1/include_pvt", "-I./libs/mtb-hal-cat1/source", "-I./libs/mtb-pdl-cat1", - "-I./libs/mtb-pdl-cat1/cmsis", - "-I./libs/mtb-pdl-cat1/cmsis/include", + "-I./libs/cmsis/Core/Include", + "-I./libs/cmsis/COMPONENT_CMSIS_NN/include", "-I./libs/mtb-pdl-cat1/devices", "-I./libs/mtb-pdl-cat1/devices/COMPONENT_CAT1A", "-I./libs/mtb-pdl-cat1/devices/COMPONENT_CAT1A/include", "-I./libs/mtb-pdl-cat1/devices/COMPONENT_CAT1A/include/ip", "-I./libs/mtb-pdl-cat1/drivers", "-I./libs/mtb-pdl-cat1/drivers/include", + "-I./ota", + "-I./ota/bootutil", "-I./libs/retarget-io", "-I./libs/secure-sockets", "-I./libs/secure-sockets/include", - "-I./libs/secure-sockets/include/COMPONENT_FREERTOS", "-I./libs/secure-sockets/source", + "-I./libs/secure-sockets/source/COMPONENT_MBEDTLS/include", "-I./libs/serial-flash", "-I./libs/whd-bsp-integration", "-I./libs/wifi-connection-manager", @@ -185,15 +179,15 @@ "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources/resource_imp", "-I./libs/wifi-host-driver/WiFi_Host_Driver/src", "-I./libs/wifi-host-driver/WiFi_Host_Driver/src/bus_protocols", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/src/include", - "-I./libs/lwip-network-interface-integration", - "-I./libs/lwip-network-interface-integration/source", - "-I./libs/lwip-network-interface-integration/include", - "-I./ota/config" + "-I./libs/wifi-host-driver/WiFi_Host_Driver/src/include" ], "defines": [ + "-DCOMPONENT_FREERTOS", "-DMBEDTLS_USER_CONFIG_FILE=", "-DCYBSP_WIFI_CAPABLE", + "-DCYBSP_WIFI_SDIO_NEEDS_INIT", + "-DCORE_NAME_CM4_0", + "-DCY_USING_PREBUILT_CM0P_IMAGE", "-DCY_RETARGET_IO_CONVERT_LF_TO_CRLF", "-DCY_RTOS_AWARE", "-DPSOC_062_2M", @@ -207,10 +201,11 @@ "-DCOMPONENT_BSP_DESIGN_MODUS", "-DCOMPONENT_CAT1", "-DCOMPONENT_CAT1A", + "-DCOMPONENT_CMSIS_NN", "-DCOMPONENT_CM0P_SLEEP", "-DCOMPONENT_CM4", "-DCOMPONENT_CY8CKIT_062S2_43012", - "-DCOMPONENT_FREERTOS", + "-DCOMPONENT_43012", "-DCOMPONENT_HCI_UART", "-DCOMPONENT_LWIP", "-DCOMPONENT_MBEDTLS", @@ -220,7 +215,6 @@ "-DCOMPONENT_RTOS_AWARE", "-DCOMPONENT_SOFTFP", "-DCOMPONENT_WICED_BLE", - "-DDEBUG", "-DCY_SUPPORTS_DEVICE_VALIDATION", "-DCY_CRYPTO_HAL_DISABLE", "-DCOMPONENT_SECURE_SOCKETS", @@ -228,24 +222,6 @@ "-DOPTIGA_LIB_EXTERNAL=" ], "c_source": [ - "./libs/abstraction-rtos/source/cy_worker_thread.c", - "./libs/anycloud-ota/source/port_support/serial_flash/ota_serial_flash.c", - "./libs/bluetooth-freertos/platform/common/cybt_hci_rx_task.c", - "./libs/bluetooth-freertos/platform/common/cybt_hci_tx_task.c", - "./libs/bluetooth-freertos/platform/common/cybt_host_stack_platform_interface.c", - "./libs/bluetooth-freertos/platform/common/cybt_patchram_download.c", - "./libs/bluetooth-freertos/platform/common/cybt_platform_main.c", - "./libs/bluetooth-freertos/platform/common/cybt_platform_task.c", - "./libs/bluetooth-freertos/platform/common/cybt_platform_trace.c", - "./libs/bluetooth-freertos/platform/common/cybt_prm.c", - "./libs/bluetooth-freertos/platform/debug/cybt_debug_uart.c", - "./libs/bluetooth-freertos/platform/freertos/cybt_platform_freertos.c", - "./libs/clib-support/cy_time.c", - "./libs/connectivity-utilities/JSON_parser/cy_json_parser.c", - "./libs/connectivity-utilities/cy_log/cy_log.c", - "./libs/connectivity-utilities/cy_string/cy_string_utils.c", - "./libs/connectivity-utilities/linked_list/cy_linked_list.c", - "./libs/connectivity-utilities/network/cy_nw_helper_common.c", "./libs/freertos/Source/croutine.c", "./libs/freertos/Source/event_groups.c", "./libs/freertos/Source/list.c", @@ -258,6 +234,46 @@ "./libs/freertos/Source/stream_buffer.c", "./libs/freertos/Source/tasks.c", "./libs/freertos/Source/timers.c", + "./libs/freertos/Source/portable/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/port.c", + "./libs/clib-support/COMPONENT_FREERTOS/cy_mutex_pool.c", + "./libs/abstraction-rtos/source/COMPONENT_FREERTOS/cyabs_freertos_common.c", + "./libs/abstraction-rtos/source/COMPONENT_FREERTOS/cyabs_freertos_helpers.c", + "./libs/abstraction-rtos/source/COMPONENT_FREERTOS/cyabs_rtos_freertos.c", + "./libs/abstraction-rtos/source/COMPONENT_FREERTOS/cyabs_rtos_dsram.c", + "./arch/sys_arch.c", + "./libs/abstraction-rtos/source/cy_worker_thread.c", + "./libs/ota-update/source/cy_ota_agent.c", + "./libs/ota-update/source/cy_ota_ble.c", + "./libs/ota-update/source/cy_ota_http.c", + "./libs/ota-update/source/cy_ota_mqtt.c", + "./libs/ota-update/source/COMPONENT_MBEDTLS/cy_ota_ble_secure.c", + "./libs/ota-update/source/COMPONENT_OTA_BLUETOOTH/ota_ecc_pp.c", + "./libs/ota-update/source/COMPONENT_OTA_BLUETOOTH/ota_multprecision.c", + "./libs/ota-update/configs/COMPONENT_OTA_BLUETOOTH_SECURE/ecdsa256_pub.c", + "./libs/ota-bootloader-abstraction/configs/COMPONENT_MCUBOOT/flash/cy_ota_flash.c", + "./libs/ota-bootloader-abstraction/configs/COMPONENT_MCUBOOT/flash/COMPONENT_OTA_PSOC_062/flash_qspi.c", + "./libs/ota-bootloader-abstraction/source/COMPONENT_MCUBOOT/cy_flash_map.c", + "./libs/ota-bootloader-abstraction/source/COMPONENT_MCUBOOT/cy_ota_flash_weak.c", + "./libs/ota-bootloader-abstraction/source/COMPONENT_MCUBOOT/cy_ota_storage_api.c", + "./libs/ota-bootloader-abstraction/source/COMPONENT_MCUBOOT/cy_ota_untar_wrapper.c", + "./libs/ota-bootloader-abstraction/source/untar/cy_ota_untar.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/common/cybt_hci_rx_task.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/common/cybt_hci_tx_task.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/common/cybt_host_stack_platform_interface.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/common/cybt_patchram_download.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/common/cybt_platform_main.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/common/cybt_platform_task.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/common/cybt_platform_trace.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/common/cybt_prm.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/common/cybt_serialize.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/debug/cybt_debug_uart.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/freertos/cybt_platform_freertos.c", + "./libs/clib-support/cy_time.c", + "./libs/connectivity-utilities/JSON_parser/cy_json_parser.c", + "./libs/connectivity-utilities/cy_log/cy_log.c", + "./libs/connectivity-utilities/cy_string/cy_string_utils.c", + "./libs/connectivity-utilities/linked_list/cy_linked_list.c", + "./libs/connectivity-utilities/network/cy_nw_helper_common.c", "./libs/kv-store/mtb_kvstore.c", "./libs/lwip/src/api/api_lib.c", "./libs/lwip/src/api/api_msg.c", @@ -309,6 +325,9 @@ "./libs/lwip/src/netif/bridgeif_fdb.c", "./libs/lwip/src/netif/ethernet.c", "./libs/lwip/src/netif/zepif.c", + "./libs/lwip-network-interface-integration/source/cy_ethernetif.c", + "./libs/lwip-network-interface-integration/source/cy_lwip_dhcp_server.c", + "./libs/lwip-network-interface-integration/source/cy_network_mw_core.c", "./libs/mbedtls/library/aes.c", "./libs/mbedtls/library/aesni.c", "./libs/mbedtls/library/arc4.c", @@ -408,13 +427,12 @@ "./libs/mtb-hal-cat1/source/cyhal_dma_dmac.c", "./libs/mtb-hal-cat1/source/cyhal_dma_dw.c", "./libs/mtb-hal-cat1/source/cyhal_ezi2c.c", - "./libs/mtb-hal-cat1/source/cyhal_flash.c", "./libs/mtb-hal-cat1/source/cyhal_gpio.c", "./libs/mtb-hal-cat1/source/cyhal_hwmgr.c", + "./libs/mtb-hal-cat1/source/cyhal_irq_impl.c", "./libs/mtb-hal-cat1/source/cyhal_i2c.c", "./libs/mtb-hal-cat1/source/cyhal_i2s.c", "./libs/mtb-hal-cat1/source/cyhal_interconnect.c", - "./libs/mtb-hal-cat1/source/cyhal_irq_psoc.c", "./libs/mtb-hal-cat1/source/cyhal_keyscan.c", "./libs/mtb-hal-cat1/source/cyhal_lptimer.c", "./libs/mtb-hal-cat1/source/cyhal_opamp.c", @@ -436,13 +454,13 @@ "./libs/mtb-hal-cat1/source/cyhal_udb_sdio.c", "./libs/mtb-hal-cat1/source/cyhal_usb_dev.c", "./libs/mtb-hal-cat1/source/cyhal_utils.c", - "./libs/mtb-hal-cat1/source/cyhal_utils_psoc.c", + "./libs/mtb-hal-cat1/source/cyhal_utils_impl.c", "./libs/mtb-hal-cat1/source/cyhal_wdt.c", "./libs/mtb-pdl-cat1/drivers/source/cy_adcmic.c", "./libs/mtb-pdl-cat1/drivers/source/cy_ble_clk.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_btss.c", "./libs/mtb-pdl-cat1/drivers/source/cy_canfd.c", "./libs/mtb-pdl-cat1/drivers/source/cy_crypto.c", + "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_trng.c", "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_aes_v1.c", "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_aes_v2.c", "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_cmac_v1.c", @@ -466,11 +484,8 @@ "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_rsa.c", "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_sha_v1.c", "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_sha_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_trng_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_trng_v2.c", "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_vu.c", "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_server.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_cryptolite.c", "./libs/mtb-pdl-cat1/drivers/source/cy_csd.c", "./libs/mtb-pdl-cat1/drivers/source/cy_ctb.c", "./libs/mtb-pdl-cat1/drivers/source/cy_ctdac.c", @@ -490,8 +505,6 @@ "./libs/mtb-pdl-cat1/drivers/source/cy_lpcomp.c", "./libs/mtb-pdl-cat1/drivers/source/cy_lvd.c", "./libs/mtb-pdl-cat1/drivers/source/cy_mcwdt.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_pd_pdcm.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_pd_ppu.c", "./libs/mtb-pdl-cat1/drivers/source/cy_pdm_pcm.c", "./libs/mtb-pdl-cat1/drivers/source/cy_pdm_pcm_v2.c", "./libs/mtb-pdl-cat1/drivers/source/cy_pra.c", @@ -562,33 +575,21 @@ "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_wifi.c", "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_wifi_api.c", "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_wifi_p2p.c", - "./libs/lwip-network-interface-integration/source/cy_network_mw_core.c", - "./libs/lwip-network-interface-integration/source/cy_lwip_dhcp_server.c", + "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_proto.c", "./libs/clib-support/TOOLCHAIN_GCC_ARM/cy_clib_support_newlib.c", "./libs/TARGET_CY8CKIT-062S2-43012/bluetooth/cybsp_bt_config.c", "./libs/TARGET_CY8CKIT-062S2-43012/cybsp.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_clocks.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_connectivity_bt.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_peripherals.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_pins.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_qspi_memslot.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_routing.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_system.c", + "./configs/GeneratedSource/cycfg.c", + "./configs/GeneratedSource/cycfg_clocks.c", + "./configs/GeneratedSource/cycfg_connectivity_bt.c", + "./configs/GeneratedSource/cycfg_peripherals.c", + "./configs/GeneratedSource/cycfg_pins.c", + "./configs/GeneratedSource/cycfg_qspi_memslot.c", + "./configs/GeneratedSource/cycfg_routing.c", + "./configs/GeneratedSource/cycfg_system.c", "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_CM4/system_psoc6_cm4.c", - "./libs/abstraction-rtos/source/COMPONENT_FREERTOS/cyabs_freertos_helpers.c", - "./libs/abstraction-rtos/source/COMPONENT_FREERTOS/cyabs_rtos_freertos.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil/src/bootutil_misc.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/cy_flash_map.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/cy_flash_psoc6.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/flash_qspi/flash_qspi.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/mem_config/mem_config_sfdp.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/ota_flash_map.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/ota_flash_xip_map.c", - "./libs/bluetooth-freertos/firmware/COMPONENT_43012/COMPONENT_MURATA-1LV/COMPONENT_HCI-UART/w_bt_firmware_controller.c", - "./libs/clib-support/COMPONENT_FREERTOS/cy_mutex_pool.c", + "./libs/btstack-integration/COMPONENT_HCI-UART/firmware/COMPONENT_43012/COMPONENT_MURATA-1LV/w_bt_firmware_controller.c", "./libs/connectivity-utilities/network/COMPONENT_LWIP/cy_nw_helper.c", - "./libs/freertos/Source/portable/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/port.c", "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_104_m_csp_ble.c", "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_104_m_csp_ble_usb.c", "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_116_bga_ble.c", @@ -613,10 +614,10 @@ "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/triggers/cyhal_triggers_psoc6_03.c", "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/triggers/cyhal_triggers_psoc6_04.c", "./libs/mtb-pdl-cat1/devices/COMPONENT_CAT1A/source/cy_device.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_01_cm0p_sleep.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_02_cm0p_sleep.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_03_cm0p_sleep.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_04_cm0p_sleep.c", + "./libs/cat1cm0p/COMPONENT_CAT1A/COMPONENT_CM0P_SLEEP/psoc6_01_cm0p_sleep.c", + "./libs/cat1cm0p/COMPONENT_CAT1A/COMPONENT_CM0P_SLEEP/psoc6_02_cm0p_sleep.c", + "./libs/cat1cm0p/COMPONENT_CAT1A/COMPONENT_CM0P_SLEEP/psoc6_03_cm0p_sleep.c", + "./libs/cat1cm0p/COMPONENT_CAT1A/COMPONENT_CM0P_SLEEP/psoc6_04_cm0p_sleep.c", "./libs/secure-sockets/source/COMPONENT_LWIP/cy_secure_sockets.c", "./libs/secure-sockets/source/COMPONENT_MBEDTLS/cy_tls.c", "./libs/secure-sockets/source/COMPONENT_MBEDTLS/iot_crypto.c", @@ -627,12 +628,11 @@ "./libs/wifi-host-driver/WiFi_Host_Driver/resources/clm/COMPONENT_43012/43012C0-mfgtest_clm_blob.c", "./libs/wifi-host-driver/WiFi_Host_Driver/resources/clm/COMPONENT_43012/43012C0_clm_blob.c", "./libs/wifi-host-driver/WiFi_Host_Driver/resources/firmware/COMPONENT_43012/43012C0-mfgtest_bin.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/resources/firmware/COMPONENT_43012/43012C0_bin.c", - "./arch/sys_arch.c" + "./libs/wifi-host-driver/WiFi_Host_Driver/resources/firmware/COMPONENT_43012/43012C0_bin.c" ], "cxx_source": [], "asm_source": [ - "./libs/mtb-pdl-cat1/drivers/source/TOOLCHAIN_GCC_ARM/cy_syslib_gcc.S", + "./libs/mtb-pdl-cat1/drivers/source/TOOLCHAIN_GCC_ARM/cy_syslib_ext.S", "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/startup_psoc6_02_cm4.S" ], "libs": [ diff --git a/third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Release/GCC_ARM.json b/third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Release/GCC_ARM.json deleted file mode 100644 index 917160ac8f83e7..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/build/CY8CKIT-062S2-43012/Release/GCC_ARM.json +++ /dev/null @@ -1,642 +0,0 @@ -{ - "cflags": [ - "-Wall", - "-Werror=all", - "-Wno-error=unused-function", - "-Wno-error=unused-but-set-variable", - "-Wno-error=unused-variable", - "-Wno-error=deprecated-declarations", - "-Wextra", - "-Wno-unused-parameter", - "-Wno-sign-compare", - "-Wno-shadow", - "-Wno-maybe-uninitialized", - "-Wno-incompatible-pointer-types", - "-Wno-type-limits", - "-Wno-conversion", - "-c", - "-mcpu=cortex-m4", - "--specs=nano.specs", - "-Os", - "-mfloat-abi=softfp", - "-mfpu=fpv4-sp-d16", - "-mthumb", - "-ffunction-sections", - "-fdata-sections", - "-ffat-lto-objects", - "-g", - "-Wall" - ], - "cxxflags": [ - "-c", - "-mcpu=cortex-m4", - "--specs=nano.specs", - "-Os", - "-mfloat-abi=softfp", - "-mfpu=fpv4-sp-d16", - "-mthumb", - "-ffunction-sections", - "-fdata-sections", - "-ffat-lto-objects", - "-g", - "-Wall", - "-fno-rtti", - "-fno-exceptions" - ], - "asflags": [ - "-c", - "-mcpu=cortex-m4", - "--specs=nano.specs", - "-mfloat-abi=softfp", - "-mfpu=fpv4-sp-d16", - "-mthumb", - "-ffunction-sections", - "-fdata-sections", - "-ffat-lto-objects", - "-g", - "-Wall" - ], - "ldflags": [ - "-mcpu=cortex-m4", - "--specs=nano.specs", - "-mfloat-abi=softfp", - "-mfpu=fpv4-sp-d16", - "-mthumb", - "-ffunction-sections", - "-fdata-sections", - "-ffat-lto-objects", - "-g", - "-Wall", - "-Wl,--gc-sections", - "-T./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/cy8c6xxa_cm4_dual.ld" - ], - "includes": [ - "-I./configs", - "-I.", - "-I./arch", - "-I./configs", - "-I./libs", - "-I./libs/TARGET_CY8CKIT-062S2-43012", - "-I./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS", - "-I./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource", - "-I./libs/TARGET_CY8CKIT-062S2-43012/bluetooth", - "-I./libs/abstraction-rtos", - "-I./libs/abstraction-rtos/include", - "-I./libs/abstraction-rtos/include/COMPONENT_FREERTOS", - "-I./libs/abstraction-rtos/include/Template", - "-I./libs/anycloud-ota", - "-I./libs/anycloud-ota/include", - "-I./libs/anycloud-ota/source", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil/include", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil/include/bootutil", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil/src", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/flash_qspi", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/include", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/include/flash_map_backend", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/mem_config", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/mcuboot_header", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/mcuboot_header/mcuboot_config", - "-I./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/sysflash", - "-I./libs/anycloud-ota/source/port_support", - "-I./libs/anycloud-ota/source/port_support/serial_flash", - "-I./libs/anycloud-ota/source/port_support/untar", - "-I./libs/bluetooth-freertos", - "-I./libs/bluetooth-freertos/platform", - "-I./libs/bluetooth-freertos/platform/common", - "-I./libs/bluetooth-freertos/platform/debug", - "-I./libs/bluetooth-freertos/platform/include", - "-I./libs/btstack", - "-I./libs/btstack/wiced_include", - "-I./libs/clib-support", - "-I./libs/clib-support/TOOLCHAIN_GCC_ARM", - "-I./libs/connectivity-utilities", - "-I./libs/connectivity-utilities/JSON_parser", - "-I./libs/connectivity-utilities/cy_log", - "-I./libs/connectivity-utilities/cy_string", - "-I./libs/connectivity-utilities/linked_list", - "-I./libs/connectivity-utilities/network", - "-I./libs/core-lib", - "-I./libs/core-lib/include", - "-I./libs/freertos", - "-I./libs/freertos/Source", - "-I./libs/freertos/Source/include", - "-I./libs/freertos/Source/portable", - "-I./libs/freertos/Source/portable/COMPONENT_CM4", - "-I./libs/freertos/Source/portable/COMPONENT_CM4/TOOLCHAIN_GCC_ARM", - "-I./libs/kv-store", - "-I./libs/lwip", - "-I./libs/lwip/src", - "-I./libs/lwip/src/include", - "-I./libs/lwip/src/include/lwip/apps", - "-I./libs/lwip/src/include/lwip/priv", - "-I./libs/lwip/src/include/lwip/prot", - "-I./libs/lwip/src/include/netif", - "-I./libs/lwip/src/include/netif/ppp", - "-I./libs/lwip/src/include/netif/ppp/polarssl", - "-I./libs/mbedtls", - "-I./libs/mbedtls/include", - "-I./libs/mbedtls/include/mbedtls", - "-I./libs/mbedtls/include/psa", - "-I./libs/mbedtls/library", - "-I./libs/mtb-hal-cat1", - "-I./libs/mtb-hal-cat1/COMPONENT_CAT1A", - "-I./libs/mtb-hal-cat1/COMPONENT_CAT1A/include", - "-I./libs/mtb-hal-cat1/COMPONENT_CAT1A/include/pin_packages", - "-I./libs/mtb-hal-cat1/COMPONENT_CAT1A/include/triggers", - "-I./libs/mtb-hal-cat1/include", - "-I./libs/mtb-hal-cat1/include_pvt", - "-I./libs/mtb-hal-cat1/source", - "-I./libs/mtb-pdl-cat1", - "-I./libs/mtb-pdl-cat1/cmsis", - "-I./libs/mtb-pdl-cat1/cmsis/include", - "-I./libs/mtb-pdl-cat1/devices", - "-I./libs/mtb-pdl-cat1/devices/COMPONENT_CAT1A", - "-I./libs/mtb-pdl-cat1/devices/COMPONENT_CAT1A/include", - "-I./libs/mtb-pdl-cat1/devices/COMPONENT_CAT1A/include/ip", - "-I./libs/mtb-pdl-cat1/drivers", - "-I./libs/mtb-pdl-cat1/drivers/include", - "-I./libs/retarget-io", - "-I./libs/secure-sockets", - "-I./libs/secure-sockets/include", - "-I./libs/secure-sockets/include/COMPONENT_FREERTOS", - "-I./libs/secure-sockets/source", - "-I./libs/serial-flash", - "-I./libs/whd-bsp-integration", - "-I./libs/wifi-connection-manager", - "-I./libs/wifi-connection-manager/include", - "-I./libs/wifi-connection-manager/source", - "-I./libs/wifi-connection-manager/source/COMPONENT_43012", - "-I./libs/wifi-connection-manager/source/COMPONENT_MBEDTLS", - "-I./libs/wifi-host-driver", - "-I./libs/wifi-host-driver/WiFi_Host_Driver", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/inc", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources/clm", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources/clm/COMPONENT_43012", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources/firmware", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources/firmware/COMPONENT_43012", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources/nvram", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources/nvram/COMPONENT_43012", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources/nvram/COMPONENT_43012/COMPONENT_MURATA-1LV", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/resources/resource_imp", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/src", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/src/bus_protocols", - "-I./libs/wifi-host-driver/WiFi_Host_Driver/src/include", - "-I./libs/lwip-network-interface-integration", - "-I./libs/lwip-network-interface-integration/source", - "-I./libs/lwip-network-interface-integration/include", - "-I./ota/config" - ], - "defines": [ - "-DMBEDTLS_USER_CONFIG_FILE=", - "-DCYBSP_WIFI_CAPABLE", - "-DCY_RETARGET_IO_CONVERT_LF_TO_CRLF", - "-DCY_RTOS_AWARE", - "-DPSOC_062_2M", - "-DCY_USING_HAL", - "-DCY_APPNAME_mtb_chip_sdk", - "-DCY8C624ABZI_S2D44", - "-DCY_TARGET_DEVICE=CY8C624ABZI_S2D44", - "-DTARGET_CY8CKIT_062S2_43012", - "-DCY_TARGET_BOARD=CY8CKIT_062S2_43012", - "-DCOMPONENT_43012", - "-DCOMPONENT_BSP_DESIGN_MODUS", - "-DCOMPONENT_CAT1", - "-DCOMPONENT_CAT1A", - "-DCOMPONENT_CM0P_SLEEP", - "-DCOMPONENT_CM4", - "-DCOMPONENT_CY8CKIT_062S2_43012", - "-DCOMPONENT_FREERTOS", - "-DCOMPONENT_HCI_UART", - "-DCOMPONENT_LWIP", - "-DCOMPONENT_MBEDTLS", - "-DCOMPONENT_MURATA_1LV", - "-DCOMPONENT_OTA_MCUBOOT_PSOC", - "-DCOMPONENT_PSOC6HAL", - "-DCOMPONENT_RTOS_AWARE", - "-DCOMPONENT_SOFTFP", - "-DCOMPONENT_WICED_BLE", - "-DNDEBUG", - "-DCY_SUPPORTS_DEVICE_VALIDATION", - "-DCY_CRYPTO_HAL_DISABLE", - "-DCOMPONENT_SECURE_SOCKETS", - "-DCOMPONENT_PSOC6_FREERTOS", - "-DOPTIGA_LIB_EXTERNAL=" - ], - "c_source": [ - "./libs/abstraction-rtos/source/cy_worker_thread.c", - "./libs/anycloud-ota/source/port_support/serial_flash/ota_serial_flash.c", - "./libs/bluetooth-freertos/platform/common/cybt_hci_rx_task.c", - "./libs/bluetooth-freertos/platform/common/cybt_hci_tx_task.c", - "./libs/bluetooth-freertos/platform/common/cybt_host_stack_platform_interface.c", - "./libs/bluetooth-freertos/platform/common/cybt_patchram_download.c", - "./libs/bluetooth-freertos/platform/common/cybt_platform_main.c", - "./libs/bluetooth-freertos/platform/common/cybt_platform_task.c", - "./libs/bluetooth-freertos/platform/common/cybt_platform_trace.c", - "./libs/bluetooth-freertos/platform/common/cybt_prm.c", - "./libs/bluetooth-freertos/platform/debug/cybt_debug_uart.c", - "./libs/bluetooth-freertos/platform/freertos/cybt_platform_freertos.c", - "./libs/clib-support/cy_time.c", - "./libs/connectivity-utilities/JSON_parser/cy_json_parser.c", - "./libs/connectivity-utilities/cy_log/cy_log.c", - "./libs/connectivity-utilities/cy_string/cy_string_utils.c", - "./libs/connectivity-utilities/linked_list/cy_linked_list.c", - "./libs/connectivity-utilities/network/cy_nw_helper_common.c", - "./libs/freertos/Source/croutine.c", - "./libs/freertos/Source/event_groups.c", - "./libs/freertos/Source/list.c", - "./libs/freertos/Source/portable/MemMang/heap_1.c", - "./libs/freertos/Source/portable/MemMang/heap_2.c", - "./libs/freertos/Source/portable/MemMang/heap_3.c", - "./libs/freertos/Source/portable/MemMang/heap_4.c", - "./libs/freertos/Source/portable/MemMang/heap_5.c", - "./libs/freertos/Source/queue.c", - "./libs/freertos/Source/stream_buffer.c", - "./libs/freertos/Source/tasks.c", - "./libs/freertos/Source/timers.c", - "./libs/kv-store/mtb_kvstore.c", - "./libs/lwip/src/api/api_lib.c", - "./libs/lwip/src/api/api_msg.c", - "./libs/lwip/src/api/err.c", - "./libs/lwip/src/api/if_api.c", - "./libs/lwip/src/api/netbuf.c", - "./libs/lwip/src/api/netdb.c", - "./libs/lwip/src/api/netifapi.c", - "./libs/lwip/src/api/sockets.c", - "./libs/lwip/src/api/tcpip.c", - "./libs/lwip/src/core/altcp.c", - "./libs/lwip/src/core/altcp_alloc.c", - "./libs/lwip/src/core/altcp_tcp.c", - "./libs/lwip/src/core/def.c", - "./libs/lwip/src/core/dns.c", - "./libs/lwip/src/core/inet_chksum.c", - "./libs/lwip/src/core/init.c", - "./libs/lwip/src/core/ip.c", - "./libs/lwip/src/core/ipv4/autoip.c", - "./libs/lwip/src/core/ipv4/dhcp.c", - "./libs/lwip/src/core/ipv4/etharp.c", - "./libs/lwip/src/core/ipv4/icmp.c", - "./libs/lwip/src/core/ipv4/igmp.c", - "./libs/lwip/src/core/ipv4/ip4.c", - "./libs/lwip/src/core/ipv4/ip4_addr.c", - "./libs/lwip/src/core/ipv4/ip4_frag.c", - "./libs/lwip/src/core/ipv6/dhcp6.c", - "./libs/lwip/src/core/ipv6/ethip6.c", - "./libs/lwip/src/core/ipv6/icmp6.c", - "./libs/lwip/src/core/ipv6/inet6.c", - "./libs/lwip/src/core/ipv6/ip6.c", - "./libs/lwip/src/core/ipv6/ip6_addr.c", - "./libs/lwip/src/core/ipv6/ip6_frag.c", - "./libs/lwip/src/core/ipv6/mld6.c", - "./libs/lwip/src/core/ipv6/nd6.c", - "./libs/lwip/src/core/mem.c", - "./libs/lwip/src/core/memp.c", - "./libs/lwip/src/core/netif.c", - "./libs/lwip/src/core/pbuf.c", - "./libs/lwip/src/core/raw.c", - "./libs/lwip/src/core/stats.c", - "./libs/lwip/src/core/sys.c", - "./libs/lwip/src/core/tcp.c", - "./libs/lwip/src/core/tcp_in.c", - "./libs/lwip/src/core/tcp_out.c", - "./libs/lwip/src/core/timeouts.c", - "./libs/lwip/src/core/udp.c", - "./libs/lwip/src/netif/bridgeif.c", - "./libs/lwip/src/netif/bridgeif_fdb.c", - "./libs/lwip/src/netif/ethernet.c", - "./libs/lwip/src/netif/zepif.c", - "./libs/mbedtls/library/aes.c", - "./libs/mbedtls/library/aesni.c", - "./libs/mbedtls/library/arc4.c", - "./libs/mbedtls/library/aria.c", - "./libs/mbedtls/library/asn1parse.c", - "./libs/mbedtls/library/asn1write.c", - "./libs/mbedtls/library/base64.c", - "./libs/mbedtls/library/bignum.c", - "./libs/mbedtls/library/blowfish.c", - "./libs/mbedtls/library/camellia.c", - "./libs/mbedtls/library/ccm.c", - "./libs/mbedtls/library/certs.c", - "./libs/mbedtls/library/chacha20.c", - "./libs/mbedtls/library/chachapoly.c", - "./libs/mbedtls/library/cipher.c", - "./libs/mbedtls/library/cipher_wrap.c", - "./libs/mbedtls/library/cmac.c", - "./libs/mbedtls/library/ctr_drbg.c", - "./libs/mbedtls/library/debug.c", - "./libs/mbedtls/library/des.c", - "./libs/mbedtls/library/dhm.c", - "./libs/mbedtls/library/ecdh.c", - "./libs/mbedtls/library/ecdsa.c", - "./libs/mbedtls/library/ecjpake.c", - "./libs/mbedtls/library/ecp.c", - "./libs/mbedtls/library/ecp_curves.c", - "./libs/mbedtls/library/entropy.c", - "./libs/mbedtls/library/entropy_poll.c", - "./libs/mbedtls/library/error.c", - "./libs/mbedtls/library/gcm.c", - "./libs/mbedtls/library/havege.c", - "./libs/mbedtls/library/hkdf.c", - "./libs/mbedtls/library/hmac_drbg.c", - "./libs/mbedtls/library/md.c", - "./libs/mbedtls/library/md2.c", - "./libs/mbedtls/library/md4.c", - "./libs/mbedtls/library/md5.c", - "./libs/mbedtls/library/memory_buffer_alloc.c", - "./libs/mbedtls/library/nist_kw.c", - "./libs/mbedtls/library/oid.c", - "./libs/mbedtls/library/padlock.c", - "./libs/mbedtls/library/pem.c", - "./libs/mbedtls/library/pk.c", - "./libs/mbedtls/library/pk_wrap.c", - "./libs/mbedtls/library/pkcs11.c", - "./libs/mbedtls/library/pkcs12.c", - "./libs/mbedtls/library/pkcs5.c", - "./libs/mbedtls/library/pkparse.c", - "./libs/mbedtls/library/pkwrite.c", - "./libs/mbedtls/library/platform.c", - "./libs/mbedtls/library/platform_util.c", - "./libs/mbedtls/library/poly1305.c", - "./libs/mbedtls/library/psa_crypto.c", - "./libs/mbedtls/library/psa_crypto_se.c", - "./libs/mbedtls/library/psa_crypto_slot_management.c", - "./libs/mbedtls/library/psa_crypto_storage.c", - "./libs/mbedtls/library/psa_its_file.c", - "./libs/mbedtls/library/ripemd160.c", - "./libs/mbedtls/library/rsa.c", - "./libs/mbedtls/library/rsa_internal.c", - "./libs/mbedtls/library/sha1.c", - "./libs/mbedtls/library/sha256.c", - "./libs/mbedtls/library/sha512.c", - "./libs/mbedtls/library/ssl_cache.c", - "./libs/mbedtls/library/ssl_ciphersuites.c", - "./libs/mbedtls/library/ssl_cli.c", - "./libs/mbedtls/library/ssl_cookie.c", - "./libs/mbedtls/library/ssl_msg.c", - "./libs/mbedtls/library/ssl_srv.c", - "./libs/mbedtls/library/ssl_ticket.c", - "./libs/mbedtls/library/ssl_tls.c", - "./libs/mbedtls/library/ssl_tls13_keys.c", - "./libs/mbedtls/library/threading.c", - "./libs/mbedtls/library/timing.c", - "./libs/mbedtls/library/version.c", - "./libs/mbedtls/library/version_features.c", - "./libs/mbedtls/library/x509.c", - "./libs/mbedtls/library/x509_create.c", - "./libs/mbedtls/library/x509_crl.c", - "./libs/mbedtls/library/x509_crt.c", - "./libs/mbedtls/library/x509_csr.c", - "./libs/mbedtls/library/x509write_crt.c", - "./libs/mbedtls/library/x509write_csr.c", - "./libs/mbedtls/library/xtea.c", - "./libs/mtb-hal-cat1/source/cyhal_adc_mic.c", - "./libs/mtb-hal-cat1/source/cyhal_adc_sar.c", - "./libs/mtb-hal-cat1/source/cyhal_analog_common.c", - "./libs/mtb-hal-cat1/source/cyhal_audio_common.c", - "./libs/mtb-hal-cat1/source/cyhal_clock.c", - "./libs/mtb-hal-cat1/source/cyhal_comp.c", - "./libs/mtb-hal-cat1/source/cyhal_comp_ctb.c", - "./libs/mtb-hal-cat1/source/cyhal_comp_lp.c", - "./libs/mtb-hal-cat1/source/cyhal_crc.c", - "./libs/mtb-hal-cat1/source/cyhal_crypto_common.c", - "./libs/mtb-hal-cat1/source/cyhal_dac.c", - "./libs/mtb-hal-cat1/source/cyhal_dma.c", - "./libs/mtb-hal-cat1/source/cyhal_dma_dmac.c", - "./libs/mtb-hal-cat1/source/cyhal_dma_dw.c", - "./libs/mtb-hal-cat1/source/cyhal_ezi2c.c", - "./libs/mtb-hal-cat1/source/cyhal_flash.c", - "./libs/mtb-hal-cat1/source/cyhal_gpio.c", - "./libs/mtb-hal-cat1/source/cyhal_hwmgr.c", - "./libs/mtb-hal-cat1/source/cyhal_i2c.c", - "./libs/mtb-hal-cat1/source/cyhal_i2s.c", - "./libs/mtb-hal-cat1/source/cyhal_interconnect.c", - "./libs/mtb-hal-cat1/source/cyhal_irq_psoc.c", - "./libs/mtb-hal-cat1/source/cyhal_keyscan.c", - "./libs/mtb-hal-cat1/source/cyhal_lptimer.c", - "./libs/mtb-hal-cat1/source/cyhal_opamp.c", - "./libs/mtb-hal-cat1/source/cyhal_pdmpcm.c", - "./libs/mtb-hal-cat1/source/cyhal_pwm.c", - "./libs/mtb-hal-cat1/source/cyhal_qspi.c", - "./libs/mtb-hal-cat1/source/cyhal_quaddec.c", - "./libs/mtb-hal-cat1/source/cyhal_rtc.c", - "./libs/mtb-hal-cat1/source/cyhal_scb_common.c", - "./libs/mtb-hal-cat1/source/cyhal_sdhc.c", - "./libs/mtb-hal-cat1/source/cyhal_spi.c", - "./libs/mtb-hal-cat1/source/cyhal_syspm.c", - "./libs/mtb-hal-cat1/source/cyhal_system.c", - "./libs/mtb-hal-cat1/source/cyhal_tcpwm_common.c", - "./libs/mtb-hal-cat1/source/cyhal_tdm.c", - "./libs/mtb-hal-cat1/source/cyhal_timer.c", - "./libs/mtb-hal-cat1/source/cyhal_trng.c", - "./libs/mtb-hal-cat1/source/cyhal_uart.c", - "./libs/mtb-hal-cat1/source/cyhal_udb_sdio.c", - "./libs/mtb-hal-cat1/source/cyhal_usb_dev.c", - "./libs/mtb-hal-cat1/source/cyhal_utils.c", - "./libs/mtb-hal-cat1/source/cyhal_utils_psoc.c", - "./libs/mtb-hal-cat1/source/cyhal_wdt.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_adcmic.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_ble_clk.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_btss.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_canfd.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_aes_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_aes_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_cmac_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_cmac_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_crc_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_crc_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_des_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_des_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_ecc_domain_params.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_ecc_ecdsa.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_ecc_key_gen.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_ecc_nist_p.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_hmac_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_hmac_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_hw.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_hw_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_mem_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_mem_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_prng_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_prng_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_rsa.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_sha_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_sha_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_trng_v1.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_trng_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_core_vu.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_crypto_server.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_cryptolite.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_csd.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_ctb.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_ctdac.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_dma.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_dmac.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_efuse.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_efuse_v3.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_flash.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_gpio.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_i2s.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_ipc_bt.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_ipc_drv.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_ipc_pipe.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_ipc_sema.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_keyscan.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_lin.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_lpcomp.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_lvd.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_mcwdt.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_pd_pdcm.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_pd_ppu.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_pdm_pcm.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_pdm_pcm_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_pra.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_pra_cfg.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_profile.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_prot.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_rtc.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_sar.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_scb_common.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_scb_ezi2c.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_scb_i2c.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_scb_spi.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_scb_uart.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_sd_host.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_seglcd.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_smartio.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_smif.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_smif_memslot.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_smif_sfdp.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_sysanalog.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_sysclk.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_sysclk_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_sysint.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_sysint_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_syslib.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_syspm.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_syspm_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_systick.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_systick_v2.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_tcpwm_counter.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_tcpwm_pwm.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_tcpwm_quaddec.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_tcpwm_shiftreg.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_tdm.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_trigmux.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_usbfs_dev_drv.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_usbfs_dev_drv_io.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_usbfs_dev_drv_io_dma.c", - "./libs/mtb-pdl-cat1/drivers/source/cy_wdt.c", - "./libs/mtb-pdl-cat1/drivers/source/ppu_v1.c", - "./libs/retarget-io/cy_retarget_io.c", - "./libs/secure-sockets/source/cy_pkcs_psa_logging.c", - "./libs/secure-sockets/source/cy_tls_weak.c", - "./libs/serial-flash/cy_serial_flash_prog.c", - "./libs/serial-flash/cy_serial_flash_qspi.c", - "./libs/whd-bsp-integration/cybsp_wifi.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/resources/resource_imp/whd_resources.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/bus_protocols/whd_bus.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/bus_protocols/whd_bus_common.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/bus_protocols/whd_bus_m2m_protocol.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/bus_protocols/whd_bus_sdio_protocol.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/bus_protocols/whd_bus_spi_protocol.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_ap.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_buffer_api.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_cdc_bdc.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_chip.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_chip_constants.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_clm.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_debug.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_events.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_logging.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_management.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_network_if.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_resource_if.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_sdpcm.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_thread.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_utils.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_wifi.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_wifi_api.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/src/whd_wifi_p2p.c", - "./libs/lwip-network-interface-integration/source/cy_network_mw_core.c", - "./libs/lwip-network-interface-integration/source/cy_lwip_dhcp_server.c", - "./libs/clib-support/TOOLCHAIN_GCC_ARM/cy_clib_support_newlib.c", - "./libs/TARGET_CY8CKIT-062S2-43012/bluetooth/cybsp_bt_config.c", - "./libs/TARGET_CY8CKIT-062S2-43012/cybsp.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_clocks.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_connectivity_bt.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_peripherals.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_pins.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_qspi_memslot.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_routing.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource/cycfg_system.c", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_CM4/system_psoc6_cm4.c", - "./libs/abstraction-rtos/source/COMPONENT_FREERTOS/cyabs_freertos_helpers.c", - "./libs/abstraction-rtos/source/COMPONENT_FREERTOS/cyabs_rtos_freertos.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/bootutil/src/bootutil_misc.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/cy_flash_map.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/cy_flash_psoc6.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/flash_qspi/flash_qspi.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/mem_config/mem_config_sfdp.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/ota_flash_map.c", - "./libs/anycloud-ota/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/cy_flash_pal/ota_flash_xip_map.c", - "./libs/bluetooth-freertos/firmware/COMPONENT_43012/COMPONENT_MURATA-1LV/COMPONENT_HCI-UART/w_bt_firmware_controller.c", - "./libs/clib-support/COMPONENT_FREERTOS/cy_mutex_pool.c", - "./libs/connectivity-utilities/network/COMPONENT_LWIP/cy_nw_helper.c", - "./libs/freertos/Source/portable/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/port.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_104_m_csp_ble.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_104_m_csp_ble_usb.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_116_bga_ble.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_116_bga_usb.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_124_bga.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_124_bga_sip.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_43_smt.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_68_qfn_ble.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_01_80_wlcsp.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_02_100_wlcsp.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_02_124_bga.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_02_128_tqfp.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_02_68_qfn.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_03_100_tqfp.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_03_49_wlcsp.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_03_68_qfn.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_04_64_tqfp.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_04_68_qfn.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/pin_packages/cyhal_psoc6_04_80_tqfp.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/triggers/cyhal_triggers_psoc6_01.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/triggers/cyhal_triggers_psoc6_02.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/triggers/cyhal_triggers_psoc6_03.c", - "./libs/mtb-hal-cat1/COMPONENT_CAT1A/source/triggers/cyhal_triggers_psoc6_04.c", - "./libs/mtb-pdl-cat1/devices/COMPONENT_CAT1A/source/cy_device.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_01_cm0p_sleep.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_02_cm0p_sleep.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_03_cm0p_sleep.c", - "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_04_cm0p_sleep.c", - "./libs/secure-sockets/source/COMPONENT_LWIP/cy_secure_sockets.c", - "./libs/secure-sockets/source/COMPONENT_MBEDTLS/cy_tls.c", - "./libs/secure-sockets/source/COMPONENT_MBEDTLS/iot_crypto.c", - "./libs/whd-bsp-integration/COMPONENT_LWIP/cy_network_buffer_lwip.c", - "./libs/wifi-connection-manager/source/cy_wcm.c", - "./libs/wifi-connection-manager/source/COMPONENT_MBEDTLS/cy_wps_aes_ctr_ccm.c", - "./libs/wifi-connection-manager/source/COMPONENT_MBEDTLS/cy_wps_crypto.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/resources/clm/COMPONENT_43012/43012C0-mfgtest_clm_blob.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/resources/clm/COMPONENT_43012/43012C0_clm_blob.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/resources/firmware/COMPONENT_43012/43012C0-mfgtest_bin.c", - "./libs/wifi-host-driver/WiFi_Host_Driver/resources/firmware/COMPONENT_43012/43012C0_bin.c", - "./arch/sys_arch.c" - ], - "cxx_source": [], - "asm_source": [ - "./libs/mtb-pdl-cat1/drivers/source/TOOLCHAIN_GCC_ARM/cy_syslib_gcc.S", - "./libs/TARGET_CY8CKIT-062S2-43012/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/startup_psoc6_02_cm4.S" - ], - "libs": [ - "./libs/btstack/stack/COMPONENT_WICED_BLE/COMPONENT_CM4/COMPONENT_SOFTFP/TOOLCHAIN_GCC_ARM/libbtstack.a" - ], - "objs": [] -} diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg.c b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg.c new file mode 100644 index 00000000000000..ee208401b46edc --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg.c @@ -0,0 +1,50 @@ +/******************************************************************************* + * File Name: cycfg.c + * + * Description: + * Wrapper function to initialize all generated code. + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include "cycfg.h" + +/* This function is provided for compatibility with older 2.X style projects. */ +void init_cycfg_all(void) +{ + cycfg_config_init(); + cycfg_config_reservations(); +} +void cycfg_config_init(void) +{ + init_cycfg_system(); + init_cycfg_clocks(); + init_cycfg_routing(); + init_cycfg_peripherals(); + init_cycfg_pins(); +} +void cycfg_config_reservations(void) +{ + reserve_cycfg_system(); + reserve_cycfg_clocks(); + reserve_cycfg_pins(); +} diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg.h new file mode 100644 index 00000000000000..14fd49c29027d6 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg.h @@ -0,0 +1,52 @@ +/******************************************************************************* + * File Name: cycfg.h + * + * Description: + * Simple wrapper header containing all generated files. + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#if !defined(CYCFG_H) +#define CYCFG_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_clocks.h" +#include "cycfg_connectivity_bt.h" +#include "cycfg_notices.h" +#include "cycfg_peripherals.h" +#include "cycfg_pins.h" +#include "cycfg_routing.h" +#include "cycfg_system.h" + +void init_cycfg_all(void); +void cycfg_config_init(void); +void cycfg_config_reservations(void); + +#if defined(__cplusplus) +} +#endif + +#endif /* CYCFG_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg.timestamp b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg.timestamp new file mode 100644 index 00000000000000..ef0be7a1d73ca9 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg.timestamp @@ -0,0 +1,28 @@ +/******************************************************************************* +* File Name: cycfg.timestamp +* +* Description: +* Sentinel file for determining if generated source is up to date. +* This file was automatically generated and should not be modified. +* Configurator Backend 3.10.0 +* device-db 4.100.0.4304 +* mtb-pdl-cat1 3.9.0.29592 +* +******************************************************************************** +* Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or +* an affiliate of Cypress Semiconductor Corporation. +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense.c b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense.c new file mode 100644 index 00000000000000..aad075c61d2607 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense.c @@ -0,0 +1,920 @@ +/******************************************************************************* + * File Name: cycfg_capsense.c + * + * Description: + * CAPSENSE Middleware configuration + * This file should not be modified. It was automatically generated by + * CAPSENSE Configurator 6.10.0.3796 + * + ******************************************************************************** + * Copyright 2024, Cypress Semiconductor Corporation (an Infineon company) + * or an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *******************************************************************************/ + +#include "cycfg_capsense.h" + +/* This enables code only when the CAPSENSE(TM) Middleware is present in the project + * or the information about the Middleware presence cannot be obtained. + */ +#if (defined(COMPONENT_MW_CAPSENSE) || !defined(COMPONENT_MW_CORE_MAKE)) + +#if !defined(CY_DISABLE_CAPSENSE) + +#if (CY_CAPSENSE_CORE == __CORTEX_M) + +#ifndef CSD_CMODPADS_PORT +#define CSD_CMODPADS_PORT 0xFF +#endif +#ifndef CSD_CMODPADS_PIN +#define CSD_CMODPADS_PIN 0xFF +#endif +#ifndef CSD_CSH_TANKPADS_PORT +#define CSD_CSH_TANKPADS_PORT 0xFF +#endif +#ifndef CSD_CSH_TANKPADS_PIN +#define CSD_CSH_TANKPADS_PIN 0xFF +#endif +#ifndef CSD_CSHIELDPADS_PORT +#define CSD_CSHIELDPADS_PORT 0xFF +#endif +#ifndef CSD_CSHIELDPADS_PIN +#define CSD_CSHIELDPADS_PIN 0xFF +#endif +#ifndef CSD_VREF_EXT_PORT +#define CSD_VREF_EXT_PORT 0xFF +#endif +#ifndef CSD_VREF_EXT_PIN +#define CSD_VREF_EXT_PIN 0xFF +#endif + +static cy_stc_capsense_internal_context_t cy_capsense_internalContext; + +#if (CY_CAPSENSE_MW_VERSION >= 400) +static cy_stc_capsense_active_scan_sns_t cy_capsense_activeScanSns; +#else +static cy_stc_active_scan_sns_t cy_capsense_activeScanSns; +#endif + +#if (CY_CAPSENSE_DEBOUNCE_SIZE > 0) +static uint8_t cy_capsense_debounce[CY_CAPSENSE_DEBOUNCE_SIZE] = { 0 }; +#endif + +#if (CY_CAPSENSE_NOISE_ENVELOPE_SIZE > 0) +static cy_stc_capsense_smartsense_csd_noise_envelope_t cy_capsense_noiseEnvelope[CY_CAPSENSE_NOISE_ENVELOPE_SIZE]; +#endif + +#if (CY_CAPSENSE_RAW_HISTORY_SIZE > 0) +static uint16_t cy_capsense_rawFilterHistory[CY_CAPSENSE_RAW_HISTORY_SIZE] = { 0 }; +#endif + +#if (CY_CAPSENSE_RAW_ALP_HISTORY_SIZE > 0) +static uint16_t cy_capsense_rawAlpFilterHistory[CY_CAPSENSE_RAW_ALP_HISTORY_SIZE] = { 0 }; +#endif + +#if (CY_CAPSENSE_IIR_HISTORY_LOW_SIZE > 0) +static uint8_t cy_capsense_iirHistoryLow[CY_CAPSENSE_IIR_HISTORY_LOW_SIZE] = { 0 }; +#endif + +#if (CY_CAPSENSE_POSITION_FILTER_HISTORY_SIZE > 0) +static cy_stc_capsense_position_t cy_capsense_positionFilterHistory[CY_CAPSENSE_POSITION_FILTER_HISTORY_SIZE]; +#endif + +#if (CY_CAPSENSE_TOUCH_FILTER_HISTORY_SIZE > 0) +static cy_stc_capsense_touch_t cy_capsense_touchFilterHistory[CY_CAPSENSE_TOUCH_FILTER_HISTORY_SIZE] = {}; +#endif + +#if (CY_CAPSENSE_DIPLEX_SIZE > 0) +static const uint8_t cy_capsense_diplexTable[CY_CAPSENSE_DIPLEX_SIZE] = {}; +#endif + +#if (CY_CAPSENSE_CSD_TOUCHPAD_MAX_SENSORS_SIZE > 0) +static uint16_t cy_capsense_csdTouchBuffer[CY_CAPSENSE_CSD_TOUCHPAD_MAX_SENSORS_SIZE] = { 0 }; +#endif + +#if (CY_CAPSENSE_CSX_TOUCH_BUFFER_ENABLE > 0) +static cy_stc_capsense_csx_touch_buffer_t cy_capsense_csxTouchBuffer; +#endif + +#if (CY_CAPSENSE_CSX_TOUCH_HISTORY_SIZE > 0) +static cy_stc_capsense_csx_touch_history_t cy_capsense_csxTouchHistory[CY_CAPSENSE_CSX_TOUCH_HISTORY_SIZE] = {}; +#endif + +#if (CY_CAPSENSE_BALLISTIC_WIDGET_COUNT > 0) +static cy_stc_capsense_ballistic_context_t cy_capsense_ballisticContext[CY_CAPSENSE_BALLISTIC_WIDGET_COUNT]; +#endif + +#if (CY_CAPSENSE_GESTURE_WIDGET_COUNT > 0) +static cy_stc_capsense_gesture_context_t cy_capsense_gestureContext[CY_CAPSENSE_GESTURE_WIDGET_COUNT]; +#endif + +#if (CY_CAPSENSE_BIST_SUPPORTED) +#if (CY_CAPSENSE_BIST_EN != 0) +static uint16_t cy_capsense_bslnInv[CY_CAPSENSE_SENSOR_COUNT * CY_CAPSENSE_MFS_CH_NUMBER]; +static uint32_t cy_capsense_eltdCap[CY_CAPSENSE_ELTD_COUNT]; +static uint16_t cy_capsense_wdgtCrc[CY_CAPSENSE_WIDGET_COUNT]; +#endif +#endif + +static const cy_stc_capsense_common_config_t cy_capsense_commonConfig = +{ + .cpuClkHz = CY_CAPSENSE_CPU_CLK, + .periClkHz = CY_CAPSENSE_PERI_CLK, + .vdda = CY_CAPSENSE_VDDA_MV, + .numPin = CY_CAPSENSE_PIN_COUNT, + .numSns = CY_CAPSENSE_SENSOR_COUNT, + .numWd = CY_CAPSENSE_TOTAL_WIDGET_COUNT, +#if (CY_CAPSENSE_MW_VERSION < 400) + .csdEn = CY_CAPSENSE_ENABLE, + .csxEn = CY_CAPSENSE_ENABLE, +#if (CY_CAPSENSE_MW_VERSION < 300) + .mfsEn = CY_CAPSENSE_DISABLE, +#endif +#if (CY_CAPSENSE_BIST_SUPPORTED) + .bistEn = CY_CAPSENSE_DISABLE, +#endif + .positionFilterEn = CY_CAPSENSE_DISABLE, +#endif + .periDividerType = (uint8_t)CY_CAPSENSE_PERI_DIV_TYPE, + .periDividerIndex = CY_CAPSENSE_PERI_DIV_INDEX, + .analogWakeupDelay = 25u, + .ssIrefSource = CY_CAPSENSE_IREF_SRSS, + .ssVrefSource = CY_CAPSENSE_VREF_SRSS, + .proxTouchCoeff = 300u, + .swSensorAutoResetEn = CY_CAPSENSE_DISABLE, + .portCmodPadNum = CSD_CMODPADS_PORT, + .pinCmodPad = CSD_CMODPADS_PIN, + .portCshPadNum = CSD_CSH_TANKPADS_PORT, + .pinCshPad = CSD_CSH_TANKPADS_PIN, + .portShieldPadNum = CSD_CSHIELDPADS_PORT, + .pinShieldPad = CSD_CSHIELDPADS_PIN, + .portVrefExtPadNum = CSD_VREF_EXT_PORT, + .pinVrefExtPad = CSD_VREF_EXT_PIN, + .portCmodNum = Cmod_PORT_NUM, + .idacGainTable = { + {0x01000000u, 37500u}, + {0x03000000u, 75000u}, + {0x01400000u, 300000u}, + {0x03400000u, 600000u}, + {0x01800000u, 2400000u}, + {0x03800000u, 4800000u}, + }, + .ptrCsdBase = CSD0, + .ptrCsdContext = &cy_csd_0_context, + .portCmod = Cmod_PORT, + .portCsh = NULL, + .portCintA = CintA_PORT, + .portCintB = CintB_PORT, + .pinCmod = Cmod_PIN, + .portCshNum = 0u, + .pinCsh = 0u, + .pinCintA = CintA_PIN, + .pinCintB = CintB_PIN, +#if (CY_CAPSENSE_MW_VERSION < 400) + .csdShieldEn = CY_CAPSENSE_DISABLE, +#endif + .csdInactiveSnsConnection = CY_CAPSENSE_SNS_CONNECTION_GROUND, +#if (CY_CAPSENSE_MW_VERSION >= 300) + .csxInactiveSnsConnection = CY_CAPSENSE_SNS_CONNECTION_GROUND, +#endif + .csdShieldDelay = CY_CAPSENSE_SH_DELAY_0NS, + .csdVref = 0u, + .csdRConst = 1000u, +#if (CY_CAPSENSE_MW_VERSION < 400) + .csdCTankShieldEn = CY_CAPSENSE_DISABLE, +#endif + .csdShieldNumPin = 0u, + .csdShieldSwRes = CY_CAPSENSE_SHIELD_SW_RES_MEDIUM, + .csdInitSwRes = CY_CAPSENSE_INIT_SW_RES_MEDIUM, + .csdChargeTransfer = CY_CAPSENSE_IDAC_SOURCING, + .csdRawTarget = 85u, +#if (CY_CAPSENSE_MW_VERSION < 400) + .csdAutotuneEn = CY_CAPSENSE_CSD_SS_HWTH_EN, + .csdIdacAutocalEn = CY_CAPSENSE_ENABLE, + .csdIdacAutoGainEn = CY_CAPSENSE_ENABLE, +#endif + .csdCalibrationError = 10u, + .csdIdacGainInitIndex = 4u, + .csdIdacMin = 20u, +#if (CY_CAPSENSE_MW_VERSION < 400) + .csdIdacCompEn = CY_CAPSENSE_ENABLE, +#endif + .csdFineInitTime = 10u, +#if (CY_CAPSENSE_MW_VERSION < 400) + .csdIdacRowColAlignEn = CY_CAPSENSE_ENABLE, +#endif + .csdMfsDividerOffsetF1 = 1u, + .csdMfsDividerOffsetF2 = 2u, + .csxRawTarget = 40u, +#if (CY_CAPSENSE_MW_VERSION < 400) + .csxIdacGainInitIndex = 2u, + .csxIdacAutocalEn = CY_CAPSENSE_ENABLE, +#endif + .csxCalibrationError = 20u, + .csxFineInitTime = 10u, + .csxInitSwRes = CY_CAPSENSE_INIT_SW_RES_MEDIUM, + .csxScanSwRes = CY_CAPSENSE_INIT_SW_RES_LOW, + .csxInitShieldSwRes = CY_CAPSENSE_SHIELD_SW_RES_MEDIUM, + .csxScanShieldSwRes = CY_CAPSENSE_SHIELD_SW_RES_LOW, + .csxMfsDividerOffsetF1 = 1u, + .csxMfsDividerOffsetF2 = 2u, +}; + +#if (CY_CAPSENSE_MW_VERSION < 300) +static const cy_stc_capsense_fptr_config_t cy_capsense_fptrConfig = { +#if (CY_CAPSENSE_CSD_EN == 0) + .fptrCSDSetupWidget = NULL, + .fptrCSDScan = NULL, + .fptrDpProcessCsdWidgetRawCounts = NULL, + .fptrDpProcessCsdWidgetStatus = NULL, + .fptrCSDDisableMode = NULL, + .fptrCSDInitialize = NULL, + .fptrCSDScanISR = NULL, +#else + .fptrCSDSetupWidget = &Cy_CapSense_CSDSetupWidget, + .fptrCSDScan = &Cy_CapSense_CSDScan, + .fptrDpProcessCsdWidgetRawCounts = &Cy_CapSense_DpProcessCsdWidgetRawCounts, + .fptrDpProcessCsdWidgetStatus = &Cy_CapSense_DpProcessCsdWidgetStatus, + .fptrCSDDisableMode = &Cy_CapSense_CSDDisableMode, + .fptrCSDInitialize = &Cy_CapSense_CSDInitialize, + .fptrCSDScanISR = &Cy_CapSense_CSDScanISR, +#endif + +#if (CY_CAPSENSE_CSX_EN == 0) + .fptrCSXSetupWidget = NULL, + .fptrCSXScan = NULL, + .fptrDpProcessCsxWidgetRawCounts = NULL, + .fptrDpProcessCsxWidgetStatus = NULL, + .fptrCSXInitialize = NULL, + .fptrCSXDisableMode = NULL, + .fptrCSXScanISR = NULL, +#else + .fptrCSXSetupWidget = &Cy_CapSense_CSXSetupWidget, + .fptrCSXScan = &Cy_CapSense_CSXScan, + .fptrDpProcessCsxWidgetRawCounts = &Cy_CapSense_DpProcessCsxWidgetRawCounts, + .fptrDpProcessCsxWidgetStatus = &Cy_CapSense_DpProcessCsxWidgetStatus, + .fptrCSXInitialize = &Cy_CapSense_CSXInitialize, + .fptrCSXDisableMode = &Cy_CapSense_CSXDisableMode, + .fptrCSXScanISR = &Cy_CapSense_CSXScanISR, +#endif + +#if (CY_CAPSENSE_ADAPTIVE_FILTER_EN == 0) + .fptrAdaptiveFilterInitializeLib = NULL, + .fptrAdaptiveFilterRunLib = NULL, +#else + .fptrAdaptiveFilterInitializeLib = &Cy_CapSense_AdaptiveFilterInitialize_Lib, + .fptrAdaptiveFilterRunLib = &Cy_CapSense_AdaptiveFilterRun_Lib, +#endif + +#if (CY_CAPSENSE_BALLISTIC_MULTIPLIER_EN == 0) + .fptrBallisticMultiplierLib = NULL, +#else + .fptrBallisticMultiplierLib = &Cy_CapSense_BallisticMultiplier_Lib, +#endif + +#if (CY_CAPSENSE_RAWCOUNT_FILTER_EN == 0) + .fptrInitializeAllFilters = NULL, + .fptrFtRunEnabledFiltersInternal = NULL, +#else + .fptrInitializeAllFilters = &Cy_CapSense_InitializeAllFilters, + .fptrFtRunEnabledFiltersInternal = &Cy_CapSense_FtRunEnabledFiltersInternal, +#endif + +#if (CY_CAPSENSE_CSD_POSITION_FILTER_EN == 0) + .fptrProcessPositionFilters = NULL, +#else + .fptrProcessPositionFilters = &Cy_CapSense_ProcessPositionFilters, +#endif + +#if ((CY_CAPSENSE_CSX_POSITION_FILTER_EN == 0) && (CY_CAPSENSE_CSD_POSITION_FILTER_EN == 0)) + .fptrRunPositionFilters = NULL, + .fptrInitPositionFilters = NULL, +#else + .fptrRunPositionFilters = &Cy_CapSense_RunPositionFilters, + .fptrInitPositionFilters = &Cy_CapSense_InitPositionFilters, +#endif + +#if ((CY_CAPSENSE_CSD_BUTTON_EN == 0) && (CY_CAPSENSE_CSX_BUTTON_EN == 0) && (CY_CAPSENSE_CSX_MATRIX_EN == 0)) + .fptrDpProcessButton = NULL, +#else + .fptrDpProcessButton = &Cy_CapSense_DpProcessButton, +#endif + +#if ((CY_CAPSENSE_CSD_SLIDER_EN == 0) && (CY_CAPSENSE_CSX_SLIDER_EN == 0)) + .fptrDpProcessSlider = NULL, +#else + .fptrDpProcessSlider = &Cy_CapSense_DpProcessSlider, +#endif + +#if (CY_CAPSENSE_CSD_MATRIX_EN == 0) + .fptrDpProcessCsdMatrix = NULL, +#else + .fptrDpProcessCsdMatrix = &Cy_CapSense_DpProcessCsdMatrix, +#endif + +#if (CY_CAPSENSE_CSD_TOUCHPAD_EN == 0) + .fptrDpProcessCsdTouchpad = NULL, +#else + .fptrDpProcessCsdTouchpad = &Cy_CapSense_DpProcessCsdTouchpad, +#endif + +#if (CY_CAPSENSE_CSD_PROXIMITY_EN == 0) + .fptrDpProcessProximity = NULL, +#else + .fptrDpProcessProximity = &Cy_CapSense_DpProcessProximity, +#endif + +#if (CY_CAPSENSE_CSX_TOUCHPAD_EN == 0) + .fptrDpProcessCsxTouchpad = NULL, +#else + .fptrDpProcessCsxTouchpad = &Cy_CapSense_DpProcessCsxTouchpad, +#endif + +#if (CY_CAPSENSE_ADVANCED_CENTROID_5X5_EN == 0) + .fptrDpAdvancedCentroidTouchpad = NULL, +#else + .fptrDpAdvancedCentroidTouchpad = &Cy_CapSense_DpAdvancedCentroidTouchpad, +#endif + +#if ((CY_CAPSENSE_CSD_CALIBRATION_EN == 0) && (CY_CAPSENSE_SMARTSENSE_FULL_EN == 0)) + .fptrCSDCalibrateWidget = NULL, + .fptrCalibrateAllCsdWidgets = NULL, +#else + .fptrCSDCalibrateWidget = &Cy_CapSense_CSDCalibrateWidget, + .fptrCalibrateAllCsdWidgets = &Cy_CapSense_CalibrateAllCsdWidgets, +#endif + +#if (CY_CAPSENSE_CSX_CALIBRATION_EN == 0) + .fptrCalibrateAllCsxWidgets = NULL, +#else + .fptrCalibrateAllCsxWidgets = &Cy_CapSense_CalibrateAllCsxWidgets, +#endif + +#if (CY_CAPSENSE_SMARTSENSE_FULL_EN == 0) + .fptrRunNoiseEnvelopeLib = NULL, + .fptrDpUpdateThresholds = NULL, + .fptrInitializeNoiseEnvelopeLib = NULL, +#else + .fptrRunNoiseEnvelopeLib = &Cy_CapSense_RunNoiseEnvelope_Lib, + .fptrDpUpdateThresholds = &Cy_CapSense_DpUpdateThresholds, + .fptrInitializeNoiseEnvelopeLib = &Cy_CapSense_InitializeNoiseEnvelope_Lib, +#endif + +#if ((CY_CAPSENSE_SMARTSENSE_HW_EN == 0) && (CY_CAPSENSE_SMARTSENSE_FULL_EN == 0)) + .fptrSsAutoTune = NULL, +#else + .fptrSsAutoTune = &Cy_CapSense_SsAutoTune, +#endif + +#if (CY_CAPSENSE_BIST_SUPPORTED) +#if (CY_CAPSENSE_BIST_EN == 0) + .fptrBistInitialize = NULL, + .fptrBistDisableMode = NULL, + .fptrBistDsInitialize = NULL, +#else + .fptrBistInitialize = &Cy_CapSense_BistInitialize, + .fptrBistDisableMode = &Cy_CapSense_BistDisableMode, + .fptrBistDsInitialize = &Cy_CapSense_BistDsInitialize, +#endif +#endif +}; +#endif + +static const cy_stc_capsense_pin_config_t cy_capsense_pinConfig[CY_CAPSENSE_PIN_COUNT] = { + { + /* Button0_Rx0 */ + Button0_Rx0_PORT, + Button0_Rx0_PIN, + }, + { + /* Button0_Tx */ + Button0_Tx_PORT, + Button0_Tx_PIN, + }, + { + /* Button1_Rx0 */ + Button1_Rx0_PORT, + Button1_Rx0_PIN, + }, + { + /* Button1_Tx */ + Button1_Tx_PORT, + Button1_Tx_PIN, + }, + { + /* LinearSlider0_Sns0 */ + LinearSlider0_Sns0_PORT, + LinearSlider0_Sns0_PIN, + }, + { + /* LinearSlider0_Sns1 */ + LinearSlider0_Sns1_PORT, + LinearSlider0_Sns1_PIN, + }, + { + /* LinearSlider0_Sns2 */ + LinearSlider0_Sns2_PORT, + LinearSlider0_Sns2_PIN, + }, + { + /* LinearSlider0_Sns3 */ + LinearSlider0_Sns3_PORT, + LinearSlider0_Sns3_PIN, + }, + { + /* LinearSlider0_Sns4 */ + LinearSlider0_Sns4_PORT, + LinearSlider0_Sns4_PIN, + }, +}; + +#if (CY_CAPSENSE_SHIELD_PIN_COUNT > 0) +static const cy_stc_capsense_pin_config_t cy_capsense_shieldPinConfig[CY_CAPSENSE_SHIELD_PIN_COUNT] = {}; +#endif + +#if (CY_CAPSENSE_ELTD_COUNT > 0) +static const cy_stc_capsense_electrode_config_t cy_capsense_electrodeConfig[CY_CAPSENSE_ELTD_COUNT] = { + { + /* Button0_Rx0 */ + .ptrPin = &cy_capsense_pinConfig[0u], + .type = (uint8_t) CY_CAPSENSE_ELTD_TYPE_MUT_RX_E, + .numPins = 1u, + }, + { + /* Button0_Tx */ + .ptrPin = &cy_capsense_pinConfig[1u], + .type = (uint8_t) CY_CAPSENSE_ELTD_TYPE_MUT_TX_E, + .numPins = 1u, + }, + { + /* Button1_Rx0 */ + .ptrPin = &cy_capsense_pinConfig[2u], + .type = (uint8_t) CY_CAPSENSE_ELTD_TYPE_MUT_RX_E, + .numPins = 1u, + }, + { + /* Button1_Tx */ + .ptrPin = &cy_capsense_pinConfig[3u], + .type = (uint8_t) CY_CAPSENSE_ELTD_TYPE_MUT_TX_E, + .numPins = 1u, + }, + { + /* LinearSlider0_Sns0 */ + .ptrPin = &cy_capsense_pinConfig[4u], + .type = (uint8_t) CY_CAPSENSE_ELTD_TYPE_SELF_E, + .numPins = 1u, + }, + { + /* LinearSlider0_Sns1 */ + .ptrPin = &cy_capsense_pinConfig[5u], + .type = (uint8_t) CY_CAPSENSE_ELTD_TYPE_SELF_E, + .numPins = 1u, + }, + { + /* LinearSlider0_Sns2 */ + .ptrPin = &cy_capsense_pinConfig[6u], + .type = (uint8_t) CY_CAPSENSE_ELTD_TYPE_SELF_E, + .numPins = 1u, + }, + { + /* LinearSlider0_Sns3 */ + .ptrPin = &cy_capsense_pinConfig[7u], + .type = (uint8_t) CY_CAPSENSE_ELTD_TYPE_SELF_E, + .numPins = 1u, + }, + { + /* LinearSlider0_Sns4 */ + .ptrPin = &cy_capsense_pinConfig[8u], + .type = (uint8_t) CY_CAPSENSE_ELTD_TYPE_SELF_E, + .numPins = 1u, + }, +}; +#endif + +static const cy_stc_capsense_widget_config_t cy_capsense_widgetConfig[CY_CAPSENSE_WIDGET_COUNT] = +{ + { /* Button0 */ + .ptrWdContext = &cy_capsense_tuner.widgetContext[0u], + .ptrSnsContext = &cy_capsense_tuner.sensorContext[0u], + .ptrEltdConfig = &cy_capsense_electrodeConfig[0u], +#if (CY_CAPSENSE_BIST_SUPPORTED) + .ptrEltdCapacitance = NULL, + .ptrBslnInv = NULL, +#endif + .ptrNoiseEnvelope = NULL, + .ptrRawFilterHistory = NULL, + .ptrRawFilterHistoryLow = NULL, + .iirCoeff = 128u, + .ptrDebounceArr = &cy_capsense_debounce[0u], + .ptrDiplexTable = NULL, + .centroidConfig = 0u, + .xResolution = 0u, + .yResolution = 0u, + .numSns = 1u, + .numCols = 1u, + .numRows = 1u, + .ptrPosFilterHistory = NULL, + .ptrCsxTouchHistory = NULL, + .ptrCsxTouchBuffer = NULL, + .ptrCsdTouchBuffer = NULL, + .ptrGestureConfig = NULL, + .ptrGestureContext = NULL, + .ballisticConfig = { + .accelCoeff = 9u, + .speedCoeff = 2u, + .divisorValue = 4u, + .speedThresholdX = 3u, + .speedThresholdY = 4u, + }, + .ptrBallisticContext = NULL, + .aiirConfig = { + .maxK = 60u, + .minK = 1u, + .noMovTh = 3u, + .littleMovTh = 7u, + .largeMovTh = 12u, + .divVal = 64u, + }, + .advConfig = { + .penultimateTh = 100u, + .virtualSnsTh = 100u, + .crossCouplingTh = 5u, + }, + .posFilterConfig = 0u, + .rawFilterConfig = 0u, +#if (CY_CAPSENSE_MW_VERSION >= 400) + .alpOnThreshold = 15u, + .alpOffThreshold = 5u, +#endif +#if (CY_CAPSENSE_MW_VERSION >= 300) + .senseMethod = CY_CAPSENSE_CSX_GROUP, +#else + .senseMethod = CY_CAPSENSE_SENSE_METHOD_CSX_E, +#endif + .wdType = (uint8_t)CY_CAPSENSE_WD_BUTTON_E, + }, + { /* Button1 */ + .ptrWdContext = &cy_capsense_tuner.widgetContext[1u], + .ptrSnsContext = &cy_capsense_tuner.sensorContext[1u], + .ptrEltdConfig = &cy_capsense_electrodeConfig[2u], +#if (CY_CAPSENSE_BIST_SUPPORTED) + .ptrEltdCapacitance = NULL, + .ptrBslnInv = NULL, +#endif + .ptrNoiseEnvelope = NULL, + .ptrRawFilterHistory = NULL, + .ptrRawFilterHistoryLow = NULL, + .iirCoeff = 128u, + .ptrDebounceArr = &cy_capsense_debounce[1u], + .ptrDiplexTable = NULL, + .centroidConfig = 0u, + .xResolution = 0u, + .yResolution = 0u, + .numSns = 1u, + .numCols = 1u, + .numRows = 1u, + .ptrPosFilterHistory = NULL, + .ptrCsxTouchHistory = NULL, + .ptrCsxTouchBuffer = NULL, + .ptrCsdTouchBuffer = NULL, + .ptrGestureConfig = NULL, + .ptrGestureContext = NULL, + .ballisticConfig = { + .accelCoeff = 9u, + .speedCoeff = 2u, + .divisorValue = 4u, + .speedThresholdX = 3u, + .speedThresholdY = 4u, + }, + .ptrBallisticContext = NULL, + .aiirConfig = { + .maxK = 60u, + .minK = 1u, + .noMovTh = 3u, + .littleMovTh = 7u, + .largeMovTh = 12u, + .divVal = 64u, + }, + .advConfig = { + .penultimateTh = 100u, + .virtualSnsTh = 100u, + .crossCouplingTh = 5u, + }, + .posFilterConfig = 0u, + .rawFilterConfig = 0u, +#if (CY_CAPSENSE_MW_VERSION >= 400) + .alpOnThreshold = 15u, + .alpOffThreshold = 5u, +#endif +#if (CY_CAPSENSE_MW_VERSION >= 300) + .senseMethod = CY_CAPSENSE_CSX_GROUP, +#else + .senseMethod = CY_CAPSENSE_SENSE_METHOD_CSX_E, +#endif + .wdType = (uint8_t)CY_CAPSENSE_WD_BUTTON_E, + }, + { /* LinearSlider0 */ + .ptrWdContext = &cy_capsense_tuner.widgetContext[2u], + .ptrSnsContext = &cy_capsense_tuner.sensorContext[2u], + .ptrEltdConfig = &cy_capsense_electrodeConfig[4u], +#if (CY_CAPSENSE_BIST_SUPPORTED) + .ptrEltdCapacitance = NULL, + .ptrBslnInv = NULL, +#endif + .ptrNoiseEnvelope = &cy_capsense_noiseEnvelope[0u], + .ptrRawFilterHistory = NULL, + .ptrRawFilterHistoryLow = NULL, + .iirCoeff = 128u, + .ptrDebounceArr = &cy_capsense_debounce[2u], + .ptrDiplexTable = NULL, + .centroidConfig = 1u, + .xResolution = 300u, + .yResolution = 0u, + .numSns = 5u, + .numCols = 5u, + .numRows = 0u, + .ptrPosFilterHistory = NULL, + .ptrCsxTouchHistory = NULL, + .ptrCsxTouchBuffer = NULL, + .ptrCsdTouchBuffer = NULL, + .ptrGestureConfig = NULL, + .ptrGestureContext = NULL, + .ballisticConfig = { + .accelCoeff = 9u, + .speedCoeff = 2u, + .divisorValue = 4u, + .speedThresholdX = 3u, + .speedThresholdY = 4u, + }, + .ptrBallisticContext = NULL, + .aiirConfig = { + .maxK = 60u, + .minK = 1u, + .noMovTh = 3u, + .littleMovTh = 7u, + .largeMovTh = 12u, + .divVal = 64u, + }, + .advConfig = { + .penultimateTh = 100u, + .virtualSnsTh = 100u, + .crossCouplingTh = 5u, + }, + .posFilterConfig = 0u, + .rawFilterConfig = 0u, +#if (CY_CAPSENSE_MW_VERSION >= 400) + .alpOnThreshold = 15u, + .alpOffThreshold = 5u, +#endif +#if (CY_CAPSENSE_MW_VERSION >= 300) + .senseMethod = CY_CAPSENSE_CSD_GROUP, +#else + .senseMethod = CY_CAPSENSE_SENSE_METHOD_CSD_E, +#endif + .wdType = (uint8_t)CY_CAPSENSE_WD_LINEAR_SLIDER_E, + }, +}; + +cy_stc_capsense_tuner_t cy_capsense_tuner = +{ + .commonContext = { +#if (CY_CAPSENSE_MW_VERSION < 300) + .configId = 0x0990, +#elif (CY_CAPSENSE_MW_VERSION < 400) + .configId = 0x0991, +#else + .configId = 0x0992, +#endif + + .tunerCmd = 0u, + .scanCounter = 0u, + .tunerSt = 0u, + .initDone = 0u, +#if (CY_CAPSENSE_MW_VERSION < 300) + .ptrSSCallback = NULL, + .ptrEOSCallback = NULL, + .ptrTunerSendCallback = NULL, + .ptrTunerReceiveCallback = NULL, +#endif + .status = 0u, + .timestampInterval = 1u, + .timestamp = 0u, + .modCsdClk = 2u, + .modCsxClk = 2u, + .tunerCnt = 0u, + }, + .widgetContext = { + { /* Button0 */ + .fingerCap = 160u, + .sigPFC = 0u, + .resolution = 100u, + .maxRawCount = 0u, +#if (CY_CAPSENSE_MW_VERSION >= 300) + .maxRawCountRow = 0u, +#endif + .fingerTh = 100u, + .proxTh = 200u, + .lowBslnRst = 30u, + .snsClk = 32u, + .rowSnsClk = 16u, + .gestureDetected = 0u, + .gestureDirection = 0u, + .xDelta = 0, + .yDelta = 0, + .noiseTh = 40u, + .nNoiseTh = 40u, + .hysteresis = 10u, + .onDebounce = 3u, + .snsClkSource = CY_CAPSENSE_CLK_SOURCE_AUTO_MASK, + .idacMod = { 32u, 32u, 32u, }, + .idacGainIndex = 2u, + .rowIdacMod = { 32u, 32u, 32u, }, + .bslnCoeff = 1u, + .status = 0u, + .wdTouch = { + .ptrPosition = NULL, + .numPosition = 0, + }, + }, + { /* Button1 */ + .fingerCap = 160u, + .sigPFC = 0u, + .resolution = 100u, + .maxRawCount = 0u, +#if (CY_CAPSENSE_MW_VERSION >= 300) + .maxRawCountRow = 0u, +#endif + .fingerTh = 100u, + .proxTh = 200u, + .lowBslnRst = 30u, + .snsClk = 32u, + .rowSnsClk = 16u, + .gestureDetected = 0u, + .gestureDirection = 0u, + .xDelta = 0, + .yDelta = 0, + .noiseTh = 40u, + .nNoiseTh = 40u, + .hysteresis = 10u, + .onDebounce = 3u, + .snsClkSource = CY_CAPSENSE_CLK_SOURCE_AUTO_MASK, + .idacMod = { 32u, 32u, 32u, }, + .idacGainIndex = 2u, + .rowIdacMod = { 32u, 32u, 32u, }, + .bslnCoeff = 1u, + .status = 0u, + .wdTouch = { + .ptrPosition = NULL, + .numPosition = 0, + }, + }, + { /* LinearSlider0 */ + .fingerCap = 160u, + .sigPFC = 0u, + .resolution = 12u, + .maxRawCount = 0u, +#if (CY_CAPSENSE_MW_VERSION >= 300) + .maxRawCountRow = 0u, +#endif + .fingerTh = 100u, + .proxTh = 200u, + .lowBslnRst = 30u, + .snsClk = 16u, + .rowSnsClk = 16u, + .gestureDetected = 0u, + .gestureDirection = 0u, + .xDelta = 0, + .yDelta = 0, + .noiseTh = 40u, + .nNoiseTh = 40u, + .hysteresis = 10u, + .onDebounce = 3u, + .snsClkSource = CY_CAPSENSE_CLK_SOURCE_AUTO_MASK, + .idacMod = { 32u, 32u, 32u, }, + .idacGainIndex = 4u, + .rowIdacMod = { 32u, 32u, 32u, }, + .bslnCoeff = 1u, + .status = 0u, + .wdTouch = { + .ptrPosition = &cy_capsense_tuner.position[0u], + .numPosition = 1, + }, + }, + }, + .sensorContext = { + { /* Button0_Rx0 */ + .raw = 0u, + .bsln = 0u, + .diff = 0u, + .status = 0u, + .negBslnRstCnt = 0u, + .idacComp = 32u, + .bslnExt = 0u, + }, + { /* Button1_Rx0 */ + .raw = 0u, + .bsln = 0u, + .diff = 0u, + .status = 0u, + .negBslnRstCnt = 0u, + .idacComp = 32u, + .bslnExt = 0u, + }, + { /* LinearSlider0_Sns0 */ + .raw = 0u, + .bsln = 0u, + .diff = 0u, + .status = 0u, + .negBslnRstCnt = 0u, + .idacComp = 32u, + .bslnExt = 0u, + }, + { /* LinearSlider0_Sns1 */ + .raw = 0u, + .bsln = 0u, + .diff = 0u, + .status = 0u, + .negBslnRstCnt = 0u, + .idacComp = 32u, + .bslnExt = 0u, + }, + { /* LinearSlider0_Sns2 */ + .raw = 0u, + .bsln = 0u, + .diff = 0u, + .status = 0u, + .negBslnRstCnt = 0u, + .idacComp = 32u, + .bslnExt = 0u, + }, + { /* LinearSlider0_Sns3 */ + .raw = 0u, + .bsln = 0u, + .diff = 0u, + .status = 0u, + .negBslnRstCnt = 0u, + .idacComp = 32u, + .bslnExt = 0u, + }, + { /* LinearSlider0_Sns4 */ + .raw = 0u, + .bsln = 0u, + .diff = 0u, + .status = 0u, + .negBslnRstCnt = 0u, + .idacComp = 32u, + .bslnExt = 0u, + }, + }, + .position = { + { /* LinearSlider0 */ + .x = 0u, + .y = 0u, + .z = 0u, + .id = 0u, + }, + }, +}; + +#if (CY_CAPSENSE_BIST_SUPPORTED) +#if (CY_CAPSENSE_BIST_EN != 0) +static cy_stc_capsense_bist_context_t cy_capsense_bist_context = {}; +#endif +#endif + +cy_stc_capsense_context_t cy_capsense_context = { + .ptrCommonConfig = &cy_capsense_commonConfig, + .ptrCommonContext = &cy_capsense_tuner.commonContext, + .ptrInternalContext = &cy_capsense_internalContext, + .ptrWdConfig = &cy_capsense_widgetConfig[0u], + .ptrWdContext = &cy_capsense_tuner.widgetContext[0u], + .ptrPinConfig = &cy_capsense_pinConfig[0u], + .ptrShieldPinConfig = NULL, + .ptrActiveScanSns = &cy_capsense_activeScanSns, +#if (CY_CAPSENSE_MW_VERSION < 300) + .ptrFptrConfig = (const void *) &cy_capsense_fptrConfig, +#endif +#if (CY_CAPSENSE_BIST_SUPPORTED) + .ptrBistContext = NULL, +#endif +}; + +#endif /* CY_CAPSENSE_CORE == __CORTEX_M */ + +#endif /* !defined(CY_DISABLE_CAPSENSE) */ + +#endif /* (defined(COMPONENT_MW_CAPSENSE) || !defined(COMPONENT_MW_CORE_MAKE)) */ + +/* [] END OF FILE */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense.h new file mode 100644 index 00000000000000..8654b3c71e2ac8 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense.h @@ -0,0 +1,2334 @@ +/******************************************************************************* + * File Name: cycfg_capsense.h + * + * Description: + * CAPSENSE Middleware configuration + * This file should not be modified. It was automatically generated by + * CAPSENSE Configurator 6.10.0.3796 + * + ******************************************************************************** + * Copyright 2024, Cypress Semiconductor Corporation (an Infineon company) + * or an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *******************************************************************************/ + +#if !defined(CYCFG_CAPSENSE_H) +#define CYCFG_CAPSENSE_H + +/* This enables code only when the CAPSENSE(TM) Middleware is present in the project + * or the information about the Middleware presence cannot be obtained. + */ +#if (defined(COMPONENT_MW_CAPSENSE) || !defined(COMPONENT_MW_CORE_MAKE)) + +#include "cy_device_headers.h" +#include "cycfg_capsense_defines.h" +#include "cycfg_peripherals.h" +#include + +#define CY_CAPSENSE_CFG_TOOL_VERSION (610) + +#if !defined(CY_DISABLE_CAPSENSE) + +#if (CY_CAPSENSE_CORE == __CORTEX_M) + +#if !defined(Cmod_PORT) || !defined(Cmod_PIN) || !defined(Cmod_PORT_NUM) +#error Cmod Capacitor is not assigned: missing #define Cmod_PORT, #define Cmod_PIN, #define Cmod_PORT_NUM +#endif + +#if !defined(CintA_PORT) || !defined(CintA_PIN) || !defined(CintA_PORT_NUM) +#error CintA Capacitor is not assigned: missing #define CintA_PORT, #define CintA_PIN, #define CintA_PORT_NUM +#endif + +#if !defined(CintB_PORT) || !defined(CintB_PIN) || !defined(CintB_PORT_NUM) +#error CintB Capacitor is not assigned: missing #define CintB_PORT, #define CintB_PIN, #define CintB_PORT_NUM +#endif + +#if !defined(Button0_Rx0_PORT) || !defined(Button0_Rx0_PIN) +#error Button0_Rx0 Sensor is not assigned: missing #define Button0_Rx0_PORT, #define Button0_Rx0_PIN +#endif + +#if !defined(Button0_Tx_PORT) || !defined(Button0_Tx_PIN) +#error Button0_Tx Sensor is not assigned: missing #define Button0_Tx_PORT, #define Button0_Tx_PIN +#endif + +#if !defined(Button1_Rx0_PORT) || !defined(Button1_Rx0_PIN) +#error Button1_Rx0 Sensor is not assigned: missing #define Button1_Rx0_PORT, #define Button1_Rx0_PIN +#endif + +#if !defined(Button1_Tx_PORT) || !defined(Button1_Tx_PIN) +#error Button1_Tx Sensor is not assigned: missing #define Button1_Tx_PORT, #define Button1_Tx_PIN +#endif + +#if !defined(LinearSlider0_Sns0_PORT) || !defined(LinearSlider0_Sns0_PIN) +#error LinearSlider0_Sns0 Sensor is not assigned: missing #define LinearSlider0_Sns0_PORT, #define LinearSlider0_Sns0_PIN +#endif + +#if !defined(LinearSlider0_Sns1_PORT) || !defined(LinearSlider0_Sns1_PIN) +#error LinearSlider0_Sns1 Sensor is not assigned: missing #define LinearSlider0_Sns1_PORT, #define LinearSlider0_Sns1_PIN +#endif + +#if !defined(LinearSlider0_Sns2_PORT) || !defined(LinearSlider0_Sns2_PIN) +#error LinearSlider0_Sns2 Sensor is not assigned: missing #define LinearSlider0_Sns2_PORT, #define LinearSlider0_Sns2_PIN +#endif + +#if !defined(LinearSlider0_Sns3_PORT) || !defined(LinearSlider0_Sns3_PIN) +#error LinearSlider0_Sns3 Sensor is not assigned: missing #define LinearSlider0_Sns3_PORT, #define LinearSlider0_Sns3_PIN +#endif + +#if !defined(LinearSlider0_Sns4_PORT) || !defined(LinearSlider0_Sns4_PIN) +#error LinearSlider0_Sns4 Sensor is not assigned: missing #define LinearSlider0_Sns4_PORT, #define LinearSlider0_Sns4_PIN +#endif + +#if !defined(CY_CAPSENSE_CPU_CLK) +#error CPU clock frequency is not set: missing #define CY_CAPSENSE_CPU_CLK +#endif + +#if !defined(CY_CAPSENSE_PERI_CLK) +#error Peripheral clock core is not set: missing #define CY_CAPSENSE_PERI_CLK +#endif + +#if !defined(CY_CAPSENSE_VDDA_MV) +#error VDDA voltage is not set: missing #define CY_CAPSENSE_VDDA_MV +#endif + +#if !defined(CY_CAPSENSE_PERI_DIV_TYPE) +#error Peripheral clock divider type is not set: missing #define CY_CAPSENSE_PERI_DIV_TYPE +#endif + +#if !defined(CY_CAPSENSE_PERI_DIV_INDEX) +#error Peripheral clock divider index is not set: missing #define CY_CAPSENSE_PERI_DIV_INDEX +#endif + +#include "cy_capsense.h" + +/* Supported CapSense Middleware version */ +#define CY_CAPSENSE_MW_VERSION_REQUIRED (200) + +#if !defined(CY_CAPSENSE_MW_VERSION) +#if (CY_CAPSENSE_MW_VERSION_MAJOR == 2) +#define CY_CAPSENSE_MW_VERSION (200) +#elif (CY_CAPSENSE_MW_VERSION_MAJOR == 1) +#define CY_CAPSENSE_MW_VERSION (100) +#else +#define CY_CAPSENSE_MW_VERSION (100) +#endif +#endif + +/* Check the used Middleware version */ +#if (CY_CAPSENSE_MW_VERSION_REQUIRED > CY_CAPSENSE_MW_VERSION) +#error The CapSense Configurator requires a newer version of the CapSense Middleware. Update the CapSense Middleware in your project. +#endif + +#define CY_CAPSENSE_BIST_SUPPORTED (CY_CAPSENSE_MW_VERSION >= 210) + +#if defined(__cplusplus) +extern "C" { +#endif + +/* Widget names */ +#define CY_CAPSENSE_BUTTON0_WDGT_ID (0u) +#define CY_CAPSENSE_BUTTON1_WDGT_ID (1u) +#define CY_CAPSENSE_LINEARSLIDER0_WDGT_ID (2u) + +/* Button0 sensor names */ +#define CY_CAPSENSE_BUTTON0_SNS0_ID (0u) + +/* Button0 node names */ +#define CY_CAPSENSE_BUTTON0_RX0_TX0_ID (0u) + +/* Button0 sensor element IDs */ +#define CY_CAPSENSE_BUTTON0_RX0_ID (0u) +#define CY_CAPSENSE_BUTTON0_TX0_ID (1u) + +/* Button1 sensor names */ +#define CY_CAPSENSE_BUTTON1_SNS0_ID (0u) + +/* Button1 node names */ +#define CY_CAPSENSE_BUTTON1_RX0_TX0_ID (0u) + +/* Button1 sensor element IDs */ +#define CY_CAPSENSE_BUTTON1_RX0_ID (0u) +#define CY_CAPSENSE_BUTTON1_TX0_ID (1u) + +/* LinearSlider0 sensor names */ +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_ID (0u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_ID (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_ID (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_ID (3u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_ID (4u) + +typedef struct +{ + cy_stc_capsense_common_context_t commonContext; + cy_stc_capsense_widget_context_t widgetContext[3]; + cy_stc_capsense_sensor_context_t sensorContext[7]; + cy_stc_capsense_position_t position[1]; +} cy_stc_capsense_tuner_t; + +extern cy_stc_capsense_tuner_t cy_capsense_tuner; + +extern cy_stc_capsense_context_t cy_capsense_context; + +/* RAM Data structure register definitions */ +#if (CY_CAPSENSE_MW_VERSION < 300) +#define CY_CAPSENSE_CONFIG_ID_VALUE (cy_capsense_tuner.commonContext.configId) +#define CY_CAPSENSE_CONFIG_ID_OFFSET (0u) +#define CY_CAPSENSE_CONFIG_ID_SIZE (2u) +#define CY_CAPSENSE_CONFIG_ID_PARAM_ID (0x02000000u) + +#define CY_CAPSENSE_TUNER_CMD_VALUE (cy_capsense_tuner.commonContext.tunerCmd) +#define CY_CAPSENSE_TUNER_CMD_OFFSET (2u) +#define CY_CAPSENSE_TUNER_CMD_SIZE (2u) +#define CY_CAPSENSE_TUNER_CMD_PARAM_ID (0x02000002u) + +#define CY_CAPSENSE_SCAN_COUNTER_VALUE (cy_capsense_tuner.commonContext.scanCounter) +#define CY_CAPSENSE_SCAN_COUNTER_OFFSET (4u) +#define CY_CAPSENSE_SCAN_COUNTER_SIZE (2u) +#define CY_CAPSENSE_SCAN_COUNTER_PARAM_ID (0x02000004u) + +#define CY_CAPSENSE_TUNER_ST_VALUE (cy_capsense_tuner.commonContext.tunerSt) +#define CY_CAPSENSE_TUNER_ST_OFFSET (6u) +#define CY_CAPSENSE_TUNER_ST_SIZE (1u) +#define CY_CAPSENSE_TUNER_ST_PARAM_ID (0x01000006u) + +#define CY_CAPSENSE_INITDONE_VALUE (cy_capsense_tuner.commonContext.initDone) +#define CY_CAPSENSE_INITDONE_OFFSET (7u) +#define CY_CAPSENSE_INITDONE_SIZE (1u) +#define CY_CAPSENSE_INITDONE_PARAM_ID (0x01000007u) + +#define CY_CAPSENSE_PTRSSCALLBACK_VALUE (cy_capsense_tuner.commonContext.ptrSSCallback) +#define CY_CAPSENSE_PTRSSCALLBACK_OFFSET (8u) +#define CY_CAPSENSE_PTRSSCALLBACK_SIZE (4u) +#define CY_CAPSENSE_PTRSSCALLBACK_PARAM_ID (0x03000008u) + +#define CY_CAPSENSE_PTREOSCALLBACK_VALUE (cy_capsense_tuner.commonContext.ptrEOSCallback) +#define CY_CAPSENSE_PTREOSCALLBACK_OFFSET (12u) +#define CY_CAPSENSE_PTREOSCALLBACK_SIZE (4u) +#define CY_CAPSENSE_PTREOSCALLBACK_PARAM_ID (0x0300000cu) + +#define CY_CAPSENSE_PTRTUNERSENDCALLBACK_VALUE (cy_capsense_tuner.commonContext.ptrTunerSendCallback) +#define CY_CAPSENSE_PTRTUNERSENDCALLBACK_OFFSET (16u) +#define CY_CAPSENSE_PTRTUNERSENDCALLBACK_SIZE (4u) +#define CY_CAPSENSE_PTRTUNERSENDCALLBACK_PARAM_ID (0x03000010u) + +#define CY_CAPSENSE_PTRTUNERRECEIVECALLBACK_VALUE (cy_capsense_tuner.commonContext.ptrTunerReceiveCallback) +#define CY_CAPSENSE_PTRTUNERRECEIVECALLBACK_OFFSET (20u) +#define CY_CAPSENSE_PTRTUNERRECEIVECALLBACK_SIZE (4u) +#define CY_CAPSENSE_PTRTUNERRECEIVECALLBACK_PARAM_ID (0x03000014u) + +#define CY_CAPSENSE_STATUS_VALUE (cy_capsense_tuner.commonContext.status) +#define CY_CAPSENSE_STATUS_OFFSET (24u) +#define CY_CAPSENSE_STATUS_SIZE (4u) +#define CY_CAPSENSE_STATUS_PARAM_ID (0x03000018u) + +#define CY_CAPSENSE_TIMESTAMPINTERVAL_VALUE (cy_capsense_tuner.commonContext.timestampInterval) +#define CY_CAPSENSE_TIMESTAMPINTERVAL_OFFSET (28u) +#define CY_CAPSENSE_TIMESTAMPINTERVAL_SIZE (4u) +#define CY_CAPSENSE_TIMESTAMPINTERVAL_PARAM_ID (0x0300001cu) + +#define CY_CAPSENSE_TIMESTAMP_VALUE (cy_capsense_tuner.commonContext.timestamp) +#define CY_CAPSENSE_TIMESTAMP_OFFSET (32u) +#define CY_CAPSENSE_TIMESTAMP_SIZE (4u) +#define CY_CAPSENSE_TIMESTAMP_PARAM_ID (0x03000020u) + +#define CY_CAPSENSE_CSD_MOD_CLK_DIVIDER_VALUE (cy_capsense_tuner.commonContext.modCsdClk) +#define CY_CAPSENSE_CSD_MOD_CLK_DIVIDER_OFFSET (36u) +#define CY_CAPSENSE_CSD_MOD_CLK_DIVIDER_SIZE (1u) +#define CY_CAPSENSE_CSD_MOD_CLK_DIVIDER_PARAM_ID (0x01000024u) + +#define CY_CAPSENSE_CSX_MOD_CLK_DIVIDER_VALUE (cy_capsense_tuner.commonContext.modCsxClk) +#define CY_CAPSENSE_CSX_MOD_CLK_DIVIDER_OFFSET (37u) +#define CY_CAPSENSE_CSX_MOD_CLK_DIVIDER_SIZE (1u) +#define CY_CAPSENSE_CSX_MOD_CLK_DIVIDER_PARAM_ID (0x01000025u) + +#define CY_CAPSENSE_TUNER_CNT_VALUE (cy_capsense_tuner.commonContext.tunerCnt) +#define CY_CAPSENSE_TUNER_CNT_OFFSET (38u) +#define CY_CAPSENSE_TUNER_CNT_SIZE (1u) +#define CY_CAPSENSE_TUNER_CNT_PARAM_ID (0x01000026u) + +#define CY_CAPSENSE_BUTTON0_FINGER_CP_VALUE (cy_capsense_tuner.widgetContext[0].fingerCap) +#define CY_CAPSENSE_BUTTON0_FINGER_CP_OFFSET (40u) +#define CY_CAPSENSE_BUTTON0_FINGER_CP_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_FINGER_CP_PARAM_ID (0x06000028u) + +#define CY_CAPSENSE_BUTTON0_SIGPFC_VALUE (cy_capsense_tuner.widgetContext[0].sigPFC) +#define CY_CAPSENSE_BUTTON0_SIGPFC_OFFSET (42u) +#define CY_CAPSENSE_BUTTON0_SIGPFC_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_SIGPFC_PARAM_ID (0x0600002au) + +#define CY_CAPSENSE_BUTTON0_NUM_CONV_VALUE (cy_capsense_tuner.widgetContext[0].resolution) +#define CY_CAPSENSE_BUTTON0_NUM_CONV_OFFSET (44u) +#define CY_CAPSENSE_BUTTON0_NUM_CONV_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_NUM_CONV_PARAM_ID (0x0600002cu) + +#define CY_CAPSENSE_BUTTON0_MAX_RAW_COUNT_VALUE (cy_capsense_tuner.widgetContext[0].maxRawCount) +#define CY_CAPSENSE_BUTTON0_MAX_RAW_COUNT_OFFSET (46u) +#define CY_CAPSENSE_BUTTON0_MAX_RAW_COUNT_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_MAX_RAW_COUNT_PARAM_ID (0x0600002eu) + +#define CY_CAPSENSE_BUTTON0_FINGER_TH_VALUE (cy_capsense_tuner.widgetContext[0].fingerTh) +#define CY_CAPSENSE_BUTTON0_FINGER_TH_OFFSET (48u) +#define CY_CAPSENSE_BUTTON0_FINGER_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_FINGER_TH_PARAM_ID (0x06000030u) + +#define CY_CAPSENSE_BUTTON0_PROX_TOUCH_TH_VALUE (cy_capsense_tuner.widgetContext[0].proxTh) +#define CY_CAPSENSE_BUTTON0_PROX_TOUCH_TH_OFFSET (50u) +#define CY_CAPSENSE_BUTTON0_PROX_TOUCH_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_PROX_TOUCH_TH_PARAM_ID (0x06000032u) + +#define CY_CAPSENSE_BUTTON0_LOW_BSLN_RST_VALUE (cy_capsense_tuner.widgetContext[0].lowBslnRst) +#define CY_CAPSENSE_BUTTON0_LOW_BSLN_RST_OFFSET (52u) +#define CY_CAPSENSE_BUTTON0_LOW_BSLN_RST_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_LOW_BSLN_RST_PARAM_ID (0x06000034u) + +#define CY_CAPSENSE_BUTTON0_TX_CLK_VALUE (cy_capsense_tuner.widgetContext[0].snsClk) +#define CY_CAPSENSE_BUTTON0_TX_CLK_OFFSET (54u) +#define CY_CAPSENSE_BUTTON0_TX_CLK_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_TX_CLK_PARAM_ID (0x06000036u) + +#define CY_CAPSENSE_BUTTON0_ROW_SNS_CLK_VALUE (cy_capsense_tuner.widgetContext[0].rowSnsClk) +#define CY_CAPSENSE_BUTTON0_ROW_SNS_CLK_OFFSET (56u) +#define CY_CAPSENSE_BUTTON0_ROW_SNS_CLK_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_ROW_SNS_CLK_PARAM_ID (0x06000038u) + +#define CY_CAPSENSE_BUTTON0_GESTURE_DETECTED_VALUE (cy_capsense_tuner.widgetContext[0].gestureDetected) +#define CY_CAPSENSE_BUTTON0_GESTURE_DETECTED_OFFSET (58u) +#define CY_CAPSENSE_BUTTON0_GESTURE_DETECTED_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_GESTURE_DETECTED_PARAM_ID (0x0200003au) + +#define CY_CAPSENSE_BUTTON0_GESTURE_DIRECTION_VALUE (cy_capsense_tuner.widgetContext[0].gestureDirection) +#define CY_CAPSENSE_BUTTON0_GESTURE_DIRECTION_OFFSET (60u) +#define CY_CAPSENSE_BUTTON0_GESTURE_DIRECTION_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_GESTURE_DIRECTION_PARAM_ID (0x0200003cu) + +#define CY_CAPSENSE_BUTTON0_XDELTA_VALUE (cy_capsense_tuner.widgetContext[0].xDelta) +#define CY_CAPSENSE_BUTTON0_XDELTA_OFFSET (62u) +#define CY_CAPSENSE_BUTTON0_XDELTA_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_XDELTA_PARAM_ID (0x0200003eu) + +#define CY_CAPSENSE_BUTTON0_YDELTA_VALUE (cy_capsense_tuner.widgetContext[0].yDelta) +#define CY_CAPSENSE_BUTTON0_YDELTA_OFFSET (64u) +#define CY_CAPSENSE_BUTTON0_YDELTA_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_YDELTA_PARAM_ID (0x02000040u) + +#define CY_CAPSENSE_BUTTON0_NOISE_TH_VALUE (cy_capsense_tuner.widgetContext[0].noiseTh) +#define CY_CAPSENSE_BUTTON0_NOISE_TH_OFFSET (66u) +#define CY_CAPSENSE_BUTTON0_NOISE_TH_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_NOISE_TH_PARAM_ID (0x05000042u) + +#define CY_CAPSENSE_BUTTON0_NNOISE_TH_VALUE (cy_capsense_tuner.widgetContext[0].nNoiseTh) +#define CY_CAPSENSE_BUTTON0_NNOISE_TH_OFFSET (67u) +#define CY_CAPSENSE_BUTTON0_NNOISE_TH_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_NNOISE_TH_PARAM_ID (0x05000043u) + +#define CY_CAPSENSE_BUTTON0_HYSTERESIS_VALUE (cy_capsense_tuner.widgetContext[0].hysteresis) +#define CY_CAPSENSE_BUTTON0_HYSTERESIS_OFFSET (68u) +#define CY_CAPSENSE_BUTTON0_HYSTERESIS_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_HYSTERESIS_PARAM_ID (0x05000044u) + +#define CY_CAPSENSE_BUTTON0_ON_DEBOUNCE_VALUE (cy_capsense_tuner.widgetContext[0].onDebounce) +#define CY_CAPSENSE_BUTTON0_ON_DEBOUNCE_OFFSET (69u) +#define CY_CAPSENSE_BUTTON0_ON_DEBOUNCE_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_ON_DEBOUNCE_PARAM_ID (0x05000045u) + +#define CY_CAPSENSE_BUTTON0_TX_CLK_SOURCE_VALUE (cy_capsense_tuner.widgetContext[0].snsClkSource) +#define CY_CAPSENSE_BUTTON0_TX_CLK_SOURCE_OFFSET (70u) +#define CY_CAPSENSE_BUTTON0_TX_CLK_SOURCE_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_TX_CLK_SOURCE_PARAM_ID (0x05000046u) + +#define CY_CAPSENSE_BUTTON0_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[0].idacMod[0]) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD0_OFFSET (71u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD0_PARAM_ID (0x05000047u) + +#define CY_CAPSENSE_BUTTON0_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[0].idacMod[1]) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD1_OFFSET (72u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD1_PARAM_ID (0x05000048u) + +#define CY_CAPSENSE_BUTTON0_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[0].idacMod[2]) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD2_OFFSET (73u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD2_PARAM_ID (0x05000049u) + +#define CY_CAPSENSE_BUTTON0_IDAC_GAIN_INDEX_VALUE (cy_capsense_tuner.widgetContext[0].idacGainIndex) +#define CY_CAPSENSE_BUTTON0_IDAC_GAIN_INDEX_OFFSET (74u) +#define CY_CAPSENSE_BUTTON0_IDAC_GAIN_INDEX_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_IDAC_GAIN_INDEX_PARAM_ID (0x0500004au) + +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[0].rowIdacMod[0]) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD0_OFFSET (75u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD0_PARAM_ID (0x0500004bu) + +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[0].rowIdacMod[1]) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD1_OFFSET (76u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD1_PARAM_ID (0x0500004cu) + +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[0].rowIdacMod[2]) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD2_OFFSET (77u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD2_PARAM_ID (0x0500004du) + +#define CY_CAPSENSE_BUTTON0_REGULAR_IIR_BL_N_VALUE (cy_capsense_tuner.widgetContext[0].bslnCoeff) +#define CY_CAPSENSE_BUTTON0_REGULAR_IIR_BL_N_OFFSET (78u) +#define CY_CAPSENSE_BUTTON0_REGULAR_IIR_BL_N_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_REGULAR_IIR_BL_N_PARAM_ID (0x0500004eu) + +#define CY_CAPSENSE_BUTTON0_STATUS_VALUE (cy_capsense_tuner.widgetContext[0].status) +#define CY_CAPSENSE_BUTTON0_STATUS_OFFSET (79u) +#define CY_CAPSENSE_BUTTON0_STATUS_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_STATUS_PARAM_ID (0x0100004fu) + +#define CY_CAPSENSE_BUTTON0_PTRPOSITION_VALUE (cy_capsense_tuner.widgetContext[0].wdTouch.ptrPosition) +#define CY_CAPSENSE_BUTTON0_PTRPOSITION_OFFSET (80u) +#define CY_CAPSENSE_BUTTON0_PTRPOSITION_SIZE (4u) +#define CY_CAPSENSE_BUTTON0_PTRPOSITION_PARAM_ID (0x03000050u) + +#define CY_CAPSENSE_BUTTON0_NUM_POSITIONS_VALUE (cy_capsense_tuner.widgetContext[0].wdTouch.numPosition) +#define CY_CAPSENSE_BUTTON0_NUM_POSITIONS_OFFSET (84u) +#define CY_CAPSENSE_BUTTON0_NUM_POSITIONS_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_NUM_POSITIONS_PARAM_ID (0x01000054u) + +#define CY_CAPSENSE_BUTTON1_FINGER_CP_VALUE (cy_capsense_tuner.widgetContext[1].fingerCap) +#define CY_CAPSENSE_BUTTON1_FINGER_CP_OFFSET (88u) +#define CY_CAPSENSE_BUTTON1_FINGER_CP_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_FINGER_CP_PARAM_ID (0x06010058u) + +#define CY_CAPSENSE_BUTTON1_SIGPFC_VALUE (cy_capsense_tuner.widgetContext[1].sigPFC) +#define CY_CAPSENSE_BUTTON1_SIGPFC_OFFSET (90u) +#define CY_CAPSENSE_BUTTON1_SIGPFC_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_SIGPFC_PARAM_ID (0x0601005au) + +#define CY_CAPSENSE_BUTTON1_NUM_CONV_VALUE (cy_capsense_tuner.widgetContext[1].resolution) +#define CY_CAPSENSE_BUTTON1_NUM_CONV_OFFSET (92u) +#define CY_CAPSENSE_BUTTON1_NUM_CONV_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_NUM_CONV_PARAM_ID (0x0601005cu) + +#define CY_CAPSENSE_BUTTON1_MAX_RAW_COUNT_VALUE (cy_capsense_tuner.widgetContext[1].maxRawCount) +#define CY_CAPSENSE_BUTTON1_MAX_RAW_COUNT_OFFSET (94u) +#define CY_CAPSENSE_BUTTON1_MAX_RAW_COUNT_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_MAX_RAW_COUNT_PARAM_ID (0x0601005eu) + +#define CY_CAPSENSE_BUTTON1_FINGER_TH_VALUE (cy_capsense_tuner.widgetContext[1].fingerTh) +#define CY_CAPSENSE_BUTTON1_FINGER_TH_OFFSET (96u) +#define CY_CAPSENSE_BUTTON1_FINGER_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_FINGER_TH_PARAM_ID (0x06010060u) + +#define CY_CAPSENSE_BUTTON1_PROX_TOUCH_TH_VALUE (cy_capsense_tuner.widgetContext[1].proxTh) +#define CY_CAPSENSE_BUTTON1_PROX_TOUCH_TH_OFFSET (98u) +#define CY_CAPSENSE_BUTTON1_PROX_TOUCH_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_PROX_TOUCH_TH_PARAM_ID (0x06010062u) + +#define CY_CAPSENSE_BUTTON1_LOW_BSLN_RST_VALUE (cy_capsense_tuner.widgetContext[1].lowBslnRst) +#define CY_CAPSENSE_BUTTON1_LOW_BSLN_RST_OFFSET (100u) +#define CY_CAPSENSE_BUTTON1_LOW_BSLN_RST_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_LOW_BSLN_RST_PARAM_ID (0x06010064u) + +#define CY_CAPSENSE_BUTTON1_TX_CLK_VALUE (cy_capsense_tuner.widgetContext[1].snsClk) +#define CY_CAPSENSE_BUTTON1_TX_CLK_OFFSET (102u) +#define CY_CAPSENSE_BUTTON1_TX_CLK_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_TX_CLK_PARAM_ID (0x06010066u) + +#define CY_CAPSENSE_BUTTON1_ROW_SNS_CLK_VALUE (cy_capsense_tuner.widgetContext[1].rowSnsClk) +#define CY_CAPSENSE_BUTTON1_ROW_SNS_CLK_OFFSET (104u) +#define CY_CAPSENSE_BUTTON1_ROW_SNS_CLK_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_ROW_SNS_CLK_PARAM_ID (0x06010068u) + +#define CY_CAPSENSE_BUTTON1_GESTURE_DETECTED_VALUE (cy_capsense_tuner.widgetContext[1].gestureDetected) +#define CY_CAPSENSE_BUTTON1_GESTURE_DETECTED_OFFSET (106u) +#define CY_CAPSENSE_BUTTON1_GESTURE_DETECTED_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_GESTURE_DETECTED_PARAM_ID (0x0201006au) + +#define CY_CAPSENSE_BUTTON1_GESTURE_DIRECTION_VALUE (cy_capsense_tuner.widgetContext[1].gestureDirection) +#define CY_CAPSENSE_BUTTON1_GESTURE_DIRECTION_OFFSET (108u) +#define CY_CAPSENSE_BUTTON1_GESTURE_DIRECTION_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_GESTURE_DIRECTION_PARAM_ID (0x0201006cu) + +#define CY_CAPSENSE_BUTTON1_XDELTA_VALUE (cy_capsense_tuner.widgetContext[1].xDelta) +#define CY_CAPSENSE_BUTTON1_XDELTA_OFFSET (110u) +#define CY_CAPSENSE_BUTTON1_XDELTA_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_XDELTA_PARAM_ID (0x0201006eu) + +#define CY_CAPSENSE_BUTTON1_YDELTA_VALUE (cy_capsense_tuner.widgetContext[1].yDelta) +#define CY_CAPSENSE_BUTTON1_YDELTA_OFFSET (112u) +#define CY_CAPSENSE_BUTTON1_YDELTA_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_YDELTA_PARAM_ID (0x02010070u) + +#define CY_CAPSENSE_BUTTON1_NOISE_TH_VALUE (cy_capsense_tuner.widgetContext[1].noiseTh) +#define CY_CAPSENSE_BUTTON1_NOISE_TH_OFFSET (114u) +#define CY_CAPSENSE_BUTTON1_NOISE_TH_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_NOISE_TH_PARAM_ID (0x05010072u) + +#define CY_CAPSENSE_BUTTON1_NNOISE_TH_VALUE (cy_capsense_tuner.widgetContext[1].nNoiseTh) +#define CY_CAPSENSE_BUTTON1_NNOISE_TH_OFFSET (115u) +#define CY_CAPSENSE_BUTTON1_NNOISE_TH_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_NNOISE_TH_PARAM_ID (0x05010073u) + +#define CY_CAPSENSE_BUTTON1_HYSTERESIS_VALUE (cy_capsense_tuner.widgetContext[1].hysteresis) +#define CY_CAPSENSE_BUTTON1_HYSTERESIS_OFFSET (116u) +#define CY_CAPSENSE_BUTTON1_HYSTERESIS_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_HYSTERESIS_PARAM_ID (0x05010074u) + +#define CY_CAPSENSE_BUTTON1_ON_DEBOUNCE_VALUE (cy_capsense_tuner.widgetContext[1].onDebounce) +#define CY_CAPSENSE_BUTTON1_ON_DEBOUNCE_OFFSET (117u) +#define CY_CAPSENSE_BUTTON1_ON_DEBOUNCE_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_ON_DEBOUNCE_PARAM_ID (0x05010075u) + +#define CY_CAPSENSE_BUTTON1_TX_CLK_SOURCE_VALUE (cy_capsense_tuner.widgetContext[1].snsClkSource) +#define CY_CAPSENSE_BUTTON1_TX_CLK_SOURCE_OFFSET (118u) +#define CY_CAPSENSE_BUTTON1_TX_CLK_SOURCE_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_TX_CLK_SOURCE_PARAM_ID (0x05010076u) + +#define CY_CAPSENSE_BUTTON1_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[1].idacMod[0]) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD0_OFFSET (119u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD0_PARAM_ID (0x05010077u) + +#define CY_CAPSENSE_BUTTON1_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[1].idacMod[1]) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD1_OFFSET (120u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD1_PARAM_ID (0x05010078u) + +#define CY_CAPSENSE_BUTTON1_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[1].idacMod[2]) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD2_OFFSET (121u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD2_PARAM_ID (0x05010079u) + +#define CY_CAPSENSE_BUTTON1_IDAC_GAIN_INDEX_VALUE (cy_capsense_tuner.widgetContext[1].idacGainIndex) +#define CY_CAPSENSE_BUTTON1_IDAC_GAIN_INDEX_OFFSET (122u) +#define CY_CAPSENSE_BUTTON1_IDAC_GAIN_INDEX_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_IDAC_GAIN_INDEX_PARAM_ID (0x0501007au) + +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[1].rowIdacMod[0]) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD0_OFFSET (123u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD0_PARAM_ID (0x0501007bu) + +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[1].rowIdacMod[1]) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD1_OFFSET (124u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD1_PARAM_ID (0x0501007cu) + +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[1].rowIdacMod[2]) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD2_OFFSET (125u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD2_PARAM_ID (0x0501007du) + +#define CY_CAPSENSE_BUTTON1_REGULAR_IIR_BL_N_VALUE (cy_capsense_tuner.widgetContext[1].bslnCoeff) +#define CY_CAPSENSE_BUTTON1_REGULAR_IIR_BL_N_OFFSET (126u) +#define CY_CAPSENSE_BUTTON1_REGULAR_IIR_BL_N_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_REGULAR_IIR_BL_N_PARAM_ID (0x0501007eu) + +#define CY_CAPSENSE_BUTTON1_STATUS_VALUE (cy_capsense_tuner.widgetContext[1].status) +#define CY_CAPSENSE_BUTTON1_STATUS_OFFSET (127u) +#define CY_CAPSENSE_BUTTON1_STATUS_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_STATUS_PARAM_ID (0x0101007fu) + +#define CY_CAPSENSE_BUTTON1_PTRPOSITION_VALUE (cy_capsense_tuner.widgetContext[1].wdTouch.ptrPosition) +#define CY_CAPSENSE_BUTTON1_PTRPOSITION_OFFSET (128u) +#define CY_CAPSENSE_BUTTON1_PTRPOSITION_SIZE (4u) +#define CY_CAPSENSE_BUTTON1_PTRPOSITION_PARAM_ID (0x03010080u) + +#define CY_CAPSENSE_BUTTON1_NUM_POSITIONS_VALUE (cy_capsense_tuner.widgetContext[1].wdTouch.numPosition) +#define CY_CAPSENSE_BUTTON1_NUM_POSITIONS_OFFSET (132u) +#define CY_CAPSENSE_BUTTON1_NUM_POSITIONS_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_NUM_POSITIONS_PARAM_ID (0x01010084u) + +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_CP_VALUE (cy_capsense_tuner.widgetContext[2].fingerCap) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_CP_OFFSET (136u) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_CP_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_CP_PARAM_ID (0x06020088u) + +#define CY_CAPSENSE_LINEARSLIDER0_SIGPFC_VALUE (cy_capsense_tuner.widgetContext[2].sigPFC) +#define CY_CAPSENSE_LINEARSLIDER0_SIGPFC_OFFSET (138u) +#define CY_CAPSENSE_LINEARSLIDER0_SIGPFC_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SIGPFC_PARAM_ID (0x0602008au) + +#define CY_CAPSENSE_LINEARSLIDER0_RESOLUTION_VALUE (cy_capsense_tuner.widgetContext[2].resolution) +#define CY_CAPSENSE_LINEARSLIDER0_RESOLUTION_OFFSET (140u) +#define CY_CAPSENSE_LINEARSLIDER0_RESOLUTION_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_RESOLUTION_PARAM_ID (0x0602008cu) + +#define CY_CAPSENSE_LINEARSLIDER0_MAX_RAW_COUNT_VALUE (cy_capsense_tuner.widgetContext[2].maxRawCount) +#define CY_CAPSENSE_LINEARSLIDER0_MAX_RAW_COUNT_OFFSET (142u) +#define CY_CAPSENSE_LINEARSLIDER0_MAX_RAW_COUNT_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_MAX_RAW_COUNT_PARAM_ID (0x0602008eu) + +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_TH_VALUE (cy_capsense_tuner.widgetContext[2].fingerTh) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_TH_OFFSET (144u) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_TH_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_TH_PARAM_ID (0x02020090u) + +#define CY_CAPSENSE_LINEARSLIDER0_PROX_TOUCH_TH_VALUE (cy_capsense_tuner.widgetContext[2].proxTh) +#define CY_CAPSENSE_LINEARSLIDER0_PROX_TOUCH_TH_OFFSET (146u) +#define CY_CAPSENSE_LINEARSLIDER0_PROX_TOUCH_TH_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_PROX_TOUCH_TH_PARAM_ID (0x02020092u) + +#define CY_CAPSENSE_LINEARSLIDER0_LOW_BSLN_RST_VALUE (cy_capsense_tuner.widgetContext[2].lowBslnRst) +#define CY_CAPSENSE_LINEARSLIDER0_LOW_BSLN_RST_OFFSET (148u) +#define CY_CAPSENSE_LINEARSLIDER0_LOW_BSLN_RST_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_LOW_BSLN_RST_PARAM_ID (0x06020094u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_VALUE (cy_capsense_tuner.widgetContext[2].snsClk) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_OFFSET (150u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_PARAM_ID (0x06020096u) + +#define CY_CAPSENSE_LINEARSLIDER0_ROW_SNS_CLK_VALUE (cy_capsense_tuner.widgetContext[2].rowSnsClk) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_SNS_CLK_OFFSET (152u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_SNS_CLK_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_SNS_CLK_PARAM_ID (0x06020098u) + +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DETECTED_VALUE (cy_capsense_tuner.widgetContext[2].gestureDetected) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DETECTED_OFFSET (154u) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DETECTED_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DETECTED_PARAM_ID (0x0202009au) + +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DIRECTION_VALUE (cy_capsense_tuner.widgetContext[2].gestureDirection) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DIRECTION_OFFSET (156u) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DIRECTION_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DIRECTION_PARAM_ID (0x0202009cu) + +#define CY_CAPSENSE_LINEARSLIDER0_XDELTA_VALUE (cy_capsense_tuner.widgetContext[2].xDelta) +#define CY_CAPSENSE_LINEARSLIDER0_XDELTA_OFFSET (158u) +#define CY_CAPSENSE_LINEARSLIDER0_XDELTA_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_XDELTA_PARAM_ID (0x0202009eu) + +#define CY_CAPSENSE_LINEARSLIDER0_YDELTA_VALUE (cy_capsense_tuner.widgetContext[2].yDelta) +#define CY_CAPSENSE_LINEARSLIDER0_YDELTA_OFFSET (160u) +#define CY_CAPSENSE_LINEARSLIDER0_YDELTA_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_YDELTA_PARAM_ID (0x020200a0u) + +#define CY_CAPSENSE_LINEARSLIDER0_NOISE_TH_VALUE (cy_capsense_tuner.widgetContext[2].noiseTh) +#define CY_CAPSENSE_LINEARSLIDER0_NOISE_TH_OFFSET (162u) +#define CY_CAPSENSE_LINEARSLIDER0_NOISE_TH_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_NOISE_TH_PARAM_ID (0x010200a2u) + +#define CY_CAPSENSE_LINEARSLIDER0_NNOISE_TH_VALUE (cy_capsense_tuner.widgetContext[2].nNoiseTh) +#define CY_CAPSENSE_LINEARSLIDER0_NNOISE_TH_OFFSET (163u) +#define CY_CAPSENSE_LINEARSLIDER0_NNOISE_TH_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_NNOISE_TH_PARAM_ID (0x010200a3u) + +#define CY_CAPSENSE_LINEARSLIDER0_HYSTERESIS_VALUE (cy_capsense_tuner.widgetContext[2].hysteresis) +#define CY_CAPSENSE_LINEARSLIDER0_HYSTERESIS_OFFSET (164u) +#define CY_CAPSENSE_LINEARSLIDER0_HYSTERESIS_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_HYSTERESIS_PARAM_ID (0x010200a4u) + +#define CY_CAPSENSE_LINEARSLIDER0_ON_DEBOUNCE_VALUE (cy_capsense_tuner.widgetContext[2].onDebounce) +#define CY_CAPSENSE_LINEARSLIDER0_ON_DEBOUNCE_OFFSET (165u) +#define CY_CAPSENSE_LINEARSLIDER0_ON_DEBOUNCE_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_ON_DEBOUNCE_PARAM_ID (0x050200a5u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SOURCE_VALUE (cy_capsense_tuner.widgetContext[2].snsClkSource) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SOURCE_OFFSET (166u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SOURCE_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SOURCE_PARAM_ID (0x050200a6u) + +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[2].idacMod[0]) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD0_OFFSET (167u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD0_PARAM_ID (0x050200a7u) + +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[2].idacMod[1]) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD1_OFFSET (168u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD1_PARAM_ID (0x050200a8u) + +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[2].idacMod[2]) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD2_OFFSET (169u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD2_PARAM_ID (0x050200a9u) + +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_GAIN_INDEX_VALUE (cy_capsense_tuner.widgetContext[2].idacGainIndex) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_GAIN_INDEX_OFFSET (170u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_GAIN_INDEX_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_GAIN_INDEX_PARAM_ID (0x050200aau) + +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[2].rowIdacMod[0]) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD0_OFFSET (171u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD0_PARAM_ID (0x050200abu) + +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[2].rowIdacMod[1]) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD1_OFFSET (172u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD1_PARAM_ID (0x050200acu) + +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[2].rowIdacMod[2]) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD2_OFFSET (173u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD2_PARAM_ID (0x050200adu) + +#define CY_CAPSENSE_LINEARSLIDER0_REGULAR_IIR_BL_N_VALUE (cy_capsense_tuner.widgetContext[2].bslnCoeff) +#define CY_CAPSENSE_LINEARSLIDER0_REGULAR_IIR_BL_N_OFFSET (174u) +#define CY_CAPSENSE_LINEARSLIDER0_REGULAR_IIR_BL_N_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_REGULAR_IIR_BL_N_PARAM_ID (0x050200aeu) + +#define CY_CAPSENSE_LINEARSLIDER0_STATUS_VALUE (cy_capsense_tuner.widgetContext[2].status) +#define CY_CAPSENSE_LINEARSLIDER0_STATUS_OFFSET (175u) +#define CY_CAPSENSE_LINEARSLIDER0_STATUS_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_STATUS_PARAM_ID (0x010200afu) + +#define CY_CAPSENSE_LINEARSLIDER0_PTRPOSITION_VALUE (cy_capsense_tuner.widgetContext[2].wdTouch.ptrPosition) +#define CY_CAPSENSE_LINEARSLIDER0_PTRPOSITION_OFFSET (176u) +#define CY_CAPSENSE_LINEARSLIDER0_PTRPOSITION_SIZE (4u) +#define CY_CAPSENSE_LINEARSLIDER0_PTRPOSITION_PARAM_ID (0x030200b0u) + +#define CY_CAPSENSE_LINEARSLIDER0_NUM_POSITIONS_VALUE (cy_capsense_tuner.widgetContext[2].wdTouch.numPosition) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_POSITIONS_OFFSET (180u) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_POSITIONS_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_POSITIONS_PARAM_ID (0x010200b4u) + +#define CY_CAPSENSE_BUTTON0_RX0_RAW0_VALUE (cy_capsense_tuner.sensorContext[0].raw) +#define CY_CAPSENSE_BUTTON0_RX0_RAW0_OFFSET (184u) +#define CY_CAPSENSE_BUTTON0_RX0_RAW0_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_RX0_RAW0_PARAM_ID (0x020000b8u) + +#define CY_CAPSENSE_BUTTON0_RX0_BSLN0_VALUE (cy_capsense_tuner.sensorContext[0].bsln) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN0_OFFSET (186u) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN0_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN0_PARAM_ID (0x020000bau) + +#define CY_CAPSENSE_BUTTON0_RX0_DIFF0_VALUE (cy_capsense_tuner.sensorContext[0].diff) +#define CY_CAPSENSE_BUTTON0_RX0_DIFF0_OFFSET (188u) +#define CY_CAPSENSE_BUTTON0_RX0_DIFF0_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_RX0_DIFF0_PARAM_ID (0x020000bcu) + +#define CY_CAPSENSE_BUTTON0_RX0_STATUS0_VALUE (cy_capsense_tuner.sensorContext[0].status) +#define CY_CAPSENSE_BUTTON0_RX0_STATUS0_OFFSET (190u) +#define CY_CAPSENSE_BUTTON0_RX0_STATUS0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_RX0_STATUS0_PARAM_ID (0x010000beu) + +#define CY_CAPSENSE_BUTTON0_RX0_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[0].negBslnRstCnt) +#define CY_CAPSENSE_BUTTON0_RX0_NEG_BSLN_RST_CNT0_OFFSET (191u) +#define CY_CAPSENSE_BUTTON0_RX0_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_RX0_NEG_BSLN_RST_CNT0_PARAM_ID (0x010000bfu) + +#define CY_CAPSENSE_BUTTON0_RX0_IDAC0_VALUE (cy_capsense_tuner.sensorContext[0].idacComp) +#define CY_CAPSENSE_BUTTON0_RX0_IDAC0_OFFSET (192u) +#define CY_CAPSENSE_BUTTON0_RX0_IDAC0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_RX0_IDAC0_PARAM_ID (0x010000c0u) + +#define CY_CAPSENSE_BUTTON0_RX0_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[0].bslnExt) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN_EXT0_OFFSET (193u) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN_EXT0_PARAM_ID (0x010000c1u) + +#define CY_CAPSENSE_BUTTON1_RX0_RAW0_VALUE (cy_capsense_tuner.sensorContext[1].raw) +#define CY_CAPSENSE_BUTTON1_RX0_RAW0_OFFSET (194u) +#define CY_CAPSENSE_BUTTON1_RX0_RAW0_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_RX0_RAW0_PARAM_ID (0x020100c2u) + +#define CY_CAPSENSE_BUTTON1_RX0_BSLN0_VALUE (cy_capsense_tuner.sensorContext[1].bsln) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN0_OFFSET (196u) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN0_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN0_PARAM_ID (0x020100c4u) + +#define CY_CAPSENSE_BUTTON1_RX0_DIFF0_VALUE (cy_capsense_tuner.sensorContext[1].diff) +#define CY_CAPSENSE_BUTTON1_RX0_DIFF0_OFFSET (198u) +#define CY_CAPSENSE_BUTTON1_RX0_DIFF0_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_RX0_DIFF0_PARAM_ID (0x020100c6u) + +#define CY_CAPSENSE_BUTTON1_RX0_STATUS0_VALUE (cy_capsense_tuner.sensorContext[1].status) +#define CY_CAPSENSE_BUTTON1_RX0_STATUS0_OFFSET (200u) +#define CY_CAPSENSE_BUTTON1_RX0_STATUS0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_RX0_STATUS0_PARAM_ID (0x010100c8u) + +#define CY_CAPSENSE_BUTTON1_RX0_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[1].negBslnRstCnt) +#define CY_CAPSENSE_BUTTON1_RX0_NEG_BSLN_RST_CNT0_OFFSET (201u) +#define CY_CAPSENSE_BUTTON1_RX0_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_RX0_NEG_BSLN_RST_CNT0_PARAM_ID (0x010100c9u) + +#define CY_CAPSENSE_BUTTON1_RX0_IDAC0_VALUE (cy_capsense_tuner.sensorContext[1].idacComp) +#define CY_CAPSENSE_BUTTON1_RX0_IDAC0_OFFSET (202u) +#define CY_CAPSENSE_BUTTON1_RX0_IDAC0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_RX0_IDAC0_PARAM_ID (0x010100cau) + +#define CY_CAPSENSE_BUTTON1_RX0_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[1].bslnExt) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN_EXT0_OFFSET (203u) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN_EXT0_PARAM_ID (0x010100cbu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_RAW0_VALUE (cy_capsense_tuner.sensorContext[2].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_RAW0_OFFSET (204u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_RAW0_PARAM_ID (0x020200ccu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN0_VALUE (cy_capsense_tuner.sensorContext[2].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN0_OFFSET (206u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN0_PARAM_ID (0x020200ceu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_DIFF0_VALUE (cy_capsense_tuner.sensorContext[2].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_DIFF0_OFFSET (208u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_DIFF0_PARAM_ID (0x020200d0u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_STATUS0_VALUE (cy_capsense_tuner.sensorContext[2].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_STATUS0_OFFSET (210u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_STATUS0_PARAM_ID (0x010200d2u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[2].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_OFFSET (211u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_PARAM_ID (0x010200d3u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_IDAC0_VALUE (cy_capsense_tuner.sensorContext[2].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_IDAC0_OFFSET (212u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_IDAC0_PARAM_ID (0x010200d4u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[2].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN_EXT0_OFFSET (213u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN_EXT0_PARAM_ID (0x010200d5u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_RAW0_VALUE (cy_capsense_tuner.sensorContext[3].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_RAW0_OFFSET (214u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_RAW0_PARAM_ID (0x020200d6u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN0_VALUE (cy_capsense_tuner.sensorContext[3].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN0_OFFSET (216u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN0_PARAM_ID (0x020200d8u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_DIFF0_VALUE (cy_capsense_tuner.sensorContext[3].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_DIFF0_OFFSET (218u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_DIFF0_PARAM_ID (0x020200dau) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_STATUS0_VALUE (cy_capsense_tuner.sensorContext[3].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_STATUS0_OFFSET (220u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_STATUS0_PARAM_ID (0x010200dcu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[3].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_OFFSET (221u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_PARAM_ID (0x010200ddu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_IDAC0_VALUE (cy_capsense_tuner.sensorContext[3].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_IDAC0_OFFSET (222u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_IDAC0_PARAM_ID (0x010200deu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[3].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN_EXT0_OFFSET (223u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN_EXT0_PARAM_ID (0x010200dfu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_RAW0_VALUE (cy_capsense_tuner.sensorContext[4].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_RAW0_OFFSET (224u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_RAW0_PARAM_ID (0x020200e0u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN0_VALUE (cy_capsense_tuner.sensorContext[4].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN0_OFFSET (226u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN0_PARAM_ID (0x020200e2u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_DIFF0_VALUE (cy_capsense_tuner.sensorContext[4].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_DIFF0_OFFSET (228u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_DIFF0_PARAM_ID (0x020200e4u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_STATUS0_VALUE (cy_capsense_tuner.sensorContext[4].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_STATUS0_OFFSET (230u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_STATUS0_PARAM_ID (0x010200e6u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[4].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_OFFSET (231u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_PARAM_ID (0x010200e7u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_IDAC0_VALUE (cy_capsense_tuner.sensorContext[4].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_IDAC0_OFFSET (232u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_IDAC0_PARAM_ID (0x010200e8u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[4].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN_EXT0_OFFSET (233u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN_EXT0_PARAM_ID (0x010200e9u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_RAW0_VALUE (cy_capsense_tuner.sensorContext[5].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_RAW0_OFFSET (234u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_RAW0_PARAM_ID (0x020200eau) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN0_VALUE (cy_capsense_tuner.sensorContext[5].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN0_OFFSET (236u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN0_PARAM_ID (0x020200ecu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_DIFF0_VALUE (cy_capsense_tuner.sensorContext[5].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_DIFF0_OFFSET (238u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_DIFF0_PARAM_ID (0x020200eeu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_STATUS0_VALUE (cy_capsense_tuner.sensorContext[5].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_STATUS0_OFFSET (240u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_STATUS0_PARAM_ID (0x010200f0u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[5].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_OFFSET (241u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_PARAM_ID (0x010200f1u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_IDAC0_VALUE (cy_capsense_tuner.sensorContext[5].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_IDAC0_OFFSET (242u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_IDAC0_PARAM_ID (0x010200f2u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[5].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN_EXT0_OFFSET (243u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN_EXT0_PARAM_ID (0x010200f3u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_RAW0_VALUE (cy_capsense_tuner.sensorContext[6].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_RAW0_OFFSET (244u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_RAW0_PARAM_ID (0x020200f4u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN0_VALUE (cy_capsense_tuner.sensorContext[6].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN0_OFFSET (246u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN0_PARAM_ID (0x020200f6u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_DIFF0_VALUE (cy_capsense_tuner.sensorContext[6].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_DIFF0_OFFSET (248u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_DIFF0_PARAM_ID (0x020200f8u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_STATUS0_VALUE (cy_capsense_tuner.sensorContext[6].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_STATUS0_OFFSET (250u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_STATUS0_PARAM_ID (0x010200fau) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[6].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_OFFSET (251u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_PARAM_ID (0x010200fbu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_IDAC0_VALUE (cy_capsense_tuner.sensorContext[6].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_IDAC0_OFFSET (252u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_IDAC0_PARAM_ID (0x010200fcu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[6].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN_EXT0_OFFSET (253u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN_EXT0_PARAM_ID (0x010200fdu) + +#define CY_CAPSENSE_LINEARSLIDER0_X0_VALUE (cy_capsense_tuner.position[0].x) +#define CY_CAPSENSE_LINEARSLIDER0_X0_OFFSET (254u) +#define CY_CAPSENSE_LINEARSLIDER0_X0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_X0_PARAM_ID (0x020200feu) + +#define CY_CAPSENSE_LINEARSLIDER0_Y0_VALUE (cy_capsense_tuner.position[0].y) +#define CY_CAPSENSE_LINEARSLIDER0_Y0_OFFSET (256u) +#define CY_CAPSENSE_LINEARSLIDER0_Y0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_Y0_PARAM_ID (0x02020100u) + +#define CY_CAPSENSE_LINEARSLIDER0_Z0_VALUE (cy_capsense_tuner.position[0].z) +#define CY_CAPSENSE_LINEARSLIDER0_Z0_OFFSET (258u) +#define CY_CAPSENSE_LINEARSLIDER0_Z0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_Z0_PARAM_ID (0x02020102u) + +#define CY_CAPSENSE_LINEARSLIDER0_ID0_VALUE (cy_capsense_tuner.position[0].id) +#define CY_CAPSENSE_LINEARSLIDER0_ID0_OFFSET (260u) +#define CY_CAPSENSE_LINEARSLIDER0_ID0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_ID0_PARAM_ID (0x02020104u) + +#else /* CY_CAPSENSE_MW_VERSION >= 300 */ +#define CY_CAPSENSE_CONFIG_ID_VALUE (cy_capsense_tuner.commonContext.configId) +#define CY_CAPSENSE_CONFIG_ID_OFFSET (0u) +#define CY_CAPSENSE_CONFIG_ID_SIZE (2u) +#define CY_CAPSENSE_CONFIG_ID_PARAM_ID (0x02000000u) + +#define CY_CAPSENSE_TUNER_CMD_VALUE (cy_capsense_tuner.commonContext.tunerCmd) +#define CY_CAPSENSE_TUNER_CMD_OFFSET (2u) +#define CY_CAPSENSE_TUNER_CMD_SIZE (2u) +#define CY_CAPSENSE_TUNER_CMD_PARAM_ID (0x02000002u) + +#define CY_CAPSENSE_SCAN_COUNTER_VALUE (cy_capsense_tuner.commonContext.scanCounter) +#define CY_CAPSENSE_SCAN_COUNTER_OFFSET (4u) +#define CY_CAPSENSE_SCAN_COUNTER_SIZE (2u) +#define CY_CAPSENSE_SCAN_COUNTER_PARAM_ID (0x02000004u) + +#define CY_CAPSENSE_TUNER_ST_VALUE (cy_capsense_tuner.commonContext.tunerSt) +#define CY_CAPSENSE_TUNER_ST_OFFSET (6u) +#define CY_CAPSENSE_TUNER_ST_SIZE (1u) +#define CY_CAPSENSE_TUNER_ST_PARAM_ID (0x01000006u) + +#define CY_CAPSENSE_INITDONE_VALUE (cy_capsense_tuner.commonContext.initDone) +#define CY_CAPSENSE_INITDONE_OFFSET (7u) +#define CY_CAPSENSE_INITDONE_SIZE (1u) +#define CY_CAPSENSE_INITDONE_PARAM_ID (0x01000007u) + +#define CY_CAPSENSE_STATUS_VALUE (cy_capsense_tuner.commonContext.status) +#define CY_CAPSENSE_STATUS_OFFSET (8u) +#define CY_CAPSENSE_STATUS_SIZE (4u) +#define CY_CAPSENSE_STATUS_PARAM_ID (0x03000008u) + +#define CY_CAPSENSE_TIMESTAMPINTERVAL_VALUE (cy_capsense_tuner.commonContext.timestampInterval) +#define CY_CAPSENSE_TIMESTAMPINTERVAL_OFFSET (12u) +#define CY_CAPSENSE_TIMESTAMPINTERVAL_SIZE (4u) +#define CY_CAPSENSE_TIMESTAMPINTERVAL_PARAM_ID (0x0300000cu) + +#define CY_CAPSENSE_TIMESTAMP_VALUE (cy_capsense_tuner.commonContext.timestamp) +#define CY_CAPSENSE_TIMESTAMP_OFFSET (16u) +#define CY_CAPSENSE_TIMESTAMP_SIZE (4u) +#define CY_CAPSENSE_TIMESTAMP_PARAM_ID (0x03000010u) + +#define CY_CAPSENSE_CSD_MOD_CLK_DIVIDER_VALUE (cy_capsense_tuner.commonContext.modCsdClk) +#define CY_CAPSENSE_CSD_MOD_CLK_DIVIDER_OFFSET (20u) +#define CY_CAPSENSE_CSD_MOD_CLK_DIVIDER_SIZE (1u) +#define CY_CAPSENSE_CSD_MOD_CLK_DIVIDER_PARAM_ID (0x01000014u) + +#define CY_CAPSENSE_CSX_MOD_CLK_DIVIDER_VALUE (cy_capsense_tuner.commonContext.modCsxClk) +#define CY_CAPSENSE_CSX_MOD_CLK_DIVIDER_OFFSET (21u) +#define CY_CAPSENSE_CSX_MOD_CLK_DIVIDER_SIZE (1u) +#define CY_CAPSENSE_CSX_MOD_CLK_DIVIDER_PARAM_ID (0x01000015u) + +#define CY_CAPSENSE_TUNER_CNT_VALUE (cy_capsense_tuner.commonContext.tunerCnt) +#define CY_CAPSENSE_TUNER_CNT_OFFSET (22u) +#define CY_CAPSENSE_TUNER_CNT_SIZE (1u) +#define CY_CAPSENSE_TUNER_CNT_PARAM_ID (0x01000016u) + +#define CY_CAPSENSE_BUTTON0_FINGER_CP_VALUE (cy_capsense_tuner.widgetContext[0].fingerCap) +#define CY_CAPSENSE_BUTTON0_FINGER_CP_OFFSET (24u) +#define CY_CAPSENSE_BUTTON0_FINGER_CP_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_FINGER_CP_PARAM_ID (0x06000018u) + +#define CY_CAPSENSE_BUTTON0_SIGPFC_VALUE (cy_capsense_tuner.widgetContext[0].sigPFC) +#define CY_CAPSENSE_BUTTON0_SIGPFC_OFFSET (26u) +#define CY_CAPSENSE_BUTTON0_SIGPFC_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_SIGPFC_PARAM_ID (0x0600001au) + +#define CY_CAPSENSE_BUTTON0_NUM_CONV_VALUE (cy_capsense_tuner.widgetContext[0].resolution) +#define CY_CAPSENSE_BUTTON0_NUM_CONV_OFFSET (28u) +#define CY_CAPSENSE_BUTTON0_NUM_CONV_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_NUM_CONV_PARAM_ID (0x0600001cu) + +#define CY_CAPSENSE_BUTTON0_MAX_RAW_COUNT_VALUE (cy_capsense_tuner.widgetContext[0].maxRawCount) +#define CY_CAPSENSE_BUTTON0_MAX_RAW_COUNT_OFFSET (30u) +#define CY_CAPSENSE_BUTTON0_MAX_RAW_COUNT_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_MAX_RAW_COUNT_PARAM_ID (0x0600001eu) + +#define CY_CAPSENSE_BUTTON0_ROW_MAX_RAW_COUNT_VALUE (cy_capsense_tuner.widgetContext[0].maxRawCountRow) +#define CY_CAPSENSE_BUTTON0_ROW_MAX_RAW_COUNT_OFFSET (32u) +#define CY_CAPSENSE_BUTTON0_ROW_MAX_RAW_COUNT_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_ROW_MAX_RAW_COUNT_PARAM_ID (0x06000020u) + +#define CY_CAPSENSE_BUTTON0_FINGER_TH_VALUE (cy_capsense_tuner.widgetContext[0].fingerTh) +#define CY_CAPSENSE_BUTTON0_FINGER_TH_OFFSET (34u) +#define CY_CAPSENSE_BUTTON0_FINGER_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_FINGER_TH_PARAM_ID (0x06000022u) + +#define CY_CAPSENSE_BUTTON0_PROX_TOUCH_TH_VALUE (cy_capsense_tuner.widgetContext[0].proxTh) +#define CY_CAPSENSE_BUTTON0_PROX_TOUCH_TH_OFFSET (36u) +#define CY_CAPSENSE_BUTTON0_PROX_TOUCH_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_PROX_TOUCH_TH_PARAM_ID (0x06000024u) + +#define CY_CAPSENSE_BUTTON0_LOW_BSLN_RST_VALUE (cy_capsense_tuner.widgetContext[0].lowBslnRst) +#define CY_CAPSENSE_BUTTON0_LOW_BSLN_RST_OFFSET (38u) +#define CY_CAPSENSE_BUTTON0_LOW_BSLN_RST_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_LOW_BSLN_RST_PARAM_ID (0x06000026u) + +#define CY_CAPSENSE_BUTTON0_TX_CLK_VALUE (cy_capsense_tuner.widgetContext[0].snsClk) +#define CY_CAPSENSE_BUTTON0_TX_CLK_OFFSET (40u) +#define CY_CAPSENSE_BUTTON0_TX_CLK_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_TX_CLK_PARAM_ID (0x06000028u) + +#define CY_CAPSENSE_BUTTON0_ROW_SNS_CLK_VALUE (cy_capsense_tuner.widgetContext[0].rowSnsClk) +#define CY_CAPSENSE_BUTTON0_ROW_SNS_CLK_OFFSET (42u) +#define CY_CAPSENSE_BUTTON0_ROW_SNS_CLK_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_ROW_SNS_CLK_PARAM_ID (0x0600002au) + +#define CY_CAPSENSE_BUTTON0_GESTURE_DETECTED_VALUE (cy_capsense_tuner.widgetContext[0].gestureDetected) +#define CY_CAPSENSE_BUTTON0_GESTURE_DETECTED_OFFSET (44u) +#define CY_CAPSENSE_BUTTON0_GESTURE_DETECTED_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_GESTURE_DETECTED_PARAM_ID (0x0200002cu) + +#define CY_CAPSENSE_BUTTON0_GESTURE_DIRECTION_VALUE (cy_capsense_tuner.widgetContext[0].gestureDirection) +#define CY_CAPSENSE_BUTTON0_GESTURE_DIRECTION_OFFSET (46u) +#define CY_CAPSENSE_BUTTON0_GESTURE_DIRECTION_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_GESTURE_DIRECTION_PARAM_ID (0x0200002eu) + +#define CY_CAPSENSE_BUTTON0_XDELTA_VALUE (cy_capsense_tuner.widgetContext[0].xDelta) +#define CY_CAPSENSE_BUTTON0_XDELTA_OFFSET (48u) +#define CY_CAPSENSE_BUTTON0_XDELTA_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_XDELTA_PARAM_ID (0x02000030u) + +#define CY_CAPSENSE_BUTTON0_YDELTA_VALUE (cy_capsense_tuner.widgetContext[0].yDelta) +#define CY_CAPSENSE_BUTTON0_YDELTA_OFFSET (50u) +#define CY_CAPSENSE_BUTTON0_YDELTA_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_YDELTA_PARAM_ID (0x02000032u) + +#define CY_CAPSENSE_BUTTON0_NOISE_TH_VALUE (cy_capsense_tuner.widgetContext[0].noiseTh) +#define CY_CAPSENSE_BUTTON0_NOISE_TH_OFFSET (52u) +#define CY_CAPSENSE_BUTTON0_NOISE_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_NOISE_TH_PARAM_ID (0x06000034u) + +#define CY_CAPSENSE_BUTTON0_NNOISE_TH_VALUE (cy_capsense_tuner.widgetContext[0].nNoiseTh) +#define CY_CAPSENSE_BUTTON0_NNOISE_TH_OFFSET (54u) +#define CY_CAPSENSE_BUTTON0_NNOISE_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_NNOISE_TH_PARAM_ID (0x06000036u) + +#define CY_CAPSENSE_BUTTON0_HYSTERESIS_VALUE (cy_capsense_tuner.widgetContext[0].hysteresis) +#define CY_CAPSENSE_BUTTON0_HYSTERESIS_OFFSET (56u) +#define CY_CAPSENSE_BUTTON0_HYSTERESIS_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_HYSTERESIS_PARAM_ID (0x06000038u) + +#define CY_CAPSENSE_BUTTON0_ON_DEBOUNCE_VALUE (cy_capsense_tuner.widgetContext[0].onDebounce) +#define CY_CAPSENSE_BUTTON0_ON_DEBOUNCE_OFFSET (58u) +#define CY_CAPSENSE_BUTTON0_ON_DEBOUNCE_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_ON_DEBOUNCE_PARAM_ID (0x0500003au) + +#define CY_CAPSENSE_BUTTON0_TX_CLK_SOURCE_VALUE (cy_capsense_tuner.widgetContext[0].snsClkSource) +#define CY_CAPSENSE_BUTTON0_TX_CLK_SOURCE_OFFSET (59u) +#define CY_CAPSENSE_BUTTON0_TX_CLK_SOURCE_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_TX_CLK_SOURCE_PARAM_ID (0x0500003bu) + +#define CY_CAPSENSE_BUTTON0_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[0].idacMod[0]) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD0_OFFSET (60u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD0_PARAM_ID (0x0500003cu) + +#define CY_CAPSENSE_BUTTON0_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[0].idacMod[1]) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD1_OFFSET (61u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD1_PARAM_ID (0x0500003du) + +#define CY_CAPSENSE_BUTTON0_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[0].idacMod[2]) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD2_OFFSET (62u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_IDAC_MOD2_PARAM_ID (0x0500003eu) + +#define CY_CAPSENSE_BUTTON0_IDAC_GAIN_INDEX_VALUE (cy_capsense_tuner.widgetContext[0].idacGainIndex) +#define CY_CAPSENSE_BUTTON0_IDAC_GAIN_INDEX_OFFSET (63u) +#define CY_CAPSENSE_BUTTON0_IDAC_GAIN_INDEX_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_IDAC_GAIN_INDEX_PARAM_ID (0x0500003fu) + +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[0].rowIdacMod[0]) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD0_OFFSET (64u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD0_PARAM_ID (0x05000040u) + +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[0].rowIdacMod[1]) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD1_OFFSET (65u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD1_PARAM_ID (0x05000041u) + +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[0].rowIdacMod[2]) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD2_OFFSET (66u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_ROW_IDAC_MOD2_PARAM_ID (0x05000042u) + +#define CY_CAPSENSE_BUTTON0_REGULAR_IIR_BL_N_VALUE (cy_capsense_tuner.widgetContext[0].bslnCoeff) +#define CY_CAPSENSE_BUTTON0_REGULAR_IIR_BL_N_OFFSET (67u) +#define CY_CAPSENSE_BUTTON0_REGULAR_IIR_BL_N_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_REGULAR_IIR_BL_N_PARAM_ID (0x05000043u) + +#define CY_CAPSENSE_BUTTON0_STATUS_VALUE (cy_capsense_tuner.widgetContext[0].status) +#define CY_CAPSENSE_BUTTON0_STATUS_OFFSET (68u) +#define CY_CAPSENSE_BUTTON0_STATUS_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_STATUS_PARAM_ID (0x01000044u) + +#define CY_CAPSENSE_BUTTON0_PTRPOSITION_VALUE (cy_capsense_tuner.widgetContext[0].wdTouch.ptrPosition) +#define CY_CAPSENSE_BUTTON0_PTRPOSITION_OFFSET (72u) +#define CY_CAPSENSE_BUTTON0_PTRPOSITION_SIZE (4u) +#define CY_CAPSENSE_BUTTON0_PTRPOSITION_PARAM_ID (0x03000048u) + +#define CY_CAPSENSE_BUTTON0_NUM_POSITIONS_VALUE (cy_capsense_tuner.widgetContext[0].wdTouch.numPosition) +#define CY_CAPSENSE_BUTTON0_NUM_POSITIONS_OFFSET (76u) +#define CY_CAPSENSE_BUTTON0_NUM_POSITIONS_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_NUM_POSITIONS_PARAM_ID (0x0100004cu) + +#define CY_CAPSENSE_BUTTON1_FINGER_CP_VALUE (cy_capsense_tuner.widgetContext[1].fingerCap) +#define CY_CAPSENSE_BUTTON1_FINGER_CP_OFFSET (80u) +#define CY_CAPSENSE_BUTTON1_FINGER_CP_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_FINGER_CP_PARAM_ID (0x06010050u) + +#define CY_CAPSENSE_BUTTON1_SIGPFC_VALUE (cy_capsense_tuner.widgetContext[1].sigPFC) +#define CY_CAPSENSE_BUTTON1_SIGPFC_OFFSET (82u) +#define CY_CAPSENSE_BUTTON1_SIGPFC_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_SIGPFC_PARAM_ID (0x06010052u) + +#define CY_CAPSENSE_BUTTON1_NUM_CONV_VALUE (cy_capsense_tuner.widgetContext[1].resolution) +#define CY_CAPSENSE_BUTTON1_NUM_CONV_OFFSET (84u) +#define CY_CAPSENSE_BUTTON1_NUM_CONV_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_NUM_CONV_PARAM_ID (0x06010054u) + +#define CY_CAPSENSE_BUTTON1_MAX_RAW_COUNT_VALUE (cy_capsense_tuner.widgetContext[1].maxRawCount) +#define CY_CAPSENSE_BUTTON1_MAX_RAW_COUNT_OFFSET (86u) +#define CY_CAPSENSE_BUTTON1_MAX_RAW_COUNT_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_MAX_RAW_COUNT_PARAM_ID (0x06010056u) + +#define CY_CAPSENSE_BUTTON1_ROW_MAX_RAW_COUNT_VALUE (cy_capsense_tuner.widgetContext[1].maxRawCountRow) +#define CY_CAPSENSE_BUTTON1_ROW_MAX_RAW_COUNT_OFFSET (88u) +#define CY_CAPSENSE_BUTTON1_ROW_MAX_RAW_COUNT_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_ROW_MAX_RAW_COUNT_PARAM_ID (0x06010058u) + +#define CY_CAPSENSE_BUTTON1_FINGER_TH_VALUE (cy_capsense_tuner.widgetContext[1].fingerTh) +#define CY_CAPSENSE_BUTTON1_FINGER_TH_OFFSET (90u) +#define CY_CAPSENSE_BUTTON1_FINGER_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_FINGER_TH_PARAM_ID (0x0601005au) + +#define CY_CAPSENSE_BUTTON1_PROX_TOUCH_TH_VALUE (cy_capsense_tuner.widgetContext[1].proxTh) +#define CY_CAPSENSE_BUTTON1_PROX_TOUCH_TH_OFFSET (92u) +#define CY_CAPSENSE_BUTTON1_PROX_TOUCH_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_PROX_TOUCH_TH_PARAM_ID (0x0601005cu) + +#define CY_CAPSENSE_BUTTON1_LOW_BSLN_RST_VALUE (cy_capsense_tuner.widgetContext[1].lowBslnRst) +#define CY_CAPSENSE_BUTTON1_LOW_BSLN_RST_OFFSET (94u) +#define CY_CAPSENSE_BUTTON1_LOW_BSLN_RST_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_LOW_BSLN_RST_PARAM_ID (0x0601005eu) + +#define CY_CAPSENSE_BUTTON1_TX_CLK_VALUE (cy_capsense_tuner.widgetContext[1].snsClk) +#define CY_CAPSENSE_BUTTON1_TX_CLK_OFFSET (96u) +#define CY_CAPSENSE_BUTTON1_TX_CLK_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_TX_CLK_PARAM_ID (0x06010060u) + +#define CY_CAPSENSE_BUTTON1_ROW_SNS_CLK_VALUE (cy_capsense_tuner.widgetContext[1].rowSnsClk) +#define CY_CAPSENSE_BUTTON1_ROW_SNS_CLK_OFFSET (98u) +#define CY_CAPSENSE_BUTTON1_ROW_SNS_CLK_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_ROW_SNS_CLK_PARAM_ID (0x06010062u) + +#define CY_CAPSENSE_BUTTON1_GESTURE_DETECTED_VALUE (cy_capsense_tuner.widgetContext[1].gestureDetected) +#define CY_CAPSENSE_BUTTON1_GESTURE_DETECTED_OFFSET (100u) +#define CY_CAPSENSE_BUTTON1_GESTURE_DETECTED_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_GESTURE_DETECTED_PARAM_ID (0x02010064u) + +#define CY_CAPSENSE_BUTTON1_GESTURE_DIRECTION_VALUE (cy_capsense_tuner.widgetContext[1].gestureDirection) +#define CY_CAPSENSE_BUTTON1_GESTURE_DIRECTION_OFFSET (102u) +#define CY_CAPSENSE_BUTTON1_GESTURE_DIRECTION_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_GESTURE_DIRECTION_PARAM_ID (0x02010066u) + +#define CY_CAPSENSE_BUTTON1_XDELTA_VALUE (cy_capsense_tuner.widgetContext[1].xDelta) +#define CY_CAPSENSE_BUTTON1_XDELTA_OFFSET (104u) +#define CY_CAPSENSE_BUTTON1_XDELTA_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_XDELTA_PARAM_ID (0x02010068u) + +#define CY_CAPSENSE_BUTTON1_YDELTA_VALUE (cy_capsense_tuner.widgetContext[1].yDelta) +#define CY_CAPSENSE_BUTTON1_YDELTA_OFFSET (106u) +#define CY_CAPSENSE_BUTTON1_YDELTA_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_YDELTA_PARAM_ID (0x0201006au) + +#define CY_CAPSENSE_BUTTON1_NOISE_TH_VALUE (cy_capsense_tuner.widgetContext[1].noiseTh) +#define CY_CAPSENSE_BUTTON1_NOISE_TH_OFFSET (108u) +#define CY_CAPSENSE_BUTTON1_NOISE_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_NOISE_TH_PARAM_ID (0x0601006cu) + +#define CY_CAPSENSE_BUTTON1_NNOISE_TH_VALUE (cy_capsense_tuner.widgetContext[1].nNoiseTh) +#define CY_CAPSENSE_BUTTON1_NNOISE_TH_OFFSET (110u) +#define CY_CAPSENSE_BUTTON1_NNOISE_TH_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_NNOISE_TH_PARAM_ID (0x0601006eu) + +#define CY_CAPSENSE_BUTTON1_HYSTERESIS_VALUE (cy_capsense_tuner.widgetContext[1].hysteresis) +#define CY_CAPSENSE_BUTTON1_HYSTERESIS_OFFSET (112u) +#define CY_CAPSENSE_BUTTON1_HYSTERESIS_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_HYSTERESIS_PARAM_ID (0x06010070u) + +#define CY_CAPSENSE_BUTTON1_ON_DEBOUNCE_VALUE (cy_capsense_tuner.widgetContext[1].onDebounce) +#define CY_CAPSENSE_BUTTON1_ON_DEBOUNCE_OFFSET (114u) +#define CY_CAPSENSE_BUTTON1_ON_DEBOUNCE_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_ON_DEBOUNCE_PARAM_ID (0x05010072u) + +#define CY_CAPSENSE_BUTTON1_TX_CLK_SOURCE_VALUE (cy_capsense_tuner.widgetContext[1].snsClkSource) +#define CY_CAPSENSE_BUTTON1_TX_CLK_SOURCE_OFFSET (115u) +#define CY_CAPSENSE_BUTTON1_TX_CLK_SOURCE_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_TX_CLK_SOURCE_PARAM_ID (0x05010073u) + +#define CY_CAPSENSE_BUTTON1_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[1].idacMod[0]) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD0_OFFSET (116u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD0_PARAM_ID (0x05010074u) + +#define CY_CAPSENSE_BUTTON1_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[1].idacMod[1]) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD1_OFFSET (117u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD1_PARAM_ID (0x05010075u) + +#define CY_CAPSENSE_BUTTON1_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[1].idacMod[2]) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD2_OFFSET (118u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_IDAC_MOD2_PARAM_ID (0x05010076u) + +#define CY_CAPSENSE_BUTTON1_IDAC_GAIN_INDEX_VALUE (cy_capsense_tuner.widgetContext[1].idacGainIndex) +#define CY_CAPSENSE_BUTTON1_IDAC_GAIN_INDEX_OFFSET (119u) +#define CY_CAPSENSE_BUTTON1_IDAC_GAIN_INDEX_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_IDAC_GAIN_INDEX_PARAM_ID (0x05010077u) + +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[1].rowIdacMod[0]) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD0_OFFSET (120u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD0_PARAM_ID (0x05010078u) + +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[1].rowIdacMod[1]) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD1_OFFSET (121u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD1_PARAM_ID (0x05010079u) + +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[1].rowIdacMod[2]) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD2_OFFSET (122u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_ROW_IDAC_MOD2_PARAM_ID (0x0501007au) + +#define CY_CAPSENSE_BUTTON1_REGULAR_IIR_BL_N_VALUE (cy_capsense_tuner.widgetContext[1].bslnCoeff) +#define CY_CAPSENSE_BUTTON1_REGULAR_IIR_BL_N_OFFSET (123u) +#define CY_CAPSENSE_BUTTON1_REGULAR_IIR_BL_N_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_REGULAR_IIR_BL_N_PARAM_ID (0x0501007bu) + +#define CY_CAPSENSE_BUTTON1_STATUS_VALUE (cy_capsense_tuner.widgetContext[1].status) +#define CY_CAPSENSE_BUTTON1_STATUS_OFFSET (124u) +#define CY_CAPSENSE_BUTTON1_STATUS_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_STATUS_PARAM_ID (0x0101007cu) + +#define CY_CAPSENSE_BUTTON1_PTRPOSITION_VALUE (cy_capsense_tuner.widgetContext[1].wdTouch.ptrPosition) +#define CY_CAPSENSE_BUTTON1_PTRPOSITION_OFFSET (128u) +#define CY_CAPSENSE_BUTTON1_PTRPOSITION_SIZE (4u) +#define CY_CAPSENSE_BUTTON1_PTRPOSITION_PARAM_ID (0x03010080u) + +#define CY_CAPSENSE_BUTTON1_NUM_POSITIONS_VALUE (cy_capsense_tuner.widgetContext[1].wdTouch.numPosition) +#define CY_CAPSENSE_BUTTON1_NUM_POSITIONS_OFFSET (132u) +#define CY_CAPSENSE_BUTTON1_NUM_POSITIONS_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_NUM_POSITIONS_PARAM_ID (0x01010084u) + +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_CP_VALUE (cy_capsense_tuner.widgetContext[2].fingerCap) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_CP_OFFSET (136u) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_CP_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_CP_PARAM_ID (0x06020088u) + +#define CY_CAPSENSE_LINEARSLIDER0_SIGPFC_VALUE (cy_capsense_tuner.widgetContext[2].sigPFC) +#define CY_CAPSENSE_LINEARSLIDER0_SIGPFC_OFFSET (138u) +#define CY_CAPSENSE_LINEARSLIDER0_SIGPFC_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SIGPFC_PARAM_ID (0x0602008au) + +#define CY_CAPSENSE_LINEARSLIDER0_RESOLUTION_VALUE (cy_capsense_tuner.widgetContext[2].resolution) +#define CY_CAPSENSE_LINEARSLIDER0_RESOLUTION_OFFSET (140u) +#define CY_CAPSENSE_LINEARSLIDER0_RESOLUTION_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_RESOLUTION_PARAM_ID (0x0602008cu) + +#define CY_CAPSENSE_LINEARSLIDER0_MAX_RAW_COUNT_VALUE (cy_capsense_tuner.widgetContext[2].maxRawCount) +#define CY_CAPSENSE_LINEARSLIDER0_MAX_RAW_COUNT_OFFSET (142u) +#define CY_CAPSENSE_LINEARSLIDER0_MAX_RAW_COUNT_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_MAX_RAW_COUNT_PARAM_ID (0x0602008eu) + +#define CY_CAPSENSE_LINEARSLIDER0_ROW_MAX_RAW_COUNT_VALUE (cy_capsense_tuner.widgetContext[2].maxRawCountRow) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_MAX_RAW_COUNT_OFFSET (144u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_MAX_RAW_COUNT_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_MAX_RAW_COUNT_PARAM_ID (0x06020090u) + +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_TH_VALUE (cy_capsense_tuner.widgetContext[2].fingerTh) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_TH_OFFSET (146u) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_TH_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_FINGER_TH_PARAM_ID (0x02020092u) + +#define CY_CAPSENSE_LINEARSLIDER0_PROX_TOUCH_TH_VALUE (cy_capsense_tuner.widgetContext[2].proxTh) +#define CY_CAPSENSE_LINEARSLIDER0_PROX_TOUCH_TH_OFFSET (148u) +#define CY_CAPSENSE_LINEARSLIDER0_PROX_TOUCH_TH_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_PROX_TOUCH_TH_PARAM_ID (0x02020094u) + +#define CY_CAPSENSE_LINEARSLIDER0_LOW_BSLN_RST_VALUE (cy_capsense_tuner.widgetContext[2].lowBslnRst) +#define CY_CAPSENSE_LINEARSLIDER0_LOW_BSLN_RST_OFFSET (150u) +#define CY_CAPSENSE_LINEARSLIDER0_LOW_BSLN_RST_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_LOW_BSLN_RST_PARAM_ID (0x06020096u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_VALUE (cy_capsense_tuner.widgetContext[2].snsClk) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_OFFSET (152u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_PARAM_ID (0x06020098u) + +#define CY_CAPSENSE_LINEARSLIDER0_ROW_SNS_CLK_VALUE (cy_capsense_tuner.widgetContext[2].rowSnsClk) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_SNS_CLK_OFFSET (154u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_SNS_CLK_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_SNS_CLK_PARAM_ID (0x0602009au) + +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DETECTED_VALUE (cy_capsense_tuner.widgetContext[2].gestureDetected) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DETECTED_OFFSET (156u) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DETECTED_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DETECTED_PARAM_ID (0x0202009cu) + +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DIRECTION_VALUE (cy_capsense_tuner.widgetContext[2].gestureDirection) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DIRECTION_OFFSET (158u) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DIRECTION_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_GESTURE_DIRECTION_PARAM_ID (0x0202009eu) + +#define CY_CAPSENSE_LINEARSLIDER0_XDELTA_VALUE (cy_capsense_tuner.widgetContext[2].xDelta) +#define CY_CAPSENSE_LINEARSLIDER0_XDELTA_OFFSET (160u) +#define CY_CAPSENSE_LINEARSLIDER0_XDELTA_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_XDELTA_PARAM_ID (0x020200a0u) + +#define CY_CAPSENSE_LINEARSLIDER0_YDELTA_VALUE (cy_capsense_tuner.widgetContext[2].yDelta) +#define CY_CAPSENSE_LINEARSLIDER0_YDELTA_OFFSET (162u) +#define CY_CAPSENSE_LINEARSLIDER0_YDELTA_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_YDELTA_PARAM_ID (0x020200a2u) + +#define CY_CAPSENSE_LINEARSLIDER0_NOISE_TH_VALUE (cy_capsense_tuner.widgetContext[2].noiseTh) +#define CY_CAPSENSE_LINEARSLIDER0_NOISE_TH_OFFSET (164u) +#define CY_CAPSENSE_LINEARSLIDER0_NOISE_TH_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_NOISE_TH_PARAM_ID (0x020200a4u) + +#define CY_CAPSENSE_LINEARSLIDER0_NNOISE_TH_VALUE (cy_capsense_tuner.widgetContext[2].nNoiseTh) +#define CY_CAPSENSE_LINEARSLIDER0_NNOISE_TH_OFFSET (166u) +#define CY_CAPSENSE_LINEARSLIDER0_NNOISE_TH_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_NNOISE_TH_PARAM_ID (0x020200a6u) + +#define CY_CAPSENSE_LINEARSLIDER0_HYSTERESIS_VALUE (cy_capsense_tuner.widgetContext[2].hysteresis) +#define CY_CAPSENSE_LINEARSLIDER0_HYSTERESIS_OFFSET (168u) +#define CY_CAPSENSE_LINEARSLIDER0_HYSTERESIS_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_HYSTERESIS_PARAM_ID (0x020200a8u) + +#define CY_CAPSENSE_LINEARSLIDER0_ON_DEBOUNCE_VALUE (cy_capsense_tuner.widgetContext[2].onDebounce) +#define CY_CAPSENSE_LINEARSLIDER0_ON_DEBOUNCE_OFFSET (170u) +#define CY_CAPSENSE_LINEARSLIDER0_ON_DEBOUNCE_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_ON_DEBOUNCE_PARAM_ID (0x050200aau) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SOURCE_VALUE (cy_capsense_tuner.widgetContext[2].snsClkSource) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SOURCE_OFFSET (171u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SOURCE_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS_CLK_SOURCE_PARAM_ID (0x050200abu) + +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[2].idacMod[0]) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD0_OFFSET (172u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD0_PARAM_ID (0x050200acu) + +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[2].idacMod[1]) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD1_OFFSET (173u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD1_PARAM_ID (0x050200adu) + +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[2].idacMod[2]) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD2_OFFSET (174u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_MOD2_PARAM_ID (0x050200aeu) + +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_GAIN_INDEX_VALUE (cy_capsense_tuner.widgetContext[2].idacGainIndex) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_GAIN_INDEX_OFFSET (175u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_GAIN_INDEX_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_IDAC_GAIN_INDEX_PARAM_ID (0x050200afu) + +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD0_VALUE (cy_capsense_tuner.widgetContext[2].rowIdacMod[0]) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD0_OFFSET (176u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD0_PARAM_ID (0x050200b0u) + +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD1_VALUE (cy_capsense_tuner.widgetContext[2].rowIdacMod[1]) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD1_OFFSET (177u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD1_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD1_PARAM_ID (0x050200b1u) + +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD2_VALUE (cy_capsense_tuner.widgetContext[2].rowIdacMod[2]) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD2_OFFSET (178u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD2_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_ROW_IDAC_MOD2_PARAM_ID (0x050200b2u) + +#define CY_CAPSENSE_LINEARSLIDER0_REGULAR_IIR_BL_N_VALUE (cy_capsense_tuner.widgetContext[2].bslnCoeff) +#define CY_CAPSENSE_LINEARSLIDER0_REGULAR_IIR_BL_N_OFFSET (179u) +#define CY_CAPSENSE_LINEARSLIDER0_REGULAR_IIR_BL_N_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_REGULAR_IIR_BL_N_PARAM_ID (0x050200b3u) + +#define CY_CAPSENSE_LINEARSLIDER0_STATUS_VALUE (cy_capsense_tuner.widgetContext[2].status) +#define CY_CAPSENSE_LINEARSLIDER0_STATUS_OFFSET (180u) +#define CY_CAPSENSE_LINEARSLIDER0_STATUS_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_STATUS_PARAM_ID (0x010200b4u) + +#define CY_CAPSENSE_LINEARSLIDER0_PTRPOSITION_VALUE (cy_capsense_tuner.widgetContext[2].wdTouch.ptrPosition) +#define CY_CAPSENSE_LINEARSLIDER0_PTRPOSITION_OFFSET (184u) +#define CY_CAPSENSE_LINEARSLIDER0_PTRPOSITION_SIZE (4u) +#define CY_CAPSENSE_LINEARSLIDER0_PTRPOSITION_PARAM_ID (0x030200b8u) + +#define CY_CAPSENSE_LINEARSLIDER0_NUM_POSITIONS_VALUE (cy_capsense_tuner.widgetContext[2].wdTouch.numPosition) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_POSITIONS_OFFSET (188u) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_POSITIONS_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_POSITIONS_PARAM_ID (0x010200bcu) + +#define CY_CAPSENSE_BUTTON0_RX0_RAW0_VALUE (cy_capsense_tuner.sensorContext[0].raw) +#define CY_CAPSENSE_BUTTON0_RX0_RAW0_OFFSET (192u) +#define CY_CAPSENSE_BUTTON0_RX0_RAW0_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_RX0_RAW0_PARAM_ID (0x020000c0u) + +#define CY_CAPSENSE_BUTTON0_RX0_BSLN0_VALUE (cy_capsense_tuner.sensorContext[0].bsln) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN0_OFFSET (194u) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN0_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN0_PARAM_ID (0x020000c2u) + +#define CY_CAPSENSE_BUTTON0_RX0_DIFF0_VALUE (cy_capsense_tuner.sensorContext[0].diff) +#define CY_CAPSENSE_BUTTON0_RX0_DIFF0_OFFSET (196u) +#define CY_CAPSENSE_BUTTON0_RX0_DIFF0_SIZE (2u) +#define CY_CAPSENSE_BUTTON0_RX0_DIFF0_PARAM_ID (0x020000c4u) + +#define CY_CAPSENSE_BUTTON0_RX0_STATUS0_VALUE (cy_capsense_tuner.sensorContext[0].status) +#define CY_CAPSENSE_BUTTON0_RX0_STATUS0_OFFSET (198u) +#define CY_CAPSENSE_BUTTON0_RX0_STATUS0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_RX0_STATUS0_PARAM_ID (0x010000c6u) + +#define CY_CAPSENSE_BUTTON0_RX0_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[0].negBslnRstCnt) +#define CY_CAPSENSE_BUTTON0_RX0_NEG_BSLN_RST_CNT0_OFFSET (199u) +#define CY_CAPSENSE_BUTTON0_RX0_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_RX0_NEG_BSLN_RST_CNT0_PARAM_ID (0x010000c7u) + +#define CY_CAPSENSE_BUTTON0_RX0_IDAC0_VALUE (cy_capsense_tuner.sensorContext[0].idacComp) +#define CY_CAPSENSE_BUTTON0_RX0_IDAC0_OFFSET (200u) +#define CY_CAPSENSE_BUTTON0_RX0_IDAC0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_RX0_IDAC0_PARAM_ID (0x010000c8u) + +#define CY_CAPSENSE_BUTTON0_RX0_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[0].bslnExt) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN_EXT0_OFFSET (201u) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_BUTTON0_RX0_BSLN_EXT0_PARAM_ID (0x010000c9u) + +#define CY_CAPSENSE_BUTTON1_RX0_RAW0_VALUE (cy_capsense_tuner.sensorContext[1].raw) +#define CY_CAPSENSE_BUTTON1_RX0_RAW0_OFFSET (202u) +#define CY_CAPSENSE_BUTTON1_RX0_RAW0_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_RX0_RAW0_PARAM_ID (0x020100cau) + +#define CY_CAPSENSE_BUTTON1_RX0_BSLN0_VALUE (cy_capsense_tuner.sensorContext[1].bsln) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN0_OFFSET (204u) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN0_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN0_PARAM_ID (0x020100ccu) + +#define CY_CAPSENSE_BUTTON1_RX0_DIFF0_VALUE (cy_capsense_tuner.sensorContext[1].diff) +#define CY_CAPSENSE_BUTTON1_RX0_DIFF0_OFFSET (206u) +#define CY_CAPSENSE_BUTTON1_RX0_DIFF0_SIZE (2u) +#define CY_CAPSENSE_BUTTON1_RX0_DIFF0_PARAM_ID (0x020100ceu) + +#define CY_CAPSENSE_BUTTON1_RX0_STATUS0_VALUE (cy_capsense_tuner.sensorContext[1].status) +#define CY_CAPSENSE_BUTTON1_RX0_STATUS0_OFFSET (208u) +#define CY_CAPSENSE_BUTTON1_RX0_STATUS0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_RX0_STATUS0_PARAM_ID (0x010100d0u) + +#define CY_CAPSENSE_BUTTON1_RX0_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[1].negBslnRstCnt) +#define CY_CAPSENSE_BUTTON1_RX0_NEG_BSLN_RST_CNT0_OFFSET (209u) +#define CY_CAPSENSE_BUTTON1_RX0_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_RX0_NEG_BSLN_RST_CNT0_PARAM_ID (0x010100d1u) + +#define CY_CAPSENSE_BUTTON1_RX0_IDAC0_VALUE (cy_capsense_tuner.sensorContext[1].idacComp) +#define CY_CAPSENSE_BUTTON1_RX0_IDAC0_OFFSET (210u) +#define CY_CAPSENSE_BUTTON1_RX0_IDAC0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_RX0_IDAC0_PARAM_ID (0x010100d2u) + +#define CY_CAPSENSE_BUTTON1_RX0_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[1].bslnExt) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN_EXT0_OFFSET (211u) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_BUTTON1_RX0_BSLN_EXT0_PARAM_ID (0x010100d3u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_RAW0_VALUE (cy_capsense_tuner.sensorContext[2].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_RAW0_OFFSET (212u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_RAW0_PARAM_ID (0x020200d4u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN0_VALUE (cy_capsense_tuner.sensorContext[2].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN0_OFFSET (214u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN0_PARAM_ID (0x020200d6u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_DIFF0_VALUE (cy_capsense_tuner.sensorContext[2].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_DIFF0_OFFSET (216u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_DIFF0_PARAM_ID (0x020200d8u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_STATUS0_VALUE (cy_capsense_tuner.sensorContext[2].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_STATUS0_OFFSET (218u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_STATUS0_PARAM_ID (0x010200dau) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[2].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_OFFSET (219u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_PARAM_ID (0x010200dbu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_IDAC0_VALUE (cy_capsense_tuner.sensorContext[2].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_IDAC0_OFFSET (220u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_IDAC0_PARAM_ID (0x010200dcu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[2].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN_EXT0_OFFSET (221u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_BSLN_EXT0_PARAM_ID (0x010200ddu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_RAW0_VALUE (cy_capsense_tuner.sensorContext[3].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_RAW0_OFFSET (222u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_RAW0_PARAM_ID (0x020200deu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN0_VALUE (cy_capsense_tuner.sensorContext[3].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN0_OFFSET (224u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN0_PARAM_ID (0x020200e0u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_DIFF0_VALUE (cy_capsense_tuner.sensorContext[3].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_DIFF0_OFFSET (226u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_DIFF0_PARAM_ID (0x020200e2u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_STATUS0_VALUE (cy_capsense_tuner.sensorContext[3].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_STATUS0_OFFSET (228u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_STATUS0_PARAM_ID (0x010200e4u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[3].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_OFFSET (229u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_PARAM_ID (0x010200e5u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_IDAC0_VALUE (cy_capsense_tuner.sensorContext[3].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_IDAC0_OFFSET (230u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_IDAC0_PARAM_ID (0x010200e6u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[3].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN_EXT0_OFFSET (231u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_BSLN_EXT0_PARAM_ID (0x010200e7u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_RAW0_VALUE (cy_capsense_tuner.sensorContext[4].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_RAW0_OFFSET (232u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_RAW0_PARAM_ID (0x020200e8u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN0_VALUE (cy_capsense_tuner.sensorContext[4].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN0_OFFSET (234u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN0_PARAM_ID (0x020200eau) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_DIFF0_VALUE (cy_capsense_tuner.sensorContext[4].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_DIFF0_OFFSET (236u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_DIFF0_PARAM_ID (0x020200ecu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_STATUS0_VALUE (cy_capsense_tuner.sensorContext[4].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_STATUS0_OFFSET (238u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_STATUS0_PARAM_ID (0x010200eeu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[4].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_OFFSET (239u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_PARAM_ID (0x010200efu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_IDAC0_VALUE (cy_capsense_tuner.sensorContext[4].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_IDAC0_OFFSET (240u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_IDAC0_PARAM_ID (0x010200f0u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[4].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN_EXT0_OFFSET (241u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_BSLN_EXT0_PARAM_ID (0x010200f1u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_RAW0_VALUE (cy_capsense_tuner.sensorContext[5].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_RAW0_OFFSET (242u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_RAW0_PARAM_ID (0x020200f2u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN0_VALUE (cy_capsense_tuner.sensorContext[5].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN0_OFFSET (244u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN0_PARAM_ID (0x020200f4u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_DIFF0_VALUE (cy_capsense_tuner.sensorContext[5].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_DIFF0_OFFSET (246u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_DIFF0_PARAM_ID (0x020200f6u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_STATUS0_VALUE (cy_capsense_tuner.sensorContext[5].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_STATUS0_OFFSET (248u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_STATUS0_PARAM_ID (0x010200f8u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[5].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_OFFSET (249u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_PARAM_ID (0x010200f9u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_IDAC0_VALUE (cy_capsense_tuner.sensorContext[5].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_IDAC0_OFFSET (250u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_IDAC0_PARAM_ID (0x010200fau) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[5].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN_EXT0_OFFSET (251u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_BSLN_EXT0_PARAM_ID (0x010200fbu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_RAW0_VALUE (cy_capsense_tuner.sensorContext[6].raw) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_RAW0_OFFSET (252u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_RAW0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_RAW0_PARAM_ID (0x020200fcu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN0_VALUE (cy_capsense_tuner.sensorContext[6].bsln) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN0_OFFSET (254u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN0_PARAM_ID (0x020200feu) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_DIFF0_VALUE (cy_capsense_tuner.sensorContext[6].diff) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_DIFF0_OFFSET (256u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_DIFF0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_DIFF0_PARAM_ID (0x02020100u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_STATUS0_VALUE (cy_capsense_tuner.sensorContext[6].status) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_STATUS0_OFFSET (258u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_STATUS0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_STATUS0_PARAM_ID (0x01020102u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_VALUE (cy_capsense_tuner.sensorContext[6].negBslnRstCnt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_OFFSET (259u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_PARAM_ID (0x01020103u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_IDAC0_VALUE (cy_capsense_tuner.sensorContext[6].idacComp) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_IDAC0_OFFSET (260u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_IDAC0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_IDAC0_PARAM_ID (0x01020104u) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN_EXT0_VALUE (cy_capsense_tuner.sensorContext[6].bslnExt) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN_EXT0_OFFSET (261u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN_EXT0_SIZE (1u) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_BSLN_EXT0_PARAM_ID (0x01020105u) + +#define CY_CAPSENSE_LINEARSLIDER0_X0_VALUE (cy_capsense_tuner.position[0].x) +#define CY_CAPSENSE_LINEARSLIDER0_X0_OFFSET (262u) +#define CY_CAPSENSE_LINEARSLIDER0_X0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_X0_PARAM_ID (0x02020106u) + +#define CY_CAPSENSE_LINEARSLIDER0_Y0_VALUE (cy_capsense_tuner.position[0].y) +#define CY_CAPSENSE_LINEARSLIDER0_Y0_OFFSET (264u) +#define CY_CAPSENSE_LINEARSLIDER0_Y0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_Y0_PARAM_ID (0x02020108u) + +#define CY_CAPSENSE_LINEARSLIDER0_Z0_VALUE (cy_capsense_tuner.position[0].z) +#define CY_CAPSENSE_LINEARSLIDER0_Z0_OFFSET (266u) +#define CY_CAPSENSE_LINEARSLIDER0_Z0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_Z0_PARAM_ID (0x0202010au) + +#define CY_CAPSENSE_LINEARSLIDER0_ID0_VALUE (cy_capsense_tuner.position[0].id) +#define CY_CAPSENSE_LINEARSLIDER0_ID0_OFFSET (268u) +#define CY_CAPSENSE_LINEARSLIDER0_ID0_SIZE (2u) +#define CY_CAPSENSE_LINEARSLIDER0_ID0_PARAM_ID (0x0202010cu) + +#endif +/* cy_capsense_context */ +#define CY_CAPSENSE_COMMON_CONFIG_PTR_VALUE (cy_capsense_context.ptrCommonConfig) +#define CY_CAPSENSE_COMMON_CONFIG_PTR_SIZE (sizeof(cy_capsense_context.ptrCommonConfig)) + +#define CY_CAPSENSE_COMMON_CONTEXT_PTR_VALUE (cy_capsense_context.ptrCommonContext) +#define CY_CAPSENSE_COMMON_CONTEXT_PTR_SIZE (sizeof(cy_capsense_context.ptrCommonContext)) + +#define CY_CAPSENSE_INTERNAL_CONTEXT_PTR_VALUE (cy_capsense_context.ptrInternalContext) +#define CY_CAPSENSE_INTERNAL_CONTEXT_PTR_SIZE (sizeof(cy_capsense_context.ptrInternalContext)) + +#define CY_CAPSENSE_WD_CONFIG_PTR_VALUE (cy_capsense_context.ptrWdConfig) +#define CY_CAPSENSE_WD_CONFIG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig)) + +#define CY_CAPSENSE_WD_CONTEXT_PTR_VALUE (cy_capsense_context.ptrWdContext) +#define CY_CAPSENSE_WD_CONTEXT_PTR_SIZE (sizeof(cy_capsense_context.ptrWdContext)) + +#define CY_CAPSENSE_PIN_CONFIG_PTR_VALUE (cy_capsense_context.ptrPinConfig) +#define CY_CAPSENSE_PIN_CONFIG_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig)) + +#define CY_CAPSENSE_SHIELD_PIN_CONFIG_PTR_VALUE (cy_capsense_context.ptrShieldPinConfig) +#define CY_CAPSENSE_SHIELD_PIN_CONFIG_PTR_SIZE (sizeof(cy_capsense_context.ptrShieldPinConfig)) + +#define CY_CAPSENSE_ACTIVE_SCAN_SNS_PTR_VALUE (cy_capsense_context.ptrActiveScanSns) +#define CY_CAPSENSE_ACTIVE_SCAN_SNS_PTR_SIZE (sizeof(cy_capsense_context.ptrActiveScanSns)) + +#if (CY_CAPSENSE_MW_VERSION < 300) +#define CY_CAPSENSE_FPTR_CONFIG_PTR_VALUE (cy_capsense_context.ptrFptrConfig) +#define CY_CAPSENSE_FPTR_CONFIG_PTR_SIZE (sizeof(cy_capsense_context.ptrFptrConfig)) +#endif + +#define CY_CAPSENSE_BIST_CONTEXT_PTR_VALUE (cy_capsense_context.ptrBistContext) +#define CY_CAPSENSE_BIST_CONTEXT_PTR_SIZE (sizeof(cy_capsense_context.ptrBistContext)) + +/* cy_capsense_commonConfig */ +#define CY_CAPSENSE_CPU_CLK_HZ_VALUE (cy_capsense_context.ptrCommonConfig->cpuClkHz) +#define CY_CAPSENSE_CPU_CLK_HZ_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->cpuClkHz)) + +#define CY_CAPSENSE_PERI_CLK_HZ_VALUE (cy_capsense_context.ptrCommonConfig->periClkHz) +#define CY_CAPSENSE_PERI_CLK_HZ_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->periClkHz)) + +#define CY_CAPSENSE_VDDA_VALUE (cy_capsense_context.ptrCommonConfig->vdda) +#define CY_CAPSENSE_VDDA_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->vdda)) + +#define CY_CAPSENSE_NUM_PIN_VALUE (cy_capsense_context.ptrCommonConfig->numPin) +#define CY_CAPSENSE_NUM_PIN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->numPin)) + +#define CY_CAPSENSE_NUM_SNS_VALUE (cy_capsense_context.ptrCommonConfig->numSns) +#define CY_CAPSENSE_NUM_SNS_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->numSns)) + +#define CY_CAPSENSE_NUM_WD_VALUE (cy_capsense_context.ptrCommonConfig->numWd) +#define CY_CAPSENSE_NUM_WD_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->numWd)) + +#if (CY_CAPSENSE_MW_VERSION < 400) +#define CY_CAPSENSE_CSD_EN_VALUE (cy_capsense_context.ptrCommonConfig->csdEn) +#define CY_CAPSENSE_CSD_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdEn)) + +#define CY_CAPSENSE_CSX_EN_VALUE (cy_capsense_context.ptrCommonConfig->csxEn) +#define CY_CAPSENSE_CSX_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxEn)) + +#if (CY_CAPSENSE_MW_VERSION < 300) +#define CY_CAPSENSE_MFS_EN_VALUE (cy_capsense_context.ptrCommonConfig->mfsEn) +#define CY_CAPSENSE_MFS_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->mfsEn)) +#endif + +#define CY_CAPSENSE_BIST_EN_VALUE (cy_capsense_context.ptrCommonConfig->bistEn) +#define CY_CAPSENSE_BIST_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->bistEn)) + +#define CY_CAPSENSE_POSITION_FILTER_EN_VALUE (cy_capsense_context.ptrCommonConfig->positionFilterEn) +#define CY_CAPSENSE_POSITION_FILTER_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->positionFilterEn)) +#endif + +#define CY_CAPSENSE_PERI_DIVIDER_TYPE_VALUE (cy_capsense_context.ptrCommonConfig->periDividerType) +#define CY_CAPSENSE_PERI_DIVIDER_TYPE_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->periDividerType)) + +#define CY_CAPSENSE_PERI_DIVIDER_INDEX_VALUE (cy_capsense_context.ptrCommonConfig->periDividerIndex) +#define CY_CAPSENSE_PERI_DIVIDER_INDEX_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->periDividerIndex)) + +#define CY_CAPSENSE_ANALOG_WAKEUP_DELAY_VALUE (cy_capsense_context.ptrCommonConfig->analogWakeupDelay) +#define CY_CAPSENSE_ANALOG_WAKEUP_DELAY_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->analogWakeupDelay)) + +#define CY_CAPSENSE_SS_IREF_SOURCE_VALUE (cy_capsense_context.ptrCommonConfig->ssIrefSource) +#define CY_CAPSENSE_SS_IREF_SOURCE_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->ssIrefSource)) + +#define CY_CAPSENSE_SS_VREF_SOURCE_VALUE (cy_capsense_context.ptrCommonConfig->ssVrefSource) +#define CY_CAPSENSE_SS_VREF_SOURCE_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->ssVrefSource)) + +#define CY_CAPSENSE_PROX_TOUCH_COEFF_VALUE (cy_capsense_context.ptrCommonConfig->proxTouchCoeff) +#define CY_CAPSENSE_PROX_TOUCH_COEFF_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->proxTouchCoeff)) + +#define CY_CAPSENSE_SW_SENSOR_AUTO_RESET_EN_VALUE (cy_capsense_context.ptrCommonConfig->swSensorAutoResetEn) +#define CY_CAPSENSE_SW_SENSOR_AUTO_RESET_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->swSensorAutoResetEn)) + +#define CY_CAPSENSE_PORT_CMOD_PAD_NUM_VALUE (cy_capsense_context.ptrCommonConfig->portCmodPadNum) +#define CY_CAPSENSE_PORT_CMOD_PAD_NUM_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portCmodPadNum)) + +#define CY_CAPSENSE_PIN_CMOD_PAD_VALUE (cy_capsense_context.ptrCommonConfig->pinCmodPad) +#define CY_CAPSENSE_PIN_CMOD_PAD_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->pinCmodPad)) + +#define CY_CAPSENSE_PORT_CSH_PAD_NUM_VALUE (cy_capsense_context.ptrCommonConfig->portCshPadNum) +#define CY_CAPSENSE_PORT_CSH_PAD_NUM_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portCshPadNum)) + +#define CY_CAPSENSE_PIN_CSH_PAD_VALUE (cy_capsense_context.ptrCommonConfig->pinCshPad) +#define CY_CAPSENSE_PIN_CSH_PAD_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->pinCshPad)) + +#define CY_CAPSENSE_PORT_SHIELD_PAD_NUM_VALUE (cy_capsense_context.ptrCommonConfig->portShieldPadNum) +#define CY_CAPSENSE_PORT_SHIELD_PAD_NUM_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portShieldPadNum)) + +#define CY_CAPSENSE_PIN_SHIELD_PAD_VALUE (cy_capsense_context.ptrCommonConfig->pinShieldPad) +#define CY_CAPSENSE_PIN_SHIELD_PAD_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->pinShieldPad)) + +#define CY_CAPSENSE_PORT_VREF_EXT_PAD_NUM_VALUE (cy_capsense_context.ptrCommonConfig->portVrefExtPadNum) +#define CY_CAPSENSE_PORT_VREF_EXT_PAD_NUM_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portVrefExtPadNum)) + +#define CY_CAPSENSE_PIN_VREF_EXT_PAD_VALUE (cy_capsense_context.ptrCommonConfig->pinVrefExtPad) +#define CY_CAPSENSE_PIN_VREF_EXT_PAD_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->pinVrefExtPad)) + +#define CY_CAPSENSE_PORT_CMOD_NUM_VALUE (cy_capsense_context.ptrCommonConfig->portCmodNum) +#define CY_CAPSENSE_PORT_CMOD_NUM_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portCmodNum)) + +#define CY_CAPSENSE_IDAC_GAIN_TABLE_PTR_VALUE (&cy_capsense_context.ptrCommonConfig->idacGainTable[0u]) +#define CY_CAPSENSE_IDAC_GAIN_TABLE_PTR_SIZE (sizeof(&cy_capsense_context.ptrCommonConfig->idacGainTable[0u])) + +#define CY_CAPSENSE_PTR_CSD_BASE_VALUE (cy_capsense_context.ptrCommonConfig->ptrCsdBase) +#define CY_CAPSENSE_PTR_CSD_BASE_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->ptrCsdBase)) + +#define CY_CAPSENSE_PTR_CSD_CONTEXT_VALUE (cy_capsense_context.ptrCommonConfig->ptrCsdContext) +#define CY_CAPSENSE_PTR_CSD_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->ptrCsdContext)) + +#define CY_CAPSENSE_PORT_CMOD_VALUE (cy_capsense_context.ptrCommonConfig->portCmod) +#define CY_CAPSENSE_PORT_CMOD_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portCmod)) + +#define CY_CAPSENSE_PORT_CSH_VALUE (cy_capsense_context.ptrCommonConfig->portCsh) +#define CY_CAPSENSE_PORT_CSH_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portCsh)) + +#define CY_CAPSENSE_PORT_CINT_A_VALUE (cy_capsense_context.ptrCommonConfig->portCintA) +#define CY_CAPSENSE_PORT_CINT_A_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portCintA)) + +#define CY_CAPSENSE_PORT_CINT_B_VALUE (cy_capsense_context.ptrCommonConfig->portCintB) +#define CY_CAPSENSE_PORT_CINT_B_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portCintB)) + +#define CY_CAPSENSE_PIN_CMOD_VALUE (cy_capsense_context.ptrCommonConfig->pinCmod) +#define CY_CAPSENSE_PIN_CMOD_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->pinCmod)) + +#define CY_CAPSENSE_PORT_CSH_NUM_VALUE (cy_capsense_context.ptrCommonConfig->portCshNum) +#define CY_CAPSENSE_PORT_CSH_NUM_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->portCshNum)) + +#define CY_CAPSENSE_PIN_CSH_VALUE (cy_capsense_context.ptrCommonConfig->pinCsh) +#define CY_CAPSENSE_PIN_CSH_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->pinCsh)) + +#define CY_CAPSENSE_PIN_CINT_A_VALUE (cy_capsense_context.ptrCommonConfig->pinCintA) +#define CY_CAPSENSE_PIN_CINT_A_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->pinCintA)) + +#define CY_CAPSENSE_PIN_CINT_B_VALUE (cy_capsense_context.ptrCommonConfig->pinCintB) +#define CY_CAPSENSE_PIN_CINT_B_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->pinCintB)) + +#if (CY_CAPSENSE_MW_VERSION < 400) +#define CY_CAPSENSE_CSD_SHIELD_EN_VALUE (cy_capsense_context.ptrCommonConfig->csdShieldEn) +#define CY_CAPSENSE_CSD_SHIELD_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdShieldEn)) +#endif + +#define CY_CAPSENSE_CSD_INACTIVE_SNS_CONNECTION_VALUE (cy_capsense_context.ptrCommonConfig->csdInactiveSnsConnection) +#define CY_CAPSENSE_CSD_INACTIVE_SNS_CONNECTION_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdInactiveSnsConnection)) + +#if (CY_CAPSENSE_MW_VERSION >= 300) +#define CY_CAPSENSE_CSX_INACTIVE_SNS_CONNECTION_VALUE (cy_capsense_context.ptrCommonConfig->csxInactiveSnsConnection) +#define CY_CAPSENSE_CSX_INACTIVE_SNS_CONNECTION_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxInactiveSnsConnection)) +#endif + +#define CY_CAPSENSE_CSD_SHIELD_DELAY_VALUE (cy_capsense_context.ptrCommonConfig->csdShieldDelay) +#define CY_CAPSENSE_CSD_SHIELD_DELAY_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdShieldDelay)) + +#define CY_CAPSENSE_CSD_VREF_VALUE (cy_capsense_context.ptrCommonConfig->csdVref) +#define CY_CAPSENSE_CSD_VREF_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdVref)) + +#define CY_CAPSENSE_CSD_R_CONST_VALUE (cy_capsense_context.ptrCommonConfig->csdRConst) +#define CY_CAPSENSE_CSD_R_CONST_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdRConst)) + +#if (CY_CAPSENSE_MW_VERSION < 400) +#define CY_CAPSENSE_CSD_C_TANK_SHIELD_EN_VALUE (cy_capsense_context.ptrCommonConfig->csdCTankShieldEn) +#define CY_CAPSENSE_CSD_C_TANK_SHIELD_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdCTankShieldEn)) +#endif + +#define CY_CAPSENSE_CSD_SHIELD_NUM_PIN_VALUE (cy_capsense_context.ptrCommonConfig->csdShieldNumPin) +#define CY_CAPSENSE_CSD_SHIELD_NUM_PIN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdShieldNumPin)) + +#define CY_CAPSENSE_CSD_SHIELD_SW_RES_VALUE (cy_capsense_context.ptrCommonConfig->csdShieldSwRes) +#define CY_CAPSENSE_CSD_SHIELD_SW_RES_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdShieldSwRes)) + +#define CY_CAPSENSE_CSD_INIT_SW_RES_VALUE (cy_capsense_context.ptrCommonConfig->csdInitSwRes) +#define CY_CAPSENSE_CSD_INIT_SW_RES_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdInitSwRes)) + +#define CY_CAPSENSE_CSD_CHARGE_TRANSFER_VALUE (cy_capsense_context.ptrCommonConfig->csdChargeTransfer) +#define CY_CAPSENSE_CSD_CHARGE_TRANSFER_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdChargeTransfer)) + +#define CY_CAPSENSE_CSD_RAW_TARGET_VALUE (cy_capsense_context.ptrCommonConfig->csdRawTarget) +#define CY_CAPSENSE_CSD_RAW_TARGET_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdRawTarget)) + +#if (CY_CAPSENSE_MW_VERSION < 400) +#define CY_CAPSENSE_CSD_AUTOTUNE_EN_VALUE (cy_capsense_context.ptrCommonConfig->csdAutotuneEn) +#define CY_CAPSENSE_CSD_AUTOTUNE_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdAutotuneEn)) + +#define CY_CAPSENSE_CSD_IDAC_AUTOCAL_EN_VALUE (cy_capsense_context.ptrCommonConfig->csdIdacAutocalEn) +#define CY_CAPSENSE_CSD_IDAC_AUTOCAL_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdIdacAutocalEn)) + +#define CY_CAPSENSE_CSD_IDAC_AUTO_GAIN_EN_VALUE (cy_capsense_context.ptrCommonConfig->csdIdacAutoGainEn) +#define CY_CAPSENSE_CSD_IDAC_AUTO_GAIN_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdIdacAutoGainEn)) +#endif + +#define CY_CAPSENSE_CSD_CALIBRATION_ERROR_VALUE (cy_capsense_context.ptrCommonConfig->csdCalibrationError) +#define CY_CAPSENSE_CSD_CALIBRATION_ERROR_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdCalibrationError)) + +#define CY_CAPSENSE_CSD_IDAC_GAIN_INIT_INDEX_VALUE (cy_capsense_context.ptrCommonConfig->csdIdacGainInitIndex) +#define CY_CAPSENSE_CSD_IDAC_GAIN_INIT_INDEX_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdIdacGainInitIndex)) + +#define CY_CAPSENSE_CSD_IDAC_MIN_VALUE (cy_capsense_context.ptrCommonConfig->csdIdacMin) +#define CY_CAPSENSE_CSD_IDAC_MIN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdIdacMin)) + +#define CY_CAPSENSE_CSD_IDAC_COMP_EN_VALUE (cy_capsense_context.ptrCommonConfig->csdIdacCompEn) +#define CY_CAPSENSE_CSD_IDAC_COMP_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdIdacCompEn)) + +#define CY_CAPSENSE_CSD_FINE_INIT_TIME_VALUE (cy_capsense_context.ptrCommonConfig->csdFineInitTime) +#define CY_CAPSENSE_CSD_FINE_INIT_TIME_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdFineInitTime)) + +#if (CY_CAPSENSE_MW_VERSION < 400) +#define CY_CAPSENSE_CSD_IDAC_ROW_COL_ALIGN_EN_VALUE (cy_capsense_context.ptrCommonConfig->csdIdacRowColAlignEn) +#define CY_CAPSENSE_CSD_IDAC_ROW_COL_ALIGN_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdIdacRowColAlignEn)) +#endif + +#define CY_CAPSENSE_CSD_MFS_DIVIDER_OFFSET_F1_VALUE (cy_capsense_context.ptrCommonConfig->csdMfsDividerOffsetF1) +#define CY_CAPSENSE_CSD_MFS_DIVIDER_OFFSET_F1_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdMfsDividerOffsetF1)) + +#define CY_CAPSENSE_CSD_MFS_DIVIDER_OFFSET_F2_VALUE (cy_capsense_context.ptrCommonConfig->csdMfsDividerOffsetF2) +#define CY_CAPSENSE_CSD_MFS_DIVIDER_OFFSET_F2_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csdMfsDividerOffsetF2)) + +#define CY_CAPSENSE_CSX_RAW_TARGET_VALUE (cy_capsense_context.ptrCommonConfig->csxRawTarget) +#define CY_CAPSENSE_CSX_RAW_TARGET_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxRawTarget)) + +#if (CY_CAPSENSE_MW_VERSION < 400) +#define CY_CAPSENSE_CSX_IDAC_GAIN_INIT_INDEX_VALUE (cy_capsense_context.ptrCommonConfig->csxIdacGainInitIndex) +#define CY_CAPSENSE_CSX_IDAC_GAIN_INIT_INDEX_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxIdacGainInitIndex)) + +#define CY_CAPSENSE_CSX_REF_GAIN_VALUE (cy_capsense_context.ptrCommonConfig->csxRefGain) +#define CY_CAPSENSE_CSX_REF_GAIN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxRefGain)) + +#define CY_CAPSENSE_CSX_IDAC_AUTOCAL_EN_VALUE (cy_capsense_context.ptrCommonConfig->csxIdacAutocalEn) +#define CY_CAPSENSE_CSX_IDAC_AUTOCAL_EN_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxIdacAutocalEn)) +#endif + +#define CY_CAPSENSE_CSX_CALIBRATION_ERROR_VALUE (cy_capsense_context.ptrCommonConfig->csxCalibrationError) +#define CY_CAPSENSE_CSX_CALIBRATION_ERROR_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxCalibrationError)) + +#define CY_CAPSENSE_CSX_FINE_INIT_TIME_VALUE (cy_capsense_context.ptrCommonConfig->csxFineInitTime) +#define CY_CAPSENSE_CSX_FINE_INIT_TIME_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxFineInitTime)) + +#define CY_CAPSENSE_CSX_INIT_SW_RES_VALUE (cy_capsense_context.ptrCommonConfig->csxInitSwRes) +#define CY_CAPSENSE_CSX_INIT_SW_RES_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxInitSwRes)) + +#define CY_CAPSENSE_CSX_SCAN_SW_RES_VALUE (cy_capsense_context.ptrCommonConfig->csxScanSwRes) +#define CY_CAPSENSE_CSX_SCAN_SW_RES_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxScanSwRes)) + +#define CY_CAPSENSE_CSX_INIT_SHIELD_SW_RES_VALUE (cy_capsense_context.ptrCommonConfig->csxInitShieldSwRes) +#define CY_CAPSENSE_CSX_INIT_SHIELD_SW_RES_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxInitShieldSwRes)) + +#define CY_CAPSENSE_CSX_SCAN_SHIELD_SW_RES_VALUE (cy_capsense_context.ptrCommonConfig->csxScanShieldSwRes) +#define CY_CAPSENSE_CSX_SCAN_SHIELD_SW_RES_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxScanShieldSwRes)) + +#define CY_CAPSENSE_CSX_MFS_DIVIDER_OFFSET_F1_VALUE (cy_capsense_context.ptrCommonConfig->csxMfsDividerOffsetF1) +#define CY_CAPSENSE_CSX_MFS_DIVIDER_OFFSET_F1_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxMfsDividerOffsetF1)) + +#define CY_CAPSENSE_CSX_MFS_DIVIDER_OFFSET_F2_VALUE (cy_capsense_context.ptrCommonConfig->csxMfsDividerOffsetF2) +#define CY_CAPSENSE_CSX_MFS_DIVIDER_OFFSET_F2_SIZE (sizeof(cy_capsense_context.ptrCommonConfig->csxMfsDividerOffsetF2)) + +/* cy_capsense_widgetConfig */ +#define CY_CAPSENSE_BUTTON0_PTR_WD_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrWdContext) +#define CY_CAPSENSE_BUTTON0_PTR_WD_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrWdContext)) +#define CY_CAPSENSE_BUTTON0_PTR_SNS_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrSnsContext) +#define CY_CAPSENSE_BUTTON0_PTR_SNS_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrSnsContext)) +#define CY_CAPSENSE_BUTTON0_PTR_ELTD_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrEltdConfig) +#define CY_CAPSENSE_BUTTON0_PTR_ELTD_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrEltdConfig)) +#define CY_CAPSENSE_BUTTON0_PTR_ELTD_CAPACITANCE_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrEltdCapacitance) +#define CY_CAPSENSE_BUTTON0_PTR_ELTD_CAPACITANCE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrEltdCapacitance)) +#define CY_CAPSENSE_BUTTON0_PTR_BSLN_INV_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrBslnInv) +#define CY_CAPSENSE_BUTTON0_PTR_BSLN_INV_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrBslnInv)) +#define CY_CAPSENSE_BUTTON0_PTR_NOISE_ENVELOPE_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrNoiseEnvelope) +#define CY_CAPSENSE_BUTTON0_PTR_NOISE_ENVELOPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrNoiseEnvelope)) +#define CY_CAPSENSE_BUTTON0_PTR_RAW_FILTER_HISTORY_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrRawFilterHistory) +#define CY_CAPSENSE_BUTTON0_PTR_RAW_FILTER_HISTORY_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrRawFilterHistory)) +#define CY_CAPSENSE_BUTTON0_PTR_RAW_FILTER_HISTORY_LOW_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrRawFilterHistoryLow) +#define CY_CAPSENSE_BUTTON0_PTR_RAW_FILTER_HISTORY_LOW_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrRawFilterHistoryLow)) +#define CY_CAPSENSE_BUTTON0_IIR_COEFF_VALUE (cy_capsense_context.ptrWdConfig[0u].iirCoeff) +#define CY_CAPSENSE_BUTTON0_IIR_COEFF_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].iirCoeff)) +#define CY_CAPSENSE_BUTTON0_PTR_DEBOUNCE_ARR_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrDebounceArr) +#define CY_CAPSENSE_BUTTON0_PTR_DEBOUNCE_ARR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrDebounceArr)) +#define CY_CAPSENSE_BUTTON0_PTR_DIPLEX_TABLE_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrDiplexTable) +#define CY_CAPSENSE_BUTTON0_PTR_DIPLEX_TABLE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrDiplexTable)) +#define CY_CAPSENSE_BUTTON0_CENTROID_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[0u].centroidConfig) +#define CY_CAPSENSE_BUTTON0_CENTROID_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].centroidConfig)) +#define CY_CAPSENSE_BUTTON0_X_RESOLUTION_VALUE (cy_capsense_context.ptrWdConfig[0u].xResolution) +#define CY_CAPSENSE_BUTTON0_X_RESOLUTION_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].xResolution)) +#define CY_CAPSENSE_BUTTON0_Y_RESOLUTION_VALUE (cy_capsense_context.ptrWdConfig[0u].yResolution) +#define CY_CAPSENSE_BUTTON0_Y_RESOLUTION_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].yResolution)) +#define CY_CAPSENSE_BUTTON0_NUM_SNS_VALUE (cy_capsense_context.ptrWdConfig[0u].numSns) +#define CY_CAPSENSE_BUTTON0_NUM_SNS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].numSns)) +#define CY_CAPSENSE_BUTTON0_NUM_COLS_VALUE (cy_capsense_context.ptrWdConfig[0u].numCols) +#define CY_CAPSENSE_BUTTON0_NUM_COLS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].numCols)) +#define CY_CAPSENSE_BUTTON0_NUM_ROWS_VALUE (cy_capsense_context.ptrWdConfig[0u].numRows) +#define CY_CAPSENSE_BUTTON0_NUM_ROWS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].numRows)) +#define CY_CAPSENSE_BUTTON0_PTR_POS_FILTER_HISTORY_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrPosFilterHistory) +#define CY_CAPSENSE_BUTTON0_PTR_POS_FILTER_HISTORY_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrPosFilterHistory)) +#define CY_CAPSENSE_BUTTON0_PTR_CSX_TOUCH_HISTORY_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrCsxTouchHistory) +#define CY_CAPSENSE_BUTTON0_PTR_CSX_TOUCH_HISTORY_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrCsxTouchHistory)) +#define CY_CAPSENSE_BUTTON0_PTR_CSX_TOUCH_BUFFER_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrCsxTouchBuffer) +#define CY_CAPSENSE_BUTTON0_PTR_CSX_TOUCH_BUFFER_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrCsxTouchBuffer)) +#define CY_CAPSENSE_BUTTON0_PTR_CSD_TOUCH_BUFFER_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrCsdTouchBuffer) +#define CY_CAPSENSE_BUTTON0_PTR_CSD_TOUCH_BUFFER_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrCsdTouchBuffer)) +#define CY_CAPSENSE_BUTTON0_PTR_GESTURE_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrGestureConfig) +#define CY_CAPSENSE_BUTTON0_PTR_GESTURE_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrGestureConfig)) +#define CY_CAPSENSE_BUTTON0_PTR_GESTURE_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrGestureContext) +#define CY_CAPSENSE_BUTTON0_PTR_GESTURE_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrGestureContext)) +#define CY_CAPSENSE_BUTTON0_BALLISTIC_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[0u].ballisticConfig) +#define CY_CAPSENSE_BUTTON0_BALLISTIC_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ballisticConfig)) +#define CY_CAPSENSE_BUTTON0_PTR_BALLISTIC_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[0u].ptrBallisticContext) +#define CY_CAPSENSE_BUTTON0_PTR_BALLISTIC_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].ptrBallisticContext)) +#define CY_CAPSENSE_BUTTON0_AIIR_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[0u].aiirConfig) +#define CY_CAPSENSE_BUTTON0_AIIR_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].aiirConfig)) +#define CY_CAPSENSE_BUTTON0_ADV_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[0u].advConfig) +#define CY_CAPSENSE_BUTTON0_ADV_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].advConfig)) +#define CY_CAPSENSE_BUTTON0_POS_FILTER_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[0u].posFilterConfig) +#define CY_CAPSENSE_BUTTON0_POS_FILTER_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].posFilterConfig)) +#define CY_CAPSENSE_BUTTON0_RAW_FILTER_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[0u].rawFilterConfig) +#define CY_CAPSENSE_BUTTON0_RAW_FILTER_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].rawFilterConfig)) +#define CY_CAPSENSE_BUTTON0_SENSE_METHOD_VALUE (cy_capsense_context.ptrWdConfig[0u].senseMethod) +#define CY_CAPSENSE_BUTTON0_SENSE_METHOD_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].senseMethod)) +#define CY_CAPSENSE_BUTTON0_WD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[0u].wdType) +#define CY_CAPSENSE_BUTTON0_WD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0u].wdType)) + +#define CY_CAPSENSE_BUTTON1_PTR_WD_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrWdContext) +#define CY_CAPSENSE_BUTTON1_PTR_WD_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrWdContext)) +#define CY_CAPSENSE_BUTTON1_PTR_SNS_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrSnsContext) +#define CY_CAPSENSE_BUTTON1_PTR_SNS_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrSnsContext)) +#define CY_CAPSENSE_BUTTON1_PTR_ELTD_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrEltdConfig) +#define CY_CAPSENSE_BUTTON1_PTR_ELTD_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrEltdConfig)) +#define CY_CAPSENSE_BUTTON1_PTR_ELTD_CAPACITANCE_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrEltdCapacitance) +#define CY_CAPSENSE_BUTTON1_PTR_ELTD_CAPACITANCE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrEltdCapacitance)) +#define CY_CAPSENSE_BUTTON1_PTR_BSLN_INV_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrBslnInv) +#define CY_CAPSENSE_BUTTON1_PTR_BSLN_INV_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrBslnInv)) +#define CY_CAPSENSE_BUTTON1_PTR_NOISE_ENVELOPE_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrNoiseEnvelope) +#define CY_CAPSENSE_BUTTON1_PTR_NOISE_ENVELOPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrNoiseEnvelope)) +#define CY_CAPSENSE_BUTTON1_PTR_RAW_FILTER_HISTORY_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrRawFilterHistory) +#define CY_CAPSENSE_BUTTON1_PTR_RAW_FILTER_HISTORY_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrRawFilterHistory)) +#define CY_CAPSENSE_BUTTON1_PTR_RAW_FILTER_HISTORY_LOW_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrRawFilterHistoryLow) +#define CY_CAPSENSE_BUTTON1_PTR_RAW_FILTER_HISTORY_LOW_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrRawFilterHistoryLow)) +#define CY_CAPSENSE_BUTTON1_IIR_COEFF_VALUE (cy_capsense_context.ptrWdConfig[1u].iirCoeff) +#define CY_CAPSENSE_BUTTON1_IIR_COEFF_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].iirCoeff)) +#define CY_CAPSENSE_BUTTON1_PTR_DEBOUNCE_ARR_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrDebounceArr) +#define CY_CAPSENSE_BUTTON1_PTR_DEBOUNCE_ARR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrDebounceArr)) +#define CY_CAPSENSE_BUTTON1_PTR_DIPLEX_TABLE_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrDiplexTable) +#define CY_CAPSENSE_BUTTON1_PTR_DIPLEX_TABLE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrDiplexTable)) +#define CY_CAPSENSE_BUTTON1_CENTROID_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[1u].centroidConfig) +#define CY_CAPSENSE_BUTTON1_CENTROID_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].centroidConfig)) +#define CY_CAPSENSE_BUTTON1_X_RESOLUTION_VALUE (cy_capsense_context.ptrWdConfig[1u].xResolution) +#define CY_CAPSENSE_BUTTON1_X_RESOLUTION_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].xResolution)) +#define CY_CAPSENSE_BUTTON1_Y_RESOLUTION_VALUE (cy_capsense_context.ptrWdConfig[1u].yResolution) +#define CY_CAPSENSE_BUTTON1_Y_RESOLUTION_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].yResolution)) +#define CY_CAPSENSE_BUTTON1_NUM_SNS_VALUE (cy_capsense_context.ptrWdConfig[1u].numSns) +#define CY_CAPSENSE_BUTTON1_NUM_SNS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].numSns)) +#define CY_CAPSENSE_BUTTON1_NUM_COLS_VALUE (cy_capsense_context.ptrWdConfig[1u].numCols) +#define CY_CAPSENSE_BUTTON1_NUM_COLS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].numCols)) +#define CY_CAPSENSE_BUTTON1_NUM_ROWS_VALUE (cy_capsense_context.ptrWdConfig[1u].numRows) +#define CY_CAPSENSE_BUTTON1_NUM_ROWS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].numRows)) +#define CY_CAPSENSE_BUTTON1_PTR_POS_FILTER_HISTORY_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrPosFilterHistory) +#define CY_CAPSENSE_BUTTON1_PTR_POS_FILTER_HISTORY_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrPosFilterHistory)) +#define CY_CAPSENSE_BUTTON1_PTR_CSX_TOUCH_HISTORY_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrCsxTouchHistory) +#define CY_CAPSENSE_BUTTON1_PTR_CSX_TOUCH_HISTORY_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrCsxTouchHistory)) +#define CY_CAPSENSE_BUTTON1_PTR_CSX_TOUCH_BUFFER_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrCsxTouchBuffer) +#define CY_CAPSENSE_BUTTON1_PTR_CSX_TOUCH_BUFFER_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrCsxTouchBuffer)) +#define CY_CAPSENSE_BUTTON1_PTR_CSD_TOUCH_BUFFER_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrCsdTouchBuffer) +#define CY_CAPSENSE_BUTTON1_PTR_CSD_TOUCH_BUFFER_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrCsdTouchBuffer)) +#define CY_CAPSENSE_BUTTON1_PTR_GESTURE_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrGestureConfig) +#define CY_CAPSENSE_BUTTON1_PTR_GESTURE_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrGestureConfig)) +#define CY_CAPSENSE_BUTTON1_PTR_GESTURE_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrGestureContext) +#define CY_CAPSENSE_BUTTON1_PTR_GESTURE_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrGestureContext)) +#define CY_CAPSENSE_BUTTON1_BALLISTIC_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[1u].ballisticConfig) +#define CY_CAPSENSE_BUTTON1_BALLISTIC_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ballisticConfig)) +#define CY_CAPSENSE_BUTTON1_PTR_BALLISTIC_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[1u].ptrBallisticContext) +#define CY_CAPSENSE_BUTTON1_PTR_BALLISTIC_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].ptrBallisticContext)) +#define CY_CAPSENSE_BUTTON1_AIIR_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[1u].aiirConfig) +#define CY_CAPSENSE_BUTTON1_AIIR_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].aiirConfig)) +#define CY_CAPSENSE_BUTTON1_ADV_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[1u].advConfig) +#define CY_CAPSENSE_BUTTON1_ADV_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].advConfig)) +#define CY_CAPSENSE_BUTTON1_POS_FILTER_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[1u].posFilterConfig) +#define CY_CAPSENSE_BUTTON1_POS_FILTER_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].posFilterConfig)) +#define CY_CAPSENSE_BUTTON1_RAW_FILTER_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[1u].rawFilterConfig) +#define CY_CAPSENSE_BUTTON1_RAW_FILTER_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].rawFilterConfig)) +#define CY_CAPSENSE_BUTTON1_SENSE_METHOD_VALUE (cy_capsense_context.ptrWdConfig[1u].senseMethod) +#define CY_CAPSENSE_BUTTON1_SENSE_METHOD_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].senseMethod)) +#define CY_CAPSENSE_BUTTON1_WD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[1u].wdType) +#define CY_CAPSENSE_BUTTON1_WD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1u].wdType)) + +#define CY_CAPSENSE_LINEARSLIDER0_PTR_WD_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrWdContext) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_WD_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrWdContext)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_SNS_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrSnsContext) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_SNS_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrSnsContext)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_ELTD_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrEltdConfig) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_ELTD_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrEltdConfig)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_ELTD_CAPACITANCE_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrEltdCapacitance) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_ELTD_CAPACITANCE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrEltdCapacitance)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_BSLN_INV_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrBslnInv) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_BSLN_INV_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrBslnInv)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_NOISE_ENVELOPE_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrNoiseEnvelope) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_NOISE_ENVELOPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrNoiseEnvelope)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_RAW_FILTER_HISTORY_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrRawFilterHistory) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_RAW_FILTER_HISTORY_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrRawFilterHistory)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_RAW_FILTER_HISTORY_LOW_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrRawFilterHistoryLow) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_RAW_FILTER_HISTORY_LOW_SIZE \ + (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrRawFilterHistoryLow)) +#define CY_CAPSENSE_LINEARSLIDER0_IIR_COEFF_VALUE (cy_capsense_context.ptrWdConfig[2u].iirCoeff) +#define CY_CAPSENSE_LINEARSLIDER0_IIR_COEFF_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].iirCoeff)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_DEBOUNCE_ARR_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrDebounceArr) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_DEBOUNCE_ARR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrDebounceArr)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_DIPLEX_TABLE_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrDiplexTable) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_DIPLEX_TABLE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrDiplexTable)) +#define CY_CAPSENSE_LINEARSLIDER0_CENTROID_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[2u].centroidConfig) +#define CY_CAPSENSE_LINEARSLIDER0_CENTROID_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].centroidConfig)) +#define CY_CAPSENSE_LINEARSLIDER0_X_RESOLUTION_VALUE (cy_capsense_context.ptrWdConfig[2u].xResolution) +#define CY_CAPSENSE_LINEARSLIDER0_X_RESOLUTION_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].xResolution)) +#define CY_CAPSENSE_LINEARSLIDER0_Y_RESOLUTION_VALUE (cy_capsense_context.ptrWdConfig[2u].yResolution) +#define CY_CAPSENSE_LINEARSLIDER0_Y_RESOLUTION_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].yResolution)) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_SNS_VALUE (cy_capsense_context.ptrWdConfig[2u].numSns) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_SNS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].numSns)) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_COLS_VALUE (cy_capsense_context.ptrWdConfig[2u].numCols) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_COLS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].numCols)) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_ROWS_VALUE (cy_capsense_context.ptrWdConfig[2u].numRows) +#define CY_CAPSENSE_LINEARSLIDER0_NUM_ROWS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].numRows)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_POS_FILTER_HISTORY_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrPosFilterHistory) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_POS_FILTER_HISTORY_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrPosFilterHistory)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_CSX_TOUCH_HISTORY_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrCsxTouchHistory) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_CSX_TOUCH_HISTORY_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrCsxTouchHistory)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_CSX_TOUCH_BUFFER_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrCsxTouchBuffer) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_CSX_TOUCH_BUFFER_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrCsxTouchBuffer)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_CSD_TOUCH_BUFFER_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrCsdTouchBuffer) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_CSD_TOUCH_BUFFER_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrCsdTouchBuffer)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_GESTURE_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrGestureConfig) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_GESTURE_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrGestureConfig)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_GESTURE_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrGestureContext) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_GESTURE_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrGestureContext)) +#define CY_CAPSENSE_LINEARSLIDER0_BALLISTIC_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[2u].ballisticConfig) +#define CY_CAPSENSE_LINEARSLIDER0_BALLISTIC_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ballisticConfig)) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_BALLISTIC_CONTEXT_VALUE (cy_capsense_context.ptrWdConfig[2u].ptrBallisticContext) +#define CY_CAPSENSE_LINEARSLIDER0_PTR_BALLISTIC_CONTEXT_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].ptrBallisticContext)) +#define CY_CAPSENSE_LINEARSLIDER0_AIIR_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[2u].aiirConfig) +#define CY_CAPSENSE_LINEARSLIDER0_AIIR_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].aiirConfig)) +#define CY_CAPSENSE_LINEARSLIDER0_ADV_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[2u].advConfig) +#define CY_CAPSENSE_LINEARSLIDER0_ADV_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].advConfig)) +#define CY_CAPSENSE_LINEARSLIDER0_POS_FILTER_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[2u].posFilterConfig) +#define CY_CAPSENSE_LINEARSLIDER0_POS_FILTER_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].posFilterConfig)) +#define CY_CAPSENSE_LINEARSLIDER0_RAW_FILTER_CONFIG_VALUE (cy_capsense_context.ptrWdConfig[2u].rawFilterConfig) +#define CY_CAPSENSE_LINEARSLIDER0_RAW_FILTER_CONFIG_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].rawFilterConfig)) +#define CY_CAPSENSE_LINEARSLIDER0_SENSE_METHOD_VALUE (cy_capsense_context.ptrWdConfig[2u].senseMethod) +#define CY_CAPSENSE_LINEARSLIDER0_SENSE_METHOD_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].senseMethod)) +#define CY_CAPSENSE_LINEARSLIDER0_WD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[2u].wdType) +#define CY_CAPSENSE_LINEARSLIDER0_WD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2u].wdType)) + +/* cy_capsense_pinConfig */ +#define CY_CAPSENSE_BUTTON0_RX0_PIN0_PC_PTR_VALUE (cy_capsense_context.ptrPinConfig[0].pcPtr) +#define CY_CAPSENSE_BUTTON0_RX0_PIN0_PC_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig[0].pcPtr)) +#define CY_CAPSENSE_BUTTON0_RX0_PIN0_NUMBER_VALUE (cy_capsense_context.ptrPinConfig[0].pinNumber) +#define CY_CAPSENSE_BUTTON0_RX0_PIN0_NUMBER_SIZE (sizeof(cy_capsense_context.ptrPinConfig[0].pinNumber)) + +#define CY_CAPSENSE_BUTTON0_TX_PIN0_PC_PTR_VALUE (cy_capsense_context.ptrPinConfig[1].pcPtr) +#define CY_CAPSENSE_BUTTON0_TX_PIN0_PC_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig[1].pcPtr)) +#define CY_CAPSENSE_BUTTON0_TX_PIN0_NUMBER_VALUE (cy_capsense_context.ptrPinConfig[1].pinNumber) +#define CY_CAPSENSE_BUTTON0_TX_PIN0_NUMBER_SIZE (sizeof(cy_capsense_context.ptrPinConfig[1].pinNumber)) + +#define CY_CAPSENSE_BUTTON1_RX0_PIN0_PC_PTR_VALUE (cy_capsense_context.ptrPinConfig[2].pcPtr) +#define CY_CAPSENSE_BUTTON1_RX0_PIN0_PC_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig[2].pcPtr)) +#define CY_CAPSENSE_BUTTON1_RX0_PIN0_NUMBER_VALUE (cy_capsense_context.ptrPinConfig[2].pinNumber) +#define CY_CAPSENSE_BUTTON1_RX0_PIN0_NUMBER_SIZE (sizeof(cy_capsense_context.ptrPinConfig[2].pinNumber)) + +#define CY_CAPSENSE_BUTTON1_TX_PIN0_PC_PTR_VALUE (cy_capsense_context.ptrPinConfig[3].pcPtr) +#define CY_CAPSENSE_BUTTON1_TX_PIN0_PC_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig[3].pcPtr)) +#define CY_CAPSENSE_BUTTON1_TX_PIN0_NUMBER_VALUE (cy_capsense_context.ptrPinConfig[3].pinNumber) +#define CY_CAPSENSE_BUTTON1_TX_PIN0_NUMBER_SIZE (sizeof(cy_capsense_context.ptrPinConfig[3].pinNumber)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_PIN0_PC_PTR_VALUE (cy_capsense_context.ptrPinConfig[4].pcPtr) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_PIN0_PC_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig[4].pcPtr)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_PIN0_NUMBER_VALUE (cy_capsense_context.ptrPinConfig[4].pinNumber) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_PIN0_NUMBER_SIZE (sizeof(cy_capsense_context.ptrPinConfig[4].pinNumber)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_PIN0_PC_PTR_VALUE (cy_capsense_context.ptrPinConfig[5].pcPtr) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_PIN0_PC_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig[5].pcPtr)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_PIN0_NUMBER_VALUE (cy_capsense_context.ptrPinConfig[5].pinNumber) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_PIN0_NUMBER_SIZE (sizeof(cy_capsense_context.ptrPinConfig[5].pinNumber)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_PIN0_PC_PTR_VALUE (cy_capsense_context.ptrPinConfig[6].pcPtr) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_PIN0_PC_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig[6].pcPtr)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_PIN0_NUMBER_VALUE (cy_capsense_context.ptrPinConfig[6].pinNumber) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_PIN0_NUMBER_SIZE (sizeof(cy_capsense_context.ptrPinConfig[6].pinNumber)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_PIN0_PC_PTR_VALUE (cy_capsense_context.ptrPinConfig[7].pcPtr) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_PIN0_PC_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig[7].pcPtr)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_PIN0_NUMBER_VALUE (cy_capsense_context.ptrPinConfig[7].pinNumber) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_PIN0_NUMBER_SIZE (sizeof(cy_capsense_context.ptrPinConfig[7].pinNumber)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_PIN0_PC_PTR_VALUE (cy_capsense_context.ptrPinConfig[8].pcPtr) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_PIN0_PC_PTR_SIZE (sizeof(cy_capsense_context.ptrPinConfig[8].pcPtr)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_PIN0_NUMBER_VALUE (cy_capsense_context.ptrPinConfig[8].pinNumber) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_PIN0_NUMBER_SIZE (sizeof(cy_capsense_context.ptrPinConfig[8].pinNumber)) + +/* cy_capsense_electrodeConfig */ +#define CY_CAPSENSE_BUTTON0_RX0_CFG_PTR_VALUE (cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[0].ptrPin) +#define CY_CAPSENSE_BUTTON0_RX0_CFG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[0].ptrPin)) +#define CY_CAPSENSE_BUTTON0_RX0_ELTD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[0].type) +#define CY_CAPSENSE_BUTTON0_RX0_ELTD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[0].type)) +#define CY_CAPSENSE_BUTTON0_RX0_NUM_PINS_VALUE (cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[0].numPins) +#define CY_CAPSENSE_BUTTON0_RX0_NUM_PINS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[0].numPins)) + +#define CY_CAPSENSE_BUTTON0_TX_CFG_PTR_VALUE (cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[1].ptrPin) +#define CY_CAPSENSE_BUTTON0_TX_CFG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[1].ptrPin)) +#define CY_CAPSENSE_BUTTON0_TX_ELTD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[1].type) +#define CY_CAPSENSE_BUTTON0_TX_ELTD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[1].type)) +#define CY_CAPSENSE_BUTTON0_TX_NUM_PINS_VALUE (cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[1].numPins) +#define CY_CAPSENSE_BUTTON0_TX_NUM_PINS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[0].ptrEltdConfig[1].numPins)) + +#define CY_CAPSENSE_BUTTON1_RX0_CFG_PTR_VALUE (cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[0].ptrPin) +#define CY_CAPSENSE_BUTTON1_RX0_CFG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[0].ptrPin)) +#define CY_CAPSENSE_BUTTON1_RX0_ELTD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[0].type) +#define CY_CAPSENSE_BUTTON1_RX0_ELTD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[0].type)) +#define CY_CAPSENSE_BUTTON1_RX0_NUM_PINS_VALUE (cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[0].numPins) +#define CY_CAPSENSE_BUTTON1_RX0_NUM_PINS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[0].numPins)) + +#define CY_CAPSENSE_BUTTON1_TX_CFG_PTR_VALUE (cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[1].ptrPin) +#define CY_CAPSENSE_BUTTON1_TX_CFG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[1].ptrPin)) +#define CY_CAPSENSE_BUTTON1_TX_ELTD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[1].type) +#define CY_CAPSENSE_BUTTON1_TX_ELTD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[1].type)) +#define CY_CAPSENSE_BUTTON1_TX_NUM_PINS_VALUE (cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[1].numPins) +#define CY_CAPSENSE_BUTTON1_TX_NUM_PINS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[1].ptrEltdConfig[1].numPins)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_CFG_PTR_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[0].ptrPin) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_CFG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[0].ptrPin)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_ELTD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[0].type) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_ELTD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[0].type)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NUM_PINS_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[0].numPins) +#define CY_CAPSENSE_LINEARSLIDER0_SNS0_NUM_PINS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[0].numPins)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_CFG_PTR_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[1].ptrPin) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_CFG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[1].ptrPin)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_ELTD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[1].type) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_ELTD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[1].type)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NUM_PINS_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[1].numPins) +#define CY_CAPSENSE_LINEARSLIDER0_SNS1_NUM_PINS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[1].numPins)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_CFG_PTR_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[2].ptrPin) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_CFG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[2].ptrPin)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_ELTD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[2].type) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_ELTD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[2].type)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NUM_PINS_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[2].numPins) +#define CY_CAPSENSE_LINEARSLIDER0_SNS2_NUM_PINS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[2].numPins)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_CFG_PTR_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[3].ptrPin) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_CFG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[3].ptrPin)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_ELTD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[3].type) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_ELTD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[3].type)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NUM_PINS_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[3].numPins) +#define CY_CAPSENSE_LINEARSLIDER0_SNS3_NUM_PINS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[3].numPins)) + +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_CFG_PTR_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[4].ptrPin) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_CFG_PTR_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[4].ptrPin)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_ELTD_TYPE_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[4].type) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_ELTD_TYPE_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[4].type)) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NUM_PINS_VALUE (cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[4].numPins) +#define CY_CAPSENSE_LINEARSLIDER0_SNS4_NUM_PINS_SIZE (sizeof(cy_capsense_context.ptrWdConfig[2].ptrEltdConfig[4].numPins)) + +#if ((CY_CAPSENSE_PERI_CLK / 2) > 50000000) +#warning The maximum CSD modulator clock frequency is 50 MHz: increase CSD modulator clock divider to meet the valid operation conditions +#endif + +#if ((CY_CAPSENSE_PERI_CLK / 2) > 50000000) +#warning The maximum CSX modulator clock frequency is 50 MHz: increase CSX modulator clock divider to meet the valid operation conditions +#endif + +#if ((CY_CAPSENSE_PERI_CLK / 2 / 32) > 3000000) +#warning The maximum Tx clock frequency is 3 MHz: increase Tx clock divider for widget Button0 to meet the valid operation conditions +#endif + +#if ((CY_CAPSENSE_PERI_CLK / 2 / 32) > 3000000) +#warning The maximum Tx clock frequency is 3 MHz: increase Tx clock divider for widget Button1 to meet the valid operation conditions +#endif + +#if defined(__cplusplus) +} +#endif + +#endif /* CY_CAPSENSE_CORE == __CORTEX_M */ + +#endif /* !defined(CY_DISABLE_CAPSENSE) */ + +#endif /* (defined(COMPONENT_MW_CAPSENSE) || !defined(COMPONENT_MW_CORE_MAKE)) */ + +#endif /* CYCFG_CAPSENSE_H */ + +/* [] END OF FILE */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense.timestamp b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense.timestamp new file mode 100644 index 00000000000000..1f1e351cf22890 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense.timestamp @@ -0,0 +1,26 @@ +/******************************************************************************* +* File Name: cycfg_capsense.timestamp +* +* Description: +* Sentinel file for determining if generated source is up to date. +* This file was automatically generated and should not be modified. +* CAPSENSE Configurator 6.10.0.3796 +* +******************************************************************************** +* Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or +* an affiliate of Cypress Semiconductor Corporation. +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense_defines.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense_defines.h new file mode 100644 index 00000000000000..570294dcd562e1 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense_defines.h @@ -0,0 +1,159 @@ +/******************************************************************************* + * File Name: cycfg_capsense_defines.h + * + * Description: + * CAPSENSE configuration defines. + * + * Note: This file is required for the CAPSENSE Middleware Library to build + * successfully. + * + * This file should not be modified. It was automatically generated by + * CAPSENSE Configurator 6.10.0.3796 + * + ******************************************************************************** + * Copyright 2024, Cypress Semiconductor Corporation (an Infineon company) + * or an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *******************************************************************************/ + +#if !defined(CYCFG_CAPSENSE_DEFINES_H) +#define CYCFG_CAPSENSE_DEFINES_H + +#include + +/* General */ +#define CY_CAPSENSE_WIDGET_COUNT (3u) +#define CY_CAPSENSE_ACTIVE_WIDGET_COUNT (CY_CAPSENSE_WIDGET_COUNT) +#define CY_CAPSENSE_LP_WIDGET_COUNT (0u) +#define CY_CAPSENSE_TOTAL_WIDGET_COUNT (CY_CAPSENSE_WIDGET_COUNT) +#define CY_CAPSENSE_SENSOR_COUNT (7u) +#define CY_CAPSENSE_ELTD_COUNT (9u) +#define CY_CAPSENSE_PIN_COUNT (9u) +#define CY_CAPSENSE_SHIELD_PIN_COUNT (0u) +#define CY_CAPSENSE_POSITION_SIZE (1u) +#define CY_CAPSENSE_DEBOUNCE_SIZE (3u) +#define CY_CAPSENSE_NOISE_ENVELOPE_SIZE (5u) +#define CY_CAPSENSE_MFS_CH_NUMBER (1u) +#define CY_CAPSENSE_RAW_HISTORY_SIZE (0u) +#define CY_CAPSENSE_IIR_HISTORY_LOW_SIZE (0u) +#define CY_CAPSENSE_RAW_ALP_HISTORY_SIZE (0u) +#define CY_CAPSENSE_POSITION_FILTER_HISTORY_SIZE (0u) +#define CY_CAPSENSE_TOUCH_FILTER_HISTORY_SIZE (0u) +#define CY_CAPSENSE_DIPLEX_SIZE (0u) +#define CY_CAPSENSE_CSD_TOUCHPAD_MAX_SENSORS_SIZE (0u) +#define CY_CAPSENSE_CSX_TOUCH_BUFFER_ENABLE (0u) +#define CY_CAPSENSE_CSX_TOUCH_HISTORY_SIZE (0u) +#define CY_CAPSENSE_BALLISTIC_WIDGET_COUNT (0u) +#define CY_CAPSENSE_GESTURE_WIDGET_COUNT (0u) + +/* Sensing Methods */ +#define CY_CAPSENSE_CSD_EN (1u) +#define CY_CAPSENSE_CSX_EN (1u) +#define CY_CAPSENSE_ISX_EN (0u) +#define CY_CAPSENSE_CSD_CALIBRATION_EN (1u) +#define CY_CAPSENSE_CSX_CALIBRATION_EN (1u) +#define CY_CAPSENSE_SMARTSENSE_FULL_EN (1u) +#define CY_CAPSENSE_SMARTSENSE_HW_EN (0u) +#define CY_CAPSENSE_SMARTSENSE_DISABLED (0u) +#define CY_CAPSENSE_CSD_AUTOTUNE_EN (CY_CAPSENSE_SMARTSENSE_FULL_EN | CY_CAPSENSE_SMARTSENSE_HW_EN) +#define CY_CAPSENSE_CSD_SHIELD_EN (0u) +#define CY_CAPSENSE_CSD_SHIELD_CAP_EN (0u) +#define CY_CAPSENSE_CSD_CHARGE_TRANSFER (0u) +#define CY_CAPSENSE_CSD_IDAC_COMP_EN (1u) +#define CY_CAPSENSE_CSD_IDAC_AUTO_GAIN_EN (1u) +#define CY_CAPSENSE_CSD_IDAC_ROW_COL_ALIGN_EN (1u) +#define CY_CAPSENSE_LFSR_EN (1u) +#define CY_CAPSENSE_LFSR_AUTO_EN (1u) +#define CY_CAPSENSE_CLOCK_SOURCE_AUTO_EN (1u) + +/* Filtering */ +#define CY_CAPSENSE_ADAPTIVE_FILTER_EN (0u) +#define CY_CAPSENSE_BALLISTIC_MULTIPLIER_EN (0u) +#define CY_CAPSENSE_RAWCOUNT_FILTER_EN (0u) +#define CY_CAPSENSE_RC_ALP_FILTER_EN (0u) +#define CY_CAPSENSE_REGULAR_RC_IIR_FILTER_EN (0u) +#define CY_CAPSENSE_REGULAR_RC_MEDIAN_FILTER_EN (0u) +#define CY_CAPSENSE_REGULAR_RC_AVERAGE_FILTER_EN (0u) +#define CY_CAPSENSE_REGULAR_RC_ALP_FILTER_EN (0u) +#define CY_CAPSENSE_REGULAR_RC_FILTER_EN \ + (CY_CAPSENSE_REGULAR_RC_IIR_FILTER_EN | CY_CAPSENSE_REGULAR_RC_MEDIAN_FILTER_EN | CY_CAPSENSE_REGULAR_RC_AVERAGE_FILTER_EN | \ + CY_CAPSENSE_REGULAR_RC_ALP_FILTER_EN) +#define CY_CAPSENSE_PROX_RC_IIR_FILTER_EN (0u) +#define CY_CAPSENSE_PROX_RC_MEDIAN_FILTER_EN (0u) +#define CY_CAPSENSE_PROX_RC_AVERAGE_FILTER_EN (0u) +#define CY_CAPSENSE_PROX_RC_ALP_FILTER_EN (0u) +#define CY_CAPSENSE_PROX_RC_FILTER_EN \ + (CY_CAPSENSE_PROX_RC_IIR_FILTER_EN | CY_CAPSENSE_PROX_RC_MEDIAN_FILTER_EN | CY_CAPSENSE_PROX_RC_AVERAGE_FILTER_EN | \ + CY_CAPSENSE_PROX_RC_ALP_FILTER_EN) +#define CY_CAPSENSE_POSITION_FILTER_EN (0u) +#define CY_CAPSENSE_CSD_POSITION_FILTER_EN (0u) +#define CY_CAPSENSE_CSX_POSITION_FILTER_EN (0u) +#define CY_CAPSENSE_POS_IIR_FILTER_EN (0u) +#define CY_CAPSENSE_POS_MEDIAN_FILTER_EN (0u) +#define CY_CAPSENSE_POS_AVERAGE_FILTER_EN (0u) +#define CY_CAPSENSE_POS_JITTER_FILTER_EN (0u) + +/* Widgets */ +#define CY_CAPSENSE_CSD_BUTTON_EN (0u) +#define CY_CAPSENSE_CSD_MATRIX_EN (0u) +#define CY_CAPSENSE_CSD_SLIDER_EN (1u) +#define CY_CAPSENSE_CSD_TOUCHPAD_EN (0u) +#define CY_CAPSENSE_CSD_PROXIMITY_EN (0u) +#define CY_CAPSENSE_CSX_BUTTON_EN (1u) +#define CY_CAPSENSE_CSX_SLIDER_EN (0u) +#define CY_CAPSENSE_CSX_MATRIX_EN (0u) +#define CY_CAPSENSE_CSX_TOUCHPAD_EN (0u) +#define CY_CAPSENSE_ISX_BUTTON_EN (0u) +#define CY_CAPSENSE_ISX_PROXIMITY_EN (0u) +#define CY_CAPSENSE_ISX_LINEAR_SLIDER_EN (0u) +#define CY_CAPSENSE_ISX_DIPLEX_SLIDER_EN (0u) +#define CY_CAPSENSE_ADVANCED_CENTROID_5X5_EN (0u) +#define CY_CAPSENSE_CSD_LINEAR_SLIDER_EN (1u) +#define CY_CAPSENSE_CSD_RADIAL_SLIDER_EN (0u) +#define CY_CAPSENSE_CSD_DIPLEX_SLIDER_EN (0u) +#define CY_CAPSENSE_CSX_LINEAR_SLIDER_EN (0u) +#define CY_CAPSENSE_CSX_DIPLEX_SLIDER_EN (0u) +#define CY_CAPSENSE_GANGED_SNS_EN (0u) +#define CY_CAPSENSE_CSD_GANGED_SNS_EN (0u) +#define CY_CAPSENSE_CSX_GANGED_SNS_EN (0u) +#define CY_CAPSENSE_BUTTON_EN (1u) +#define CY_CAPSENSE_MATRIX_EN (0u) +#define CY_CAPSENSE_SLIDER_EN (1u) +#define CY_CAPSENSE_LINEAR_SLIDER_EN (1u) +#define CY_CAPSENSE_RADIAL_SLIDER_EN (0u) +#define CY_CAPSENSE_DIPLEX_SLIDER_EN (0u) +#define CY_CAPSENSE_TOUCHPAD_EN (0u) +#define CY_CAPSENSE_PROXIMITY_EN (0u) + +/* Features */ +#define CY_CAPSENSE_GESTURE_EN (0u) +#define CY_CAPSENSE_MULTI_FREQUENCY_SCAN_EN (0u) +#define CY_CAPSENSE_MULTI_FREQUENCY_WIDGET_EN (0u) +#define CY_CAPSENSE_SNS_AUTO_RESET_EN (0u) + +/* Self-test */ +#define CY_CAPSENSE_BIST_EN (0u) +#define CY_CAPSENSE_TST_WDGT_CRC_EN (0u) +#define CY_CAPSENSE_TST_BSLN_INTEGRITY_EN (0u) +#define CY_CAPSENSE_TST_RAW_INTEGRITY_EN (0u) +#define CY_CAPSENSE_TST_SNS_SHORT_EN (0u) +#define CY_CAPSENSE_TST_SNS_CAP_EN (0u) +#define CY_CAPSENSE_TST_SH_CAP_EN (0u) +#define CY_CAPSENSE_TST_EXTERNAL_CAP_EN (0u) +#define CY_CAPSENSE_TST_VDDA_EN (0u) + +#endif /* CYCFG_CAPSENSE_DEFINES_H */ + +/* [] END OF FILE */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense_tuner_regmap.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense_tuner_regmap.h new file mode 100644 index 00000000000000..650ac462f4ee74 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_capsense_tuner_regmap.h @@ -0,0 +1,972 @@ +/******************************************************************************* + * File Name: cycfg_capsense_tuner_regmap.h + * + * Description: + * CAPSENSE Tuner register map configuration. + * This file should not be modified. It was automatically generated by + * CAPSENSE Configurator 6.10.0.3796 + * + ******************************************************************************** + * Copyright 2024, Cypress Semiconductor Corporation (an Infineon company) + * or an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *******************************************************************************/ + +#if !defined(CYCFG_CAPSENSE_TUNER_REGMAP_H) +#define CYCFG_CAPSENSE_TUNER_REGMAP_H + +#include "cy_capsense_common.h" + +#if !defined(CY_CAPSENSE_MW_VERSION) +#define CY_CAPSENSE_TUNER_MW_VERSION (200) +#else +#define CY_CAPSENSE_TUNER_MW_VERSION (CY_CAPSENSE_MW_VERSION) +#endif + +/* RAM Data structure register definitions */ +#if (CY_CAPSENSE_TUNER_MW_VERSION < 300) +#define CY_CAPSENSE_TUNER_CONFIG_ID_OFFSET (0u) +#define CY_CAPSENSE_TUNER_CONFIG_ID_SIZE (2u) + +#define CY_CAPSENSE_TUNER_TUNER_CMD_OFFSET (2u) +#define CY_CAPSENSE_TUNER_TUNER_CMD_SIZE (2u) + +#define CY_CAPSENSE_TUNER_SCAN_COUNTER_OFFSET (4u) +#define CY_CAPSENSE_TUNER_SCAN_COUNTER_SIZE (2u) + +#define CY_CAPSENSE_TUNER_TUNER_ST_OFFSET (6u) +#define CY_CAPSENSE_TUNER_TUNER_ST_SIZE (1u) + +#define CY_CAPSENSE_TUNER_INITDONE_OFFSET (7u) +#define CY_CAPSENSE_TUNER_INITDONE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_PTRSSCALLBACK_OFFSET (8u) +#define CY_CAPSENSE_TUNER_PTRSSCALLBACK_SIZE (4u) + +#define CY_CAPSENSE_TUNER_PTREOSCALLBACK_OFFSET (12u) +#define CY_CAPSENSE_TUNER_PTREOSCALLBACK_SIZE (4u) + +#define CY_CAPSENSE_TUNER_PTRTUNERSENDCALLBACK_OFFSET (16u) +#define CY_CAPSENSE_TUNER_PTRTUNERSENDCALLBACK_SIZE (4u) + +#define CY_CAPSENSE_TUNER_PTRTUNERRECEIVECALLBACK_OFFSET (20u) +#define CY_CAPSENSE_TUNER_PTRTUNERRECEIVECALLBACK_SIZE (4u) + +#define CY_CAPSENSE_TUNER_STATUS_OFFSET (24u) +#define CY_CAPSENSE_TUNER_STATUS_SIZE (4u) + +#define CY_CAPSENSE_TUNER_TIMESTAMPINTERVAL_OFFSET (28u) +#define CY_CAPSENSE_TUNER_TIMESTAMPINTERVAL_SIZE (4u) + +#define CY_CAPSENSE_TUNER_TIMESTAMP_OFFSET (32u) +#define CY_CAPSENSE_TUNER_TIMESTAMP_SIZE (4u) + +#define CY_CAPSENSE_TUNER_CSD_MOD_CLK_DIVIDER_OFFSET (36u) +#define CY_CAPSENSE_TUNER_CSD_MOD_CLK_DIVIDER_SIZE (1u) + +#define CY_CAPSENSE_TUNER_CSX_MOD_CLK_DIVIDER_OFFSET (37u) +#define CY_CAPSENSE_TUNER_CSX_MOD_CLK_DIVIDER_SIZE (1u) + +#define CY_CAPSENSE_TUNER_TUNER_CNT_OFFSET (38u) +#define CY_CAPSENSE_TUNER_TUNER_CNT_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_FINGER_CP_OFFSET (40u) +#define CY_CAPSENSE_TUNER_BUTTON0_FINGER_CP_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_SIGPFC_OFFSET (42u) +#define CY_CAPSENSE_TUNER_BUTTON0_SIGPFC_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_NUM_CONV_OFFSET (44u) +#define CY_CAPSENSE_TUNER_BUTTON0_NUM_CONV_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_MAX_RAW_COUNT_OFFSET (46u) +#define CY_CAPSENSE_TUNER_BUTTON0_MAX_RAW_COUNT_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_FINGER_TH_OFFSET (48u) +#define CY_CAPSENSE_TUNER_BUTTON0_FINGER_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_PROX_TOUCH_TH_OFFSET (50u) +#define CY_CAPSENSE_TUNER_BUTTON0_PROX_TOUCH_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_LOW_BSLN_RST_OFFSET (52u) +#define CY_CAPSENSE_TUNER_BUTTON0_LOW_BSLN_RST_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_TX_CLK_OFFSET (54u) +#define CY_CAPSENSE_TUNER_BUTTON0_TX_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_SNS_CLK_OFFSET (56u) +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_SNS_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_GESTURE_DETECTED_OFFSET (58u) +#define CY_CAPSENSE_TUNER_BUTTON0_GESTURE_DETECTED_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_GESTURE_DIRECTION_OFFSET (60u) +#define CY_CAPSENSE_TUNER_BUTTON0_GESTURE_DIRECTION_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_XDELTA_OFFSET (62u) +#define CY_CAPSENSE_TUNER_BUTTON0_XDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_YDELTA_OFFSET (64u) +#define CY_CAPSENSE_TUNER_BUTTON0_YDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_NOISE_TH_OFFSET (66u) +#define CY_CAPSENSE_TUNER_BUTTON0_NOISE_TH_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_NNOISE_TH_OFFSET (67u) +#define CY_CAPSENSE_TUNER_BUTTON0_NNOISE_TH_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_HYSTERESIS_OFFSET (68u) +#define CY_CAPSENSE_TUNER_BUTTON0_HYSTERESIS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ON_DEBOUNCE_OFFSET (69u) +#define CY_CAPSENSE_TUNER_BUTTON0_ON_DEBOUNCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_TX_CLK_SOURCE_OFFSET (70u) +#define CY_CAPSENSE_TUNER_BUTTON0_TX_CLK_SOURCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD0_OFFSET (71u) +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD1_OFFSET (72u) +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD2_OFFSET (73u) +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_GAIN_INDEX_OFFSET (74u) +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_GAIN_INDEX_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD0_OFFSET (75u) +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD1_OFFSET (76u) +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD2_OFFSET (77u) +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_REGULAR_IIR_BL_N_OFFSET (78u) +#define CY_CAPSENSE_TUNER_BUTTON0_REGULAR_IIR_BL_N_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_STATUS_OFFSET (79u) +#define CY_CAPSENSE_TUNER_BUTTON0_STATUS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_PTRPOSITION_OFFSET (80u) +#define CY_CAPSENSE_TUNER_BUTTON0_PTRPOSITION_SIZE (4u) + +#define CY_CAPSENSE_TUNER_BUTTON0_NUM_POSITIONS_OFFSET (84u) +#define CY_CAPSENSE_TUNER_BUTTON0_NUM_POSITIONS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_FINGER_CP_OFFSET (88u) +#define CY_CAPSENSE_TUNER_BUTTON1_FINGER_CP_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_SIGPFC_OFFSET (90u) +#define CY_CAPSENSE_TUNER_BUTTON1_SIGPFC_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_NUM_CONV_OFFSET (92u) +#define CY_CAPSENSE_TUNER_BUTTON1_NUM_CONV_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_MAX_RAW_COUNT_OFFSET (94u) +#define CY_CAPSENSE_TUNER_BUTTON1_MAX_RAW_COUNT_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_FINGER_TH_OFFSET (96u) +#define CY_CAPSENSE_TUNER_BUTTON1_FINGER_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_PROX_TOUCH_TH_OFFSET (98u) +#define CY_CAPSENSE_TUNER_BUTTON1_PROX_TOUCH_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_LOW_BSLN_RST_OFFSET (100u) +#define CY_CAPSENSE_TUNER_BUTTON1_LOW_BSLN_RST_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_TX_CLK_OFFSET (102u) +#define CY_CAPSENSE_TUNER_BUTTON1_TX_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_SNS_CLK_OFFSET (104u) +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_SNS_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_GESTURE_DETECTED_OFFSET (106u) +#define CY_CAPSENSE_TUNER_BUTTON1_GESTURE_DETECTED_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_GESTURE_DIRECTION_OFFSET (108u) +#define CY_CAPSENSE_TUNER_BUTTON1_GESTURE_DIRECTION_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_XDELTA_OFFSET (110u) +#define CY_CAPSENSE_TUNER_BUTTON1_XDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_YDELTA_OFFSET (112u) +#define CY_CAPSENSE_TUNER_BUTTON1_YDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_NOISE_TH_OFFSET (114u) +#define CY_CAPSENSE_TUNER_BUTTON1_NOISE_TH_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_NNOISE_TH_OFFSET (115u) +#define CY_CAPSENSE_TUNER_BUTTON1_NNOISE_TH_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_HYSTERESIS_OFFSET (116u) +#define CY_CAPSENSE_TUNER_BUTTON1_HYSTERESIS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ON_DEBOUNCE_OFFSET (117u) +#define CY_CAPSENSE_TUNER_BUTTON1_ON_DEBOUNCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_TX_CLK_SOURCE_OFFSET (118u) +#define CY_CAPSENSE_TUNER_BUTTON1_TX_CLK_SOURCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD0_OFFSET (119u) +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD1_OFFSET (120u) +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD2_OFFSET (121u) +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_GAIN_INDEX_OFFSET (122u) +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_GAIN_INDEX_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD0_OFFSET (123u) +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD1_OFFSET (124u) +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD2_OFFSET (125u) +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_REGULAR_IIR_BL_N_OFFSET (126u) +#define CY_CAPSENSE_TUNER_BUTTON1_REGULAR_IIR_BL_N_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_STATUS_OFFSET (127u) +#define CY_CAPSENSE_TUNER_BUTTON1_STATUS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_PTRPOSITION_OFFSET (128u) +#define CY_CAPSENSE_TUNER_BUTTON1_PTRPOSITION_SIZE (4u) + +#define CY_CAPSENSE_TUNER_BUTTON1_NUM_POSITIONS_OFFSET (132u) +#define CY_CAPSENSE_TUNER_BUTTON1_NUM_POSITIONS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_FINGER_CP_OFFSET (136u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_FINGER_CP_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SIGPFC_OFFSET (138u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SIGPFC_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_RESOLUTION_OFFSET (140u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_RESOLUTION_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_MAX_RAW_COUNT_OFFSET (142u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_MAX_RAW_COUNT_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_FINGER_TH_OFFSET (144u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_FINGER_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_PROX_TOUCH_TH_OFFSET (146u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_PROX_TOUCH_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_LOW_BSLN_RST_OFFSET (148u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_LOW_BSLN_RST_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS_CLK_OFFSET (150u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_SNS_CLK_OFFSET (152u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_SNS_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_GESTURE_DETECTED_OFFSET (154u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_GESTURE_DETECTED_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_GESTURE_DIRECTION_OFFSET (156u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_GESTURE_DIRECTION_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_XDELTA_OFFSET (158u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_XDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_YDELTA_OFFSET (160u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_YDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NOISE_TH_OFFSET (162u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NOISE_TH_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NNOISE_TH_OFFSET (163u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NNOISE_TH_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_HYSTERESIS_OFFSET (164u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_HYSTERESIS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ON_DEBOUNCE_OFFSET (165u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ON_DEBOUNCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS_CLK_SOURCE_OFFSET (166u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS_CLK_SOURCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD0_OFFSET (167u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD1_OFFSET (168u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD2_OFFSET (169u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_GAIN_INDEX_OFFSET (170u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_GAIN_INDEX_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD0_OFFSET (171u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD1_OFFSET (172u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD2_OFFSET (173u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_REGULAR_IIR_BL_N_OFFSET (174u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_REGULAR_IIR_BL_N_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_STATUS_OFFSET (175u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_STATUS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_PTRPOSITION_OFFSET (176u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_PTRPOSITION_SIZE (4u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NUM_POSITIONS_OFFSET (180u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NUM_POSITIONS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_RAW0_OFFSET (184u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_BSLN0_OFFSET (186u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_DIFF0_OFFSET (188u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_STATUS0_OFFSET (190u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_NEG_BSLN_RST_CNT0_OFFSET (191u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_IDAC0_OFFSET (192u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_BSLN_EXT0_OFFSET (193u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_RAW0_OFFSET (194u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_BSLN0_OFFSET (196u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_DIFF0_OFFSET (198u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_STATUS0_OFFSET (200u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_NEG_BSLN_RST_CNT0_OFFSET (201u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_IDAC0_OFFSET (202u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_BSLN_EXT0_OFFSET (203u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_RAW0_OFFSET (204u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_BSLN0_OFFSET (206u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_DIFF0_OFFSET (208u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_STATUS0_OFFSET (210u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_OFFSET (211u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_IDAC0_OFFSET (212u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_BSLN_EXT0_OFFSET (213u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_RAW0_OFFSET (214u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_BSLN0_OFFSET (216u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_DIFF0_OFFSET (218u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_STATUS0_OFFSET (220u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_OFFSET (221u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_IDAC0_OFFSET (222u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_BSLN_EXT0_OFFSET (223u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_RAW0_OFFSET (224u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_BSLN0_OFFSET (226u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_DIFF0_OFFSET (228u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_STATUS0_OFFSET (230u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_OFFSET (231u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_IDAC0_OFFSET (232u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_BSLN_EXT0_OFFSET (233u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_RAW0_OFFSET (234u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_BSLN0_OFFSET (236u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_DIFF0_OFFSET (238u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_STATUS0_OFFSET (240u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_OFFSET (241u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_IDAC0_OFFSET (242u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_BSLN_EXT0_OFFSET (243u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_RAW0_OFFSET (244u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_BSLN0_OFFSET (246u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_DIFF0_OFFSET (248u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_STATUS0_OFFSET (250u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_OFFSET (251u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_IDAC0_OFFSET (252u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_BSLN_EXT0_OFFSET (253u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_X0_OFFSET (254u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_X0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_Y0_OFFSET (256u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_Y0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_Z0_OFFSET (258u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_Z0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ID0_OFFSET (260u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ID0_SIZE (2u) + +#else /* CY_CAPSENSE_TUNER_MW_VERSION >= 300 */ +#define CY_CAPSENSE_TUNER_CONFIG_ID_OFFSET (0u) +#define CY_CAPSENSE_TUNER_CONFIG_ID_SIZE (2u) + +#define CY_CAPSENSE_TUNER_TUNER_CMD_OFFSET (2u) +#define CY_CAPSENSE_TUNER_TUNER_CMD_SIZE (2u) + +#define CY_CAPSENSE_TUNER_SCAN_COUNTER_OFFSET (4u) +#define CY_CAPSENSE_TUNER_SCAN_COUNTER_SIZE (2u) + +#define CY_CAPSENSE_TUNER_TUNER_ST_OFFSET (6u) +#define CY_CAPSENSE_TUNER_TUNER_ST_SIZE (1u) + +#define CY_CAPSENSE_TUNER_INITDONE_OFFSET (7u) +#define CY_CAPSENSE_TUNER_INITDONE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_STATUS_OFFSET (8u) +#define CY_CAPSENSE_TUNER_STATUS_SIZE (4u) + +#define CY_CAPSENSE_TUNER_TIMESTAMPINTERVAL_OFFSET (12u) +#define CY_CAPSENSE_TUNER_TIMESTAMPINTERVAL_SIZE (4u) + +#define CY_CAPSENSE_TUNER_TIMESTAMP_OFFSET (16u) +#define CY_CAPSENSE_TUNER_TIMESTAMP_SIZE (4u) + +#define CY_CAPSENSE_TUNER_CSD_MOD_CLK_DIVIDER_OFFSET (20u) +#define CY_CAPSENSE_TUNER_CSD_MOD_CLK_DIVIDER_SIZE (1u) + +#define CY_CAPSENSE_TUNER_CSX_MOD_CLK_DIVIDER_OFFSET (21u) +#define CY_CAPSENSE_TUNER_CSX_MOD_CLK_DIVIDER_SIZE (1u) + +#define CY_CAPSENSE_TUNER_TUNER_CNT_OFFSET (22u) +#define CY_CAPSENSE_TUNER_TUNER_CNT_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_FINGER_CP_OFFSET (24u) +#define CY_CAPSENSE_TUNER_BUTTON0_FINGER_CP_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_SIGPFC_OFFSET (26u) +#define CY_CAPSENSE_TUNER_BUTTON0_SIGPFC_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_NUM_CONV_OFFSET (28u) +#define CY_CAPSENSE_TUNER_BUTTON0_NUM_CONV_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_MAX_RAW_COUNT_OFFSET (30u) +#define CY_CAPSENSE_TUNER_BUTTON0_MAX_RAW_COUNT_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_MAX_RAW_COUNT_OFFSET (32u) +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_MAX_RAW_COUNT_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_FINGER_TH_OFFSET (34u) +#define CY_CAPSENSE_TUNER_BUTTON0_FINGER_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_PROX_TOUCH_TH_OFFSET (36u) +#define CY_CAPSENSE_TUNER_BUTTON0_PROX_TOUCH_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_LOW_BSLN_RST_OFFSET (38u) +#define CY_CAPSENSE_TUNER_BUTTON0_LOW_BSLN_RST_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_TX_CLK_OFFSET (40u) +#define CY_CAPSENSE_TUNER_BUTTON0_TX_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_SNS_CLK_OFFSET (42u) +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_SNS_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_GESTURE_DETECTED_OFFSET (44u) +#define CY_CAPSENSE_TUNER_BUTTON0_GESTURE_DETECTED_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_GESTURE_DIRECTION_OFFSET (46u) +#define CY_CAPSENSE_TUNER_BUTTON0_GESTURE_DIRECTION_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_XDELTA_OFFSET (48u) +#define CY_CAPSENSE_TUNER_BUTTON0_XDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_YDELTA_OFFSET (50u) +#define CY_CAPSENSE_TUNER_BUTTON0_YDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_NOISE_TH_OFFSET (52u) +#define CY_CAPSENSE_TUNER_BUTTON0_NOISE_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_NNOISE_TH_OFFSET (54u) +#define CY_CAPSENSE_TUNER_BUTTON0_NNOISE_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_HYSTERESIS_OFFSET (56u) +#define CY_CAPSENSE_TUNER_BUTTON0_HYSTERESIS_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ON_DEBOUNCE_OFFSET (58u) +#define CY_CAPSENSE_TUNER_BUTTON0_ON_DEBOUNCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_TX_CLK_SOURCE_OFFSET (59u) +#define CY_CAPSENSE_TUNER_BUTTON0_TX_CLK_SOURCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD0_OFFSET (60u) +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD1_OFFSET (61u) +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD2_OFFSET (62u) +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_GAIN_INDEX_OFFSET (63u) +#define CY_CAPSENSE_TUNER_BUTTON0_IDAC_GAIN_INDEX_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD0_OFFSET (64u) +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD1_OFFSET (65u) +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD2_OFFSET (66u) +#define CY_CAPSENSE_TUNER_BUTTON0_ROW_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_REGULAR_IIR_BL_N_OFFSET (67u) +#define CY_CAPSENSE_TUNER_BUTTON0_REGULAR_IIR_BL_N_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_STATUS_OFFSET (68u) +#define CY_CAPSENSE_TUNER_BUTTON0_STATUS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_PTRPOSITION_OFFSET (72u) +#define CY_CAPSENSE_TUNER_BUTTON0_PTRPOSITION_SIZE (4u) + +#define CY_CAPSENSE_TUNER_BUTTON0_NUM_POSITIONS_OFFSET (76u) +#define CY_CAPSENSE_TUNER_BUTTON0_NUM_POSITIONS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_FINGER_CP_OFFSET (80u) +#define CY_CAPSENSE_TUNER_BUTTON1_FINGER_CP_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_SIGPFC_OFFSET (82u) +#define CY_CAPSENSE_TUNER_BUTTON1_SIGPFC_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_NUM_CONV_OFFSET (84u) +#define CY_CAPSENSE_TUNER_BUTTON1_NUM_CONV_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_MAX_RAW_COUNT_OFFSET (86u) +#define CY_CAPSENSE_TUNER_BUTTON1_MAX_RAW_COUNT_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_MAX_RAW_COUNT_OFFSET (88u) +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_MAX_RAW_COUNT_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_FINGER_TH_OFFSET (90u) +#define CY_CAPSENSE_TUNER_BUTTON1_FINGER_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_PROX_TOUCH_TH_OFFSET (92u) +#define CY_CAPSENSE_TUNER_BUTTON1_PROX_TOUCH_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_LOW_BSLN_RST_OFFSET (94u) +#define CY_CAPSENSE_TUNER_BUTTON1_LOW_BSLN_RST_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_TX_CLK_OFFSET (96u) +#define CY_CAPSENSE_TUNER_BUTTON1_TX_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_SNS_CLK_OFFSET (98u) +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_SNS_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_GESTURE_DETECTED_OFFSET (100u) +#define CY_CAPSENSE_TUNER_BUTTON1_GESTURE_DETECTED_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_GESTURE_DIRECTION_OFFSET (102u) +#define CY_CAPSENSE_TUNER_BUTTON1_GESTURE_DIRECTION_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_XDELTA_OFFSET (104u) +#define CY_CAPSENSE_TUNER_BUTTON1_XDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_YDELTA_OFFSET (106u) +#define CY_CAPSENSE_TUNER_BUTTON1_YDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_NOISE_TH_OFFSET (108u) +#define CY_CAPSENSE_TUNER_BUTTON1_NOISE_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_NNOISE_TH_OFFSET (110u) +#define CY_CAPSENSE_TUNER_BUTTON1_NNOISE_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_HYSTERESIS_OFFSET (112u) +#define CY_CAPSENSE_TUNER_BUTTON1_HYSTERESIS_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ON_DEBOUNCE_OFFSET (114u) +#define CY_CAPSENSE_TUNER_BUTTON1_ON_DEBOUNCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_TX_CLK_SOURCE_OFFSET (115u) +#define CY_CAPSENSE_TUNER_BUTTON1_TX_CLK_SOURCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD0_OFFSET (116u) +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD1_OFFSET (117u) +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD2_OFFSET (118u) +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_GAIN_INDEX_OFFSET (119u) +#define CY_CAPSENSE_TUNER_BUTTON1_IDAC_GAIN_INDEX_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD0_OFFSET (120u) +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD1_OFFSET (121u) +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD2_OFFSET (122u) +#define CY_CAPSENSE_TUNER_BUTTON1_ROW_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_REGULAR_IIR_BL_N_OFFSET (123u) +#define CY_CAPSENSE_TUNER_BUTTON1_REGULAR_IIR_BL_N_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_STATUS_OFFSET (124u) +#define CY_CAPSENSE_TUNER_BUTTON1_STATUS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_PTRPOSITION_OFFSET (128u) +#define CY_CAPSENSE_TUNER_BUTTON1_PTRPOSITION_SIZE (4u) + +#define CY_CAPSENSE_TUNER_BUTTON1_NUM_POSITIONS_OFFSET (132u) +#define CY_CAPSENSE_TUNER_BUTTON1_NUM_POSITIONS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_FINGER_CP_OFFSET (136u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_FINGER_CP_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SIGPFC_OFFSET (138u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SIGPFC_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_RESOLUTION_OFFSET (140u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_RESOLUTION_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_MAX_RAW_COUNT_OFFSET (142u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_MAX_RAW_COUNT_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_MAX_RAW_COUNT_OFFSET (144u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_MAX_RAW_COUNT_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_FINGER_TH_OFFSET (146u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_FINGER_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_PROX_TOUCH_TH_OFFSET (148u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_PROX_TOUCH_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_LOW_BSLN_RST_OFFSET (150u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_LOW_BSLN_RST_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS_CLK_OFFSET (152u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_SNS_CLK_OFFSET (154u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_SNS_CLK_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_GESTURE_DETECTED_OFFSET (156u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_GESTURE_DETECTED_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_GESTURE_DIRECTION_OFFSET (158u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_GESTURE_DIRECTION_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_XDELTA_OFFSET (160u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_XDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_YDELTA_OFFSET (162u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_YDELTA_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NOISE_TH_OFFSET (164u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NOISE_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NNOISE_TH_OFFSET (166u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NNOISE_TH_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_HYSTERESIS_OFFSET (168u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_HYSTERESIS_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ON_DEBOUNCE_OFFSET (170u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ON_DEBOUNCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS_CLK_SOURCE_OFFSET (171u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS_CLK_SOURCE_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD0_OFFSET (172u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD1_OFFSET (173u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD2_OFFSET (174u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_GAIN_INDEX_OFFSET (175u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_IDAC_GAIN_INDEX_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD0_OFFSET (176u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD1_OFFSET (177u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD1_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD2_OFFSET (178u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ROW_IDAC_MOD2_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_REGULAR_IIR_BL_N_OFFSET (179u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_REGULAR_IIR_BL_N_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_STATUS_OFFSET (180u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_STATUS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_PTRPOSITION_OFFSET (184u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_PTRPOSITION_SIZE (4u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NUM_POSITIONS_OFFSET (188u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_NUM_POSITIONS_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_RAW0_OFFSET (192u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_BSLN0_OFFSET (194u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_DIFF0_OFFSET (196u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_STATUS0_OFFSET (198u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_NEG_BSLN_RST_CNT0_OFFSET (199u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_IDAC0_OFFSET (200u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_BSLN_EXT0_OFFSET (201u) +#define CY_CAPSENSE_TUNER_BUTTON0_RX0_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_RAW0_OFFSET (202u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_BSLN0_OFFSET (204u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_DIFF0_OFFSET (206u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_STATUS0_OFFSET (208u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_NEG_BSLN_RST_CNT0_OFFSET (209u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_IDAC0_OFFSET (210u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_BSLN_EXT0_OFFSET (211u) +#define CY_CAPSENSE_TUNER_BUTTON1_RX0_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_RAW0_OFFSET (212u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_BSLN0_OFFSET (214u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_DIFF0_OFFSET (216u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_STATUS0_OFFSET (218u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_OFFSET (219u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_IDAC0_OFFSET (220u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_BSLN_EXT0_OFFSET (221u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS0_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_RAW0_OFFSET (222u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_BSLN0_OFFSET (224u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_DIFF0_OFFSET (226u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_STATUS0_OFFSET (228u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_OFFSET (229u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_IDAC0_OFFSET (230u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_BSLN_EXT0_OFFSET (231u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS1_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_RAW0_OFFSET (232u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_BSLN0_OFFSET (234u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_DIFF0_OFFSET (236u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_STATUS0_OFFSET (238u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_OFFSET (239u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_IDAC0_OFFSET (240u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_BSLN_EXT0_OFFSET (241u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS2_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_RAW0_OFFSET (242u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_BSLN0_OFFSET (244u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_DIFF0_OFFSET (246u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_STATUS0_OFFSET (248u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_OFFSET (249u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_IDAC0_OFFSET (250u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_BSLN_EXT0_OFFSET (251u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS3_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_RAW0_OFFSET (252u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_RAW0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_BSLN0_OFFSET (254u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_BSLN0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_DIFF0_OFFSET (256u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_DIFF0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_STATUS0_OFFSET (258u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_STATUS0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_OFFSET (259u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_NEG_BSLN_RST_CNT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_IDAC0_OFFSET (260u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_IDAC0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_BSLN_EXT0_OFFSET (261u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_SNS4_BSLN_EXT0_SIZE (1u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_X0_OFFSET (262u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_X0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_Y0_OFFSET (264u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_Y0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_Z0_OFFSET (266u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_Z0_SIZE (2u) + +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ID0_OFFSET (268u) +#define CY_CAPSENSE_TUNER_LINEARSLIDER0_ID0_SIZE (2u) + +#endif + +#endif /* CYCFG_CAPSENSE_TUNER_REGMAP_H */ + +/* [] END OF FILE */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_clocks.c b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_clocks.c new file mode 100644 index 00000000000000..d8298c696d8dde --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_clocks.c @@ -0,0 +1,69 @@ +/******************************************************************************* + * File Name: cycfg_clocks.c + * + * Description: + * Clock configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include "cycfg_clocks.h" + +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t peri_0_div_16_15_obj = { + .type = CYHAL_RSC_CLOCK, + .block_num = peri_0_div_16_15_HW, + .channel_num = peri_0_div_16_15_NUM, +}; +const cyhal_resource_inst_t CYBSP_CSD_CLK_DIV_obj = { + .type = CYHAL_RSC_CLOCK, + .block_num = CYBSP_CSD_CLK_DIV_HW, + .channel_num = CYBSP_CSD_CLK_DIV_NUM, +}; +const cyhal_resource_inst_t CYBSP_TRACE_CLK_DIV_obj = { + .type = CYHAL_RSC_CLOCK, + .block_num = CYBSP_TRACE_CLK_DIV_HW, + .channel_num = CYBSP_TRACE_CLK_DIV_NUM, +}; +#endif // defined (CY_USING_HAL) + +void init_cycfg_clocks(void) +{ + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_16_BIT, 15U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_16_BIT, 15U, 0U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_16_BIT, 15U); + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 0U, 0U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 0U); + Cy_SysClk_PeriphDisableDivider(CY_SYSCLK_DIV_8_BIT, 7U); + Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_8_BIT, 7U, 0U); + Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_8_BIT, 7U); +} + +void reserve_cycfg_clocks(void) +{ +#if defined(CY_USING_HAL) + cyhal_hwmgr_reserve(&peri_0_div_16_15_obj); + cyhal_hwmgr_reserve(&CYBSP_CSD_CLK_DIV_obj); + cyhal_hwmgr_reserve(&CYBSP_TRACE_CLK_DIV_obj); +#endif // defined (CY_USING_HAL) +} diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_clocks.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_clocks.h new file mode 100644 index 00000000000000..8d5d6cf34f40b6 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_clocks.h @@ -0,0 +1,69 @@ +/******************************************************************************* + * File Name: cycfg_clocks.h + * + * Description: + * Clock configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#if !defined(CYCFG_CLOCKS_H) +#define CYCFG_CLOCKS_H + +#include "cy_sysclk.h" +#include "cycfg_notices.h" +#if defined(CY_USING_HAL) +#include "cyhal_hwmgr.h" +#endif // defined (CY_USING_HAL) + +#if defined(__cplusplus) +extern "C" { +#endif + +#define peri_0_div_16_15_ENABLED 1U +#define peri_0_div_16_15_HW CY_SYSCLK_DIV_16_BIT +#define peri_0_div_16_15_NUM 15U +#define CYBSP_CSD_CLK_DIV_ENABLED 1U +#define CYBSP_CS_CLK_DIV_ENABLED CYBSP_CSD_CLK_DIV_ENABLED +#define CYBSP_CSD_CLK_DIV_HW CY_SYSCLK_DIV_8_BIT +#define CYBSP_CS_CLK_DIV_HW CYBSP_CSD_CLK_DIV_HW +#define CYBSP_CSD_CLK_DIV_NUM 0U +#define CYBSP_CS_CLK_DIV_NUM CYBSP_CSD_CLK_DIV_NUM +#define CYBSP_TRACE_CLK_DIV_ENABLED 1U +#define CYBSP_TRACE_CLK_DIV_HW CY_SYSCLK_DIV_8_BIT +#define CYBSP_TRACE_CLK_DIV_NUM 7U + +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t peri_0_div_16_15_obj; +extern const cyhal_resource_inst_t CYBSP_CSD_CLK_DIV_obj; +#define CYBSP_CS_CLK_DIV_obj CYBSP_CSD_CLK_DIV_obj +extern const cyhal_resource_inst_t CYBSP_TRACE_CLK_DIV_obj; +#endif // defined (CY_USING_HAL) + +void init_cycfg_clocks(void); +void reserve_cycfg_clocks(void); + +#if defined(__cplusplus) +} +#endif + +#endif /* CYCFG_CLOCKS_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_connectivity_bt.c b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_connectivity_bt.c new file mode 100644 index 00000000000000..8c6062f3adaccf --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_connectivity_bt.c @@ -0,0 +1,29 @@ +/******************************************************************************* + * File Name: cycfg_connectivity_bt.c + * + * Description: + * Connectivity BT configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include "cycfg_connectivity_bt.h" diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_connectivity_bt.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_connectivity_bt.h new file mode 100644 index 00000000000000..24fbaed1013b81 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_connectivity_bt.h @@ -0,0 +1,52 @@ +/******************************************************************************* + * File Name: cycfg_connectivity_bt.h + * + * Description: + * Connectivity BT configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#if !defined(CYCFG_CONNECTIVITY_BT_H) +#define CYCFG_CONNECTIVITY_BT_H + +#include "cycfg_notices.h" +#include "cycfg_pins.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define bt_0_power_0_ENABLED 1U +#define CYCFG_BT_LP_ENABLED (1u) +#define CYCFG_BT_WAKE_EVENT_ACTIVE_LOW (0) +#define CYCFG_BT_WAKE_EVENT_ACTIVE_HIGH (1) +#define CYCFG_BT_HOST_WAKE_GPIO CYBSP_BT_HOST_WAKE +#define CYCFG_BT_HOST_WAKE_IRQ_EVENT CYBT_WAKE_ACTIVE_LOW +#define CYCFG_BT_DEV_WAKE_GPIO CYBSP_BT_DEVICE_WAKE +#define CYCFG_BT_DEV_WAKE_POLARITY CYBT_WAKE_ACTIVE_LOW + +#if defined(__cplusplus) +} +#endif + +#endif /* CYCFG_CONNECTIVITY_BT_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_notices.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_notices.h new file mode 100644 index 00000000000000..ac7067c526b175 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_notices.h @@ -0,0 +1,51 @@ +/******************************************************************************* + * File Name: cycfg_notices.h + * + * Description: + * Contains warnings and errors that occurred while generating code for the + * design. + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#if !defined(CYCFG_NOTICES_H) +#define CYCFG_NOTICES_H + +#ifdef CY_SUPPORTS_DEVICE_VALIDATION +#ifndef CY8C624ABZI_S2D44 +#error \ + "Unexpected MPN; expected DEVICE:=CY8C624ABZI-S2D44. There may be an inconsistency between the *.modus file and the makefile target configuration device sets." +#endif +#endif + +#ifdef CY_SUPPORTS_COMPLETE_DEVICE_VALIDATION +#ifndef CY8C624ABZI_S2D44 +#error \ + "Unexpected MPN; expected DEVICE:=CY8C624ABZI-S2D44, ADDITIONAL_DEVICES:=CYW43012C0WKWBG. There may be an inconsistency between the *.modus file and the makefile target configuration device sets." +#endif +#ifndef CYW43012C0WKWBG +#error \ + "Unexpected MPN; expected DEVICE:=CY8C624ABZI-S2D44, ADDITIONAL_DEVICES:=CYW43012C0WKWBG. There may be an inconsistency between the *.modus file and the makefile target configuration device sets." +#endif +#endif + +#endif /* CYCFG_NOTICES_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_peripherals.c b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_peripherals.c new file mode 100644 index 00000000000000..f46d17a4dffcad --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_peripherals.c @@ -0,0 +1,38 @@ +/******************************************************************************* + * File Name: cycfg_peripherals.c + * + * Description: + * Peripheral Hardware Block configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include "cycfg_peripherals.h" + +cy_stc_csd_context_t cy_csd_0_context = { + .lockKey = CY_CSD_NONE_KEY, +}; + +void init_cycfg_peripherals(void) +{ + Cy_SysClk_PeriphAssignDivider(PCLK_CSD_CLOCK, CY_SYSCLK_DIV_8_BIT, 0U); +} diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_peripherals.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_peripherals.h new file mode 100644 index 00000000000000..19c98a592ca11e --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_peripherals.h @@ -0,0 +1,85 @@ +/******************************************************************************* + * File Name: cycfg_peripherals.h + * + * Description: + * Peripheral Hardware Block configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#if !defined(CYCFG_PERIPHERALS_H) +#define CYCFG_PERIPHERALS_H + +#include "cy_csd.h" +#include "cy_sysclk.h" +#include "cycfg_notices.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CYBSP_CSD_ENABLED 1U +#define CY_CAPSENSE_CORE 4u +#define CY_CAPSENSE_CPU_CLK 100000000u +#define CY_CAPSENSE_PERI_CLK 100000000u +#define CY_CAPSENSE_VDDA_MV 3300u +#define CY_CAPSENSE_PERI_DIV_TYPE CY_SYSCLK_DIV_8_BIT +#define CY_CAPSENSE_PERI_DIV_INDEX 0u +#define Cmod_PORT GPIO_PRT7 +#define CintA_PORT GPIO_PRT7 +#define CintB_PORT GPIO_PRT7 +#define Button0_Rx0_PORT GPIO_PRT1 +#define Button0_Tx_PORT GPIO_PRT8 +#define Button1_Rx0_PORT GPIO_PRT1 +#define Button1_Tx_PORT GPIO_PRT8 +#define LinearSlider0_Sns0_PORT GPIO_PRT8 +#define LinearSlider0_Sns1_PORT GPIO_PRT8 +#define LinearSlider0_Sns2_PORT GPIO_PRT8 +#define LinearSlider0_Sns3_PORT GPIO_PRT8 +#define LinearSlider0_Sns4_PORT GPIO_PRT8 +#define Cmod_PIN 7u +#define CintA_PIN 1u +#define CintB_PIN 2u +#define Button0_Rx0_PIN 0u +#define Button0_Tx_PIN 1u +#define Button1_Rx0_PIN 0u +#define Button1_Tx_PIN 2u +#define LinearSlider0_Sns0_PIN 3u +#define LinearSlider0_Sns1_PIN 4u +#define LinearSlider0_Sns2_PIN 5u +#define LinearSlider0_Sns3_PIN 6u +#define LinearSlider0_Sns4_PIN 7u +#define Cmod_PORT_NUM 7u +#define CintA_PORT_NUM 7u +#define CintB_PORT_NUM 7u +#define CYBSP_CSD_HW CSD0 +#define CYBSP_CSD_IRQ csd_interrupt_IRQn + +extern cy_stc_csd_context_t cy_csd_0_context; + +void init_cycfg_peripherals(void); + +#if defined(__cplusplus) +} +#endif + +#endif /* CYCFG_PERIPHERALS_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_pins.c b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_pins.c new file mode 100644 index 00000000000000..10c5ff5a8414e4 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_pins.c @@ -0,0 +1,411 @@ +/******************************************************************************* + * File Name: cycfg_pins.c + * + * Description: + * Pin configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include "cycfg_pins.h" + +const cy_stc_gpio_pin_config_t CYBSP_WCO_IN_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_WCO_IN_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_WCO_IN_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_WCO_IN_PORT_NUM, + .channel_num = CYBSP_WCO_IN_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_WCO_OUT_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_WCO_OUT_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_WCO_OUT_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_WCO_OUT_PORT_NUM, + .channel_num = CYBSP_WCO_OUT_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CSD_RX_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CSD_RX_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CSD_RX_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CSD_RX_PORT_NUM, + .channel_num = CYBSP_CSD_RX_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_SWO_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_STRONG_IN_OFF, + .hsiom = CYBSP_SWO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_SWO_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_SWO_PORT_NUM, + .channel_num = CYBSP_SWO_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_SWDIO_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLUP, + .hsiom = CYBSP_SWDIO_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_SWDIO_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_SWDIO_PORT_NUM, + .channel_num = CYBSP_SWDIO_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_SWDCK_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_PULLDOWN, + .hsiom = CYBSP_SWDCK_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_SWDCK_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_SWDCK_PORT_NUM, + .channel_num = CYBSP_SWDCK_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CINA_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CINA_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CINA_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CINA_PORT_NUM, + .channel_num = CYBSP_CINA_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CINB_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CINB_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CINB_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CINB_PORT_NUM, + .channel_num = CYBSP_CINB_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CMOD_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CMOD_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CMOD_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CMOD_PORT_NUM, + .channel_num = CYBSP_CMOD_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CSD_BTN0_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CSD_BTN0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CSD_BTN0_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CSD_BTN0_PORT_NUM, + .channel_num = CYBSP_CSD_BTN0_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CSD_BTN1_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CSD_BTN1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CSD_BTN1_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CSD_BTN1_PORT_NUM, + .channel_num = CYBSP_CSD_BTN1_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD0_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CSD_SLD0_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CSD_SLD0_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CSD_SLD0_PORT_NUM, + .channel_num = CYBSP_CSD_SLD0_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD1_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CSD_SLD1_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CSD_SLD1_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CSD_SLD1_PORT_NUM, + .channel_num = CYBSP_CSD_SLD1_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD2_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CSD_SLD2_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CSD_SLD2_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CSD_SLD2_PORT_NUM, + .channel_num = CYBSP_CSD_SLD2_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD3_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CSD_SLD3_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CSD_SLD3_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CSD_SLD3_PORT_NUM, + .channel_num = CYBSP_CSD_SLD3_PIN, +}; +#endif // defined (CY_USING_HAL) +const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD4_config = { + .outVal = 1, + .driveMode = CY_GPIO_DM_ANALOG, + .hsiom = CYBSP_CSD_SLD4_HSIOM, + .intEdge = CY_GPIO_INTR_DISABLE, + .intMask = 0UL, + .vtrip = CY_GPIO_VTRIP_CMOS, + .slewRate = CY_GPIO_SLEW_FAST, + .driveSel = CY_GPIO_DRIVE_1_2, + .vregEn = 0UL, + .ibufMode = 0UL, + .vtripSel = 0UL, + .vrefSel = 0UL, + .vohSel = 0UL, +}; +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t CYBSP_CSD_SLD4_obj = { + .type = CYHAL_RSC_GPIO, + .block_num = CYBSP_CSD_SLD4_PORT_NUM, + .channel_num = CYBSP_CSD_SLD4_PIN, +}; +#endif // defined (CY_USING_HAL) + +void init_cycfg_pins(void) +{ + Cy_GPIO_Pin_Init(CYBSP_SWO_PORT, CYBSP_SWO_PIN, &CYBSP_SWO_config); + Cy_GPIO_Pin_Init(CYBSP_SWDIO_PORT, CYBSP_SWDIO_PIN, &CYBSP_SWDIO_config); + Cy_GPIO_Pin_Init(CYBSP_SWDCK_PORT, CYBSP_SWDCK_PIN, &CYBSP_SWDCK_config); +} + +void reserve_cycfg_pins(void) +{ +#if defined(CY_USING_HAL) + cyhal_hwmgr_reserve(&CYBSP_WCO_IN_obj); + cyhal_hwmgr_reserve(&CYBSP_WCO_OUT_obj); + cyhal_hwmgr_reserve(&CYBSP_CSD_RX_obj); + cyhal_hwmgr_reserve(&CYBSP_SWO_obj); + cyhal_hwmgr_reserve(&CYBSP_SWDIO_obj); + cyhal_hwmgr_reserve(&CYBSP_SWDCK_obj); + cyhal_hwmgr_reserve(&CYBSP_CINA_obj); + cyhal_hwmgr_reserve(&CYBSP_CINB_obj); + cyhal_hwmgr_reserve(&CYBSP_CMOD_obj); + cyhal_hwmgr_reserve(&CYBSP_CSD_BTN0_obj); + cyhal_hwmgr_reserve(&CYBSP_CSD_BTN1_obj); + cyhal_hwmgr_reserve(&CYBSP_CSD_SLD0_obj); + cyhal_hwmgr_reserve(&CYBSP_CSD_SLD1_obj); + cyhal_hwmgr_reserve(&CYBSP_CSD_SLD2_obj); + cyhal_hwmgr_reserve(&CYBSP_CSD_SLD3_obj); + cyhal_hwmgr_reserve(&CYBSP_CSD_SLD4_obj); +#endif // defined (CY_USING_HAL) +} diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_pins.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_pins.h new file mode 100644 index 00000000000000..6614740f3e5646 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_pins.h @@ -0,0 +1,674 @@ +/******************************************************************************* + * File Name: cycfg_pins.h + * + * Description: + * Pin configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#if !defined(CYCFG_PINS_H) +#define CYCFG_PINS_H + +#include "cy_gpio.h" +#include "cycfg_notices.h" +#include "cycfg_routing.h" +#if defined(CY_USING_HAL) +#include "cyhal_hwmgr.h" +#endif // defined (CY_USING_HAL) + +#if defined(__cplusplus) +extern "C" { +#endif + +#define CYBSP_WCO_IN_ENABLED 1U +#define CYBSP_WCO_IN_PORT GPIO_PRT0 +#define CYBSP_WCO_IN_PORT_NUM 0U +#define CYBSP_WCO_IN_PIN 0U +#define CYBSP_WCO_IN_NUM 0U +#define CYBSP_WCO_IN_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_WCO_IN_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_0_HSIOM +#define ioss_0_port_0_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_WCO_IN_HSIOM ioss_0_port_0_pin_0_HSIOM +#define CYBSP_WCO_IN_IRQ ioss_interrupts_gpio_0_IRQn +#if defined(CY_USING_HAL) +#define CYBSP_WCO_IN_HAL_PORT_PIN P0_0 +#define CYBSP_WCO_IN P0_0 +#define CYBSP_WCO_IN_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_WCO_IN_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_WCO_IN_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#endif // defined (CY_USING_HAL) +#define CYBSP_WCO_OUT_ENABLED 1U +#define CYBSP_WCO_OUT_PORT GPIO_PRT0 +#define CYBSP_WCO_OUT_PORT_NUM 0U +#define CYBSP_WCO_OUT_PIN 1U +#define CYBSP_WCO_OUT_NUM 1U +#define CYBSP_WCO_OUT_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_WCO_OUT_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_0_pin_1_HSIOM +#define ioss_0_port_0_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_WCO_OUT_HSIOM ioss_0_port_0_pin_1_HSIOM +#define CYBSP_WCO_OUT_IRQ ioss_interrupts_gpio_0_IRQn +#if defined(CY_USING_HAL) +#define CYBSP_WCO_OUT_HAL_PORT_PIN P0_1 +#define CYBSP_WCO_OUT P0_1 +#define CYBSP_WCO_OUT_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_WCO_OUT_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_WCO_OUT_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_SW2 (P0_4) +#define CYBSP_USER_BTN1 CYBSP_SW2 +#define CYBSP_USER_BTN CYBSP_SW2 +#define CYBSP_LED_RGB_GREEN (P0_5) +#define CYBSP_USER_LED4 CYBSP_LED_RGB_GREEN +#define CYBSP_A0 (P10_0) +#define CYBSP_J2_1 CYBSP_A0 +#define CYBSP_A1 (P10_1) +#define CYBSP_J2_3 CYBSP_A1 +#define CYBSP_A2 (P10_2) +#define CYBSP_J2_5 CYBSP_A2 +#define CYBSP_A3 (P10_3) +#define CYBSP_J2_7 CYBSP_A3 +#define CYBSP_A4 (P10_4) +#define CYBSP_J2_9 CYBSP_A4 +#define CYBSP_A5 (P10_5) +#define CYBSP_J2_11 CYBSP_A5 +#define CYBSP_A6 (P10_6) +#define CYBSP_J2_13 CYBSP_A6 +#define CYBSP_POT CYBSP_A6 +#define CYBSP_A7 (P10_7) +#define CYBSP_J2_15 CYBSP_A7 +#define CYBSP_QSPI_FRAM_SSEL (P11_0) +#define CYBSP_LED9 (P11_1) +#define CYBSP_USER_LED2 CYBSP_LED9 +#define CYBSP_QSPI_SS (P11_2) +#define CYBSP_QSPI_FLASH_SSEL CYBSP_QSPI_SS +#define CYBSP_QSPI_D3 (P11_3) +#define CYBSP_QSPI_D2 (P11_4) +#define CYBSP_QSPI_D1 (P11_5) +#define CYBSP_QSPI_D0 (P11_6) +#define CYBSP_QSPI_SCK (P11_7) +#define CYBSP_SPI_MOSI (P12_0) +#define CYBSP_D11 CYBSP_SPI_MOSI +#define CYBSP_SPI_MISO (P12_1) +#define CYBSP_D12 CYBSP_SPI_MISO +#define CYBSP_SPI_CLK (P12_2) +#define CYBSP_D13 CYBSP_SPI_CLK +#define CYBSP_SPI_CS (P12_3) +#define CYBSP_D10 CYBSP_SPI_CS +#define CYBSP_SDHC_CMD (P12_4) +#define CYBSP_SDHC_CLK (P12_5) +#define CYBSP_SDHC_IO0 (P13_0) +#define CYBSP_SDHC_IO1 (P13_1) +#define CYBSP_SDHC_IO2 (P13_2) +#define CYBSP_SDHC_IO3 (P13_3) +#define CYBSP_SDHC_DETECT (P13_7) +#endif // defined (CY_USING_HAL) +#define CYBSP_CSD_RX_ENABLED 1U +#define CYBSP_CS_RX_ENABLED CYBSP_CSD_RX_ENABLED +#define CYBSP_CS_TX_RX_ENABLED CYBSP_CSD_RX_ENABLED +#define CYBSP_CSD_RX_PORT GPIO_PRT1 +#define CYBSP_CS_RX_PORT CYBSP_CSD_RX_PORT +#define CYBSP_CS_TX_RX_PORT CYBSP_CSD_RX_PORT +#define CYBSP_CSD_RX_PORT_NUM 1U +#define CYBSP_CS_RX_PORT_NUM CYBSP_CSD_RX_PORT_NUM +#define CYBSP_CS_TX_RX_PORT_NUM CYBSP_CSD_RX_PORT_NUM +#define CYBSP_CSD_RX_PIN 0U +#define CYBSP_CS_RX_PIN CYBSP_CSD_RX_PIN +#define CYBSP_CS_TX_RX_PIN CYBSP_CSD_RX_PIN +#define CYBSP_CSD_RX_NUM 0U +#define CYBSP_CS_RX_NUM CYBSP_CSD_RX_NUM +#define CYBSP_CS_TX_RX_NUM CYBSP_CSD_RX_NUM +#define CYBSP_CSD_RX_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CS_RX_DRIVEMODE CYBSP_CSD_RX_DRIVEMODE +#define CYBSP_CS_TX_RX_DRIVEMODE CYBSP_CSD_RX_DRIVEMODE +#define CYBSP_CSD_RX_INIT_DRIVESTATE 1 +#define CYBSP_CS_RX_INIT_DRIVESTATE CYBSP_CSD_RX_INIT_DRIVESTATE +#define CYBSP_CS_TX_RX_INIT_DRIVESTATE CYBSP_CSD_RX_INIT_DRIVESTATE +#ifndef ioss_0_port_1_pin_0_HSIOM +#define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CSD_RX_HSIOM ioss_0_port_1_pin_0_HSIOM +#define CYBSP_CS_RX_HSIOM CYBSP_CSD_RX_HSIOM +#define CYBSP_CS_TX_RX_HSIOM CYBSP_CSD_RX_HSIOM +#define CYBSP_CSD_RX_IRQ ioss_interrupts_gpio_1_IRQn +#define CYBSP_CS_RX_IRQ CYBSP_CSD_RX_IRQ +#define CYBSP_CS_TX_RX_IRQ CYBSP_CSD_RX_IRQ +#if defined(CY_USING_HAL) +#define CYBSP_CSD_RX_HAL_PORT_PIN P1_0 +#define CYBSP_CS_RX_HAL_PORT_PIN CYBSP_CSD_RX_HAL_PORT_PIN +#define CYBSP_CS_TX_RX_HAL_PORT_PIN CYBSP_CSD_RX_HAL_PORT_PIN +#define CYBSP_CSD_RX P1_0 +#define CYBSP_CS_RX CYBSP_CSD_RX +#define CYBSP_CS_TX_RX CYBSP_CSD_RX +#define CYBSP_CSD_RX_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CS_RX_HAL_IRQ CYBSP_CSD_RX_HAL_IRQ +#define CYBSP_CS_TX_RX_HAL_IRQ CYBSP_CSD_RX_HAL_IRQ +#define CYBSP_CSD_RX_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CS_RX_HAL_DIR CYBSP_CSD_RX_HAL_DIR +#define CYBSP_CS_TX_RX_HAL_DIR CYBSP_CSD_RX_HAL_DIR +#define CYBSP_CSD_RX_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_CS_RX_HAL_DRIVEMODE CYBSP_CSD_RX_HAL_DRIVEMODE +#define CYBSP_CS_TX_RX_HAL_DRIVEMODE CYBSP_CSD_RX_HAL_DRIVEMODE +#define CYBSP_LED_RGB_RED (P1_1) +#define CYBSP_USER_LED3 CYBSP_LED_RGB_RED +#define CYBSP_SW4 (P1_4) +#define CYBSP_USER_BTN2 CYBSP_SW4 +#define CYBSP_LED8 (P1_5) +#define CYBSP_USER_LED1 CYBSP_LED8 +#define CYBSP_USER_LED CYBSP_LED8 +#define CYBSP_WIFI_SDIO_D0 (P2_0) +#define CYBSP_WIFI_SDIO_D1 (P2_1) +#define CYBSP_WIFI_SDIO_D2 (P2_2) +#define CYBSP_WIFI_SDIO_D3 (P2_3) +#define CYBSP_WIFI_SDIO_CMD (P2_4) +#define CYBSP_WIFI_SDIO_CLK (P2_5) +#define CYBSP_WIFI_WL_REG_ON (P2_6) +#define CYBSP_BT_UART_RX (P3_0) +#define CYBSP_BT_UART_TX (P3_1) +#define CYBSP_BT_UART_RTS (P3_2) +#define CYBSP_BT_UART_CTS (P3_3) +#define CYBSP_BT_POWER (P3_4) +#define CYBSP_BT_DEVICE_WAKE (P3_5) +#define CYBSP_BT_HOST_WAKE (P4_0) +#define CYBSP_WIFI_HOST_WAKE (P4_1) +#define CYBSP_DEBUG_UART_RX (P5_0) +#define CYBSP_D0 CYBSP_DEBUG_UART_RX +#define CYBSP_DEBUG_UART_TX (P5_1) +#define CYBSP_D1 CYBSP_DEBUG_UART_TX +#define CYBSP_DEBUG_UART_RTS (P5_2) +#define CYBSP_D2 CYBSP_DEBUG_UART_RTS +#define CYBSP_DEBUG_UART_CTS (P5_3) +#define CYBSP_D3 CYBSP_DEBUG_UART_CTS +#define CYBSP_D4 (P5_4) +#define CYBSP_D5 (P5_5) +#define CYBSP_D6 (P5_6) +#define CYBSP_D7 (P5_7) +#define CYBSP_I2C_SCL (P6_0) +#define CYBSP_D15 CYBSP_I2C_SCL +#define CYBSP_I2C_SDA (P6_1) +#define CYBSP_D14 CYBSP_I2C_SDA +#endif // defined (CY_USING_HAL) +#define CYBSP_SWO_ENABLED 1U +#define CYBSP_SWO_PORT GPIO_PRT6 +#define CYBSP_SWO_PORT_NUM 6U +#define CYBSP_SWO_PIN 4U +#define CYBSP_SWO_NUM 4U +#define CYBSP_SWO_DRIVEMODE CY_GPIO_DM_STRONG_IN_OFF +#define CYBSP_SWO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_4_HSIOM +#define ioss_0_port_6_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_SWO_HSIOM ioss_0_port_6_pin_4_HSIOM +#define CYBSP_SWO_IRQ ioss_interrupts_gpio_6_IRQn +#if defined(CY_USING_HAL) +#define CYBSP_SWO_HAL_PORT_PIN P6_4 +#define CYBSP_SWO P6_4 +#define CYBSP_SWO_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_SWO_HAL_DIR CYHAL_GPIO_DIR_OUTPUT +#define CYBSP_SWO_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_STRONG +#endif // defined (CY_USING_HAL) +#define CYBSP_SWDIO_ENABLED 1U +#define CYBSP_SWDIO_PORT GPIO_PRT6 +#define CYBSP_SWDIO_PORT_NUM 6U +#define CYBSP_SWDIO_PIN 6U +#define CYBSP_SWDIO_NUM 6U +#define CYBSP_SWDIO_DRIVEMODE CY_GPIO_DM_PULLUP +#define CYBSP_SWDIO_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_6_HSIOM +#define ioss_0_port_6_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_SWDIO_HSIOM ioss_0_port_6_pin_6_HSIOM +#define CYBSP_SWDIO_IRQ ioss_interrupts_gpio_6_IRQn +#if defined(CY_USING_HAL) +#define CYBSP_SWDIO_HAL_PORT_PIN P6_6 +#define CYBSP_SWDIO P6_6 +#define CYBSP_SWDIO_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_SWDIO_HAL_DIR CYHAL_GPIO_DIR_BIDIRECTIONAL +#define CYBSP_SWDIO_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_PULLUP +#endif // defined (CY_USING_HAL) +#define CYBSP_SWDCK_ENABLED 1U +#define CYBSP_SWDCK_PORT GPIO_PRT6 +#define CYBSP_SWDCK_PORT_NUM 6U +#define CYBSP_SWDCK_PIN 7U +#define CYBSP_SWDCK_NUM 7U +#define CYBSP_SWDCK_DRIVEMODE CY_GPIO_DM_PULLDOWN +#define CYBSP_SWDCK_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_6_pin_7_HSIOM +#define ioss_0_port_6_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_SWDCK_HSIOM ioss_0_port_6_pin_7_HSIOM +#define CYBSP_SWDCK_IRQ ioss_interrupts_gpio_6_IRQn +#if defined(CY_USING_HAL) +#define CYBSP_SWDCK_HAL_PORT_PIN P6_7 +#define CYBSP_SWDCK P6_7 +#define CYBSP_SWDCK_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_SWDCK_HAL_DIR CYHAL_GPIO_DIR_BIDIRECTIONAL +#define CYBSP_SWDCK_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_PULLDOWN +#define CYBSP_TRACE_CLK (P7_0) +#endif // defined (CY_USING_HAL) +#define CYBSP_CINA_ENABLED 1U +#define CYBSP_CINA_PORT GPIO_PRT7 +#define CYBSP_CINA_PORT_NUM 7U +#define CYBSP_CINA_PIN 1U +#define CYBSP_CINA_NUM 1U +#define CYBSP_CINA_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CINA_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_1_HSIOM +#define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CINA_HSIOM ioss_0_port_7_pin_1_HSIOM +#define CYBSP_CINA_IRQ ioss_interrupts_gpio_7_IRQn +#if defined(CY_USING_HAL) +#define CYBSP_CINA_HAL_PORT_PIN P7_1 +#define CYBSP_CINA P7_1 +#define CYBSP_CINA_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CINA_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CINA_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#endif // defined (CY_USING_HAL) +#define CYBSP_CINB_ENABLED 1U +#define CYBSP_CINB_PORT GPIO_PRT7 +#define CYBSP_CINB_PORT_NUM 7U +#define CYBSP_CINB_PIN 2U +#define CYBSP_CINB_NUM 2U +#define CYBSP_CINB_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CINB_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_2_HSIOM +#define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CINB_HSIOM ioss_0_port_7_pin_2_HSIOM +#define CYBSP_CINB_IRQ ioss_interrupts_gpio_7_IRQn +#if defined(CY_USING_HAL) +#define CYBSP_CINB_HAL_PORT_PIN P7_2 +#define CYBSP_CINB P7_2 +#define CYBSP_CINB_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CINB_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CINB_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_LED_RGB_BLUE (P7_3) +#define CYBSP_USER_LED5 CYBSP_LED_RGB_BLUE +#define CYBSP_TRACE_DATA3 (P7_4) +#define CYBSP_D8 (P7_5) +#define CYBSP_TRACE_DATA2 CYBSP_D8 +#define CYBSP_D9 (P7_6) +#define CYBSP_TRACE_DATA1 CYBSP_D9 +#endif // defined (CY_USING_HAL) +#define CYBSP_CMOD_ENABLED 1U +#define CYBSP_CMOD_PORT GPIO_PRT7 +#define CYBSP_CMOD_PORT_NUM 7U +#define CYBSP_CMOD_PIN 7U +#define CYBSP_CMOD_NUM 7U +#define CYBSP_CMOD_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CMOD_INIT_DRIVESTATE 1 +#ifndef ioss_0_port_7_pin_7_HSIOM +#define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CMOD_HSIOM ioss_0_port_7_pin_7_HSIOM +#define CYBSP_CMOD_IRQ ioss_interrupts_gpio_7_IRQn +#if defined(CY_USING_HAL) +#define CYBSP_CMOD_HAL_PORT_PIN P7_7 +#define CYBSP_CMOD P7_7 +#define CYBSP_CMOD_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CMOD_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CMOD_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#endif // defined (CY_USING_HAL) +#define CYBSP_CSD_BTN0_ENABLED 1U +#define CYBSP_CS_BTN0_ENABLED CYBSP_CSD_BTN0_ENABLED +#define CYBSP_CSD_BTN0_PORT GPIO_PRT8 +#define CYBSP_CS_BTN0_PORT CYBSP_CSD_BTN0_PORT +#define CYBSP_CSD_BTN0_PORT_NUM 8U +#define CYBSP_CS_BTN0_PORT_NUM CYBSP_CSD_BTN0_PORT_NUM +#define CYBSP_CSD_BTN0_PIN 1U +#define CYBSP_CS_BTN0_PIN CYBSP_CSD_BTN0_PIN +#define CYBSP_CSD_BTN0_NUM 1U +#define CYBSP_CS_BTN0_NUM CYBSP_CSD_BTN0_NUM +#define CYBSP_CSD_BTN0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CS_BTN0_DRIVEMODE CYBSP_CSD_BTN0_DRIVEMODE +#define CYBSP_CSD_BTN0_INIT_DRIVESTATE 1 +#define CYBSP_CS_BTN0_INIT_DRIVESTATE CYBSP_CSD_BTN0_INIT_DRIVESTATE +#ifndef ioss_0_port_8_pin_1_HSIOM +#define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CSD_BTN0_HSIOM ioss_0_port_8_pin_1_HSIOM +#define CYBSP_CS_BTN0_HSIOM CYBSP_CSD_BTN0_HSIOM +#define CYBSP_CSD_BTN0_IRQ ioss_interrupts_gpio_8_IRQn +#define CYBSP_CS_BTN0_IRQ CYBSP_CSD_BTN0_IRQ +#if defined(CY_USING_HAL) +#define CYBSP_CSD_BTN0_HAL_PORT_PIN P8_1 +#define CYBSP_CS_BTN0_HAL_PORT_PIN CYBSP_CSD_BTN0_HAL_PORT_PIN +#define CYBSP_CSD_BTN0 P8_1 +#define CYBSP_CS_BTN0 CYBSP_CSD_BTN0 +#define CYBSP_CSD_BTN0_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CS_BTN0_HAL_IRQ CYBSP_CSD_BTN0_HAL_IRQ +#define CYBSP_CSD_BTN0_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CS_BTN0_HAL_DIR CYBSP_CSD_BTN0_HAL_DIR +#define CYBSP_CSD_BTN0_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_CS_BTN0_HAL_DRIVEMODE CYBSP_CSD_BTN0_HAL_DRIVEMODE +#endif // defined (CY_USING_HAL) +#define CYBSP_CSD_BTN1_ENABLED 1U +#define CYBSP_CS_BTN1_ENABLED CYBSP_CSD_BTN1_ENABLED +#define CYBSP_CSD_BTN1_PORT GPIO_PRT8 +#define CYBSP_CS_BTN1_PORT CYBSP_CSD_BTN1_PORT +#define CYBSP_CSD_BTN1_PORT_NUM 8U +#define CYBSP_CS_BTN1_PORT_NUM CYBSP_CSD_BTN1_PORT_NUM +#define CYBSP_CSD_BTN1_PIN 2U +#define CYBSP_CS_BTN1_PIN CYBSP_CSD_BTN1_PIN +#define CYBSP_CSD_BTN1_NUM 2U +#define CYBSP_CS_BTN1_NUM CYBSP_CSD_BTN1_NUM +#define CYBSP_CSD_BTN1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CS_BTN1_DRIVEMODE CYBSP_CSD_BTN1_DRIVEMODE +#define CYBSP_CSD_BTN1_INIT_DRIVESTATE 1 +#define CYBSP_CS_BTN1_INIT_DRIVESTATE CYBSP_CSD_BTN1_INIT_DRIVESTATE +#ifndef ioss_0_port_8_pin_2_HSIOM +#define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CSD_BTN1_HSIOM ioss_0_port_8_pin_2_HSIOM +#define CYBSP_CS_BTN1_HSIOM CYBSP_CSD_BTN1_HSIOM +#define CYBSP_CSD_BTN1_IRQ ioss_interrupts_gpio_8_IRQn +#define CYBSP_CS_BTN1_IRQ CYBSP_CSD_BTN1_IRQ +#if defined(CY_USING_HAL) +#define CYBSP_CSD_BTN1_HAL_PORT_PIN P8_2 +#define CYBSP_CS_BTN1_HAL_PORT_PIN CYBSP_CSD_BTN1_HAL_PORT_PIN +#define CYBSP_CSD_BTN1 P8_2 +#define CYBSP_CS_BTN1 CYBSP_CSD_BTN1 +#define CYBSP_CSD_BTN1_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CS_BTN1_HAL_IRQ CYBSP_CSD_BTN1_HAL_IRQ +#define CYBSP_CSD_BTN1_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CS_BTN1_HAL_DIR CYBSP_CSD_BTN1_HAL_DIR +#define CYBSP_CSD_BTN1_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_CS_BTN1_HAL_DRIVEMODE CYBSP_CSD_BTN1_HAL_DRIVEMODE +#endif // defined (CY_USING_HAL) +#define CYBSP_CSD_SLD0_ENABLED 1U +#define CYBSP_CS_SLD0_ENABLED CYBSP_CSD_SLD0_ENABLED +#define CYBSP_CSD_SLD0_PORT GPIO_PRT8 +#define CYBSP_CS_SLD0_PORT CYBSP_CSD_SLD0_PORT +#define CYBSP_CSD_SLD0_PORT_NUM 8U +#define CYBSP_CS_SLD0_PORT_NUM CYBSP_CSD_SLD0_PORT_NUM +#define CYBSP_CSD_SLD0_PIN 3U +#define CYBSP_CS_SLD0_PIN CYBSP_CSD_SLD0_PIN +#define CYBSP_CSD_SLD0_NUM 3U +#define CYBSP_CS_SLD0_NUM CYBSP_CSD_SLD0_NUM +#define CYBSP_CSD_SLD0_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CS_SLD0_DRIVEMODE CYBSP_CSD_SLD0_DRIVEMODE +#define CYBSP_CSD_SLD0_INIT_DRIVESTATE 1 +#define CYBSP_CS_SLD0_INIT_DRIVESTATE CYBSP_CSD_SLD0_INIT_DRIVESTATE +#ifndef ioss_0_port_8_pin_3_HSIOM +#define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CSD_SLD0_HSIOM ioss_0_port_8_pin_3_HSIOM +#define CYBSP_CS_SLD0_HSIOM CYBSP_CSD_SLD0_HSIOM +#define CYBSP_CSD_SLD0_IRQ ioss_interrupts_gpio_8_IRQn +#define CYBSP_CS_SLD0_IRQ CYBSP_CSD_SLD0_IRQ +#if defined(CY_USING_HAL) +#define CYBSP_CSD_SLD0_HAL_PORT_PIN P8_3 +#define CYBSP_CS_SLD0_HAL_PORT_PIN CYBSP_CSD_SLD0_HAL_PORT_PIN +#define CYBSP_CSD_SLD0 P8_3 +#define CYBSP_CS_SLD0 CYBSP_CSD_SLD0 +#define CYBSP_CSD_SLD0_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CS_SLD0_HAL_IRQ CYBSP_CSD_SLD0_HAL_IRQ +#define CYBSP_CSD_SLD0_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CS_SLD0_HAL_DIR CYBSP_CSD_SLD0_HAL_DIR +#define CYBSP_CSD_SLD0_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_CS_SLD0_HAL_DRIVEMODE CYBSP_CSD_SLD0_HAL_DRIVEMODE +#endif // defined (CY_USING_HAL) +#define CYBSP_CSD_SLD1_ENABLED 1U +#define CYBSP_CS_SLD1_ENABLED CYBSP_CSD_SLD1_ENABLED +#define CYBSP_CSD_SLD1_PORT GPIO_PRT8 +#define CYBSP_CS_SLD1_PORT CYBSP_CSD_SLD1_PORT +#define CYBSP_CSD_SLD1_PORT_NUM 8U +#define CYBSP_CS_SLD1_PORT_NUM CYBSP_CSD_SLD1_PORT_NUM +#define CYBSP_CSD_SLD1_PIN 4U +#define CYBSP_CS_SLD1_PIN CYBSP_CSD_SLD1_PIN +#define CYBSP_CSD_SLD1_NUM 4U +#define CYBSP_CS_SLD1_NUM CYBSP_CSD_SLD1_NUM +#define CYBSP_CSD_SLD1_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CS_SLD1_DRIVEMODE CYBSP_CSD_SLD1_DRIVEMODE +#define CYBSP_CSD_SLD1_INIT_DRIVESTATE 1 +#define CYBSP_CS_SLD1_INIT_DRIVESTATE CYBSP_CSD_SLD1_INIT_DRIVESTATE +#ifndef ioss_0_port_8_pin_4_HSIOM +#define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CSD_SLD1_HSIOM ioss_0_port_8_pin_4_HSIOM +#define CYBSP_CS_SLD1_HSIOM CYBSP_CSD_SLD1_HSIOM +#define CYBSP_CSD_SLD1_IRQ ioss_interrupts_gpio_8_IRQn +#define CYBSP_CS_SLD1_IRQ CYBSP_CSD_SLD1_IRQ +#if defined(CY_USING_HAL) +#define CYBSP_CSD_SLD1_HAL_PORT_PIN P8_4 +#define CYBSP_CS_SLD1_HAL_PORT_PIN CYBSP_CSD_SLD1_HAL_PORT_PIN +#define CYBSP_CSD_SLD1 P8_4 +#define CYBSP_CS_SLD1 CYBSP_CSD_SLD1 +#define CYBSP_CSD_SLD1_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CS_SLD1_HAL_IRQ CYBSP_CSD_SLD1_HAL_IRQ +#define CYBSP_CSD_SLD1_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CS_SLD1_HAL_DIR CYBSP_CSD_SLD1_HAL_DIR +#define CYBSP_CSD_SLD1_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_CS_SLD1_HAL_DRIVEMODE CYBSP_CSD_SLD1_HAL_DRIVEMODE +#endif // defined (CY_USING_HAL) +#define CYBSP_CSD_SLD2_ENABLED 1U +#define CYBSP_CS_SLD2_ENABLED CYBSP_CSD_SLD2_ENABLED +#define CYBSP_CSD_SLD2_PORT GPIO_PRT8 +#define CYBSP_CS_SLD2_PORT CYBSP_CSD_SLD2_PORT +#define CYBSP_CSD_SLD2_PORT_NUM 8U +#define CYBSP_CS_SLD2_PORT_NUM CYBSP_CSD_SLD2_PORT_NUM +#define CYBSP_CSD_SLD2_PIN 5U +#define CYBSP_CS_SLD2_PIN CYBSP_CSD_SLD2_PIN +#define CYBSP_CSD_SLD2_NUM 5U +#define CYBSP_CS_SLD2_NUM CYBSP_CSD_SLD2_NUM +#define CYBSP_CSD_SLD2_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CS_SLD2_DRIVEMODE CYBSP_CSD_SLD2_DRIVEMODE +#define CYBSP_CSD_SLD2_INIT_DRIVESTATE 1 +#define CYBSP_CS_SLD2_INIT_DRIVESTATE CYBSP_CSD_SLD2_INIT_DRIVESTATE +#ifndef ioss_0_port_8_pin_5_HSIOM +#define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CSD_SLD2_HSIOM ioss_0_port_8_pin_5_HSIOM +#define CYBSP_CS_SLD2_HSIOM CYBSP_CSD_SLD2_HSIOM +#define CYBSP_CSD_SLD2_IRQ ioss_interrupts_gpio_8_IRQn +#define CYBSP_CS_SLD2_IRQ CYBSP_CSD_SLD2_IRQ +#if defined(CY_USING_HAL) +#define CYBSP_CSD_SLD2_HAL_PORT_PIN P8_5 +#define CYBSP_CS_SLD2_HAL_PORT_PIN CYBSP_CSD_SLD2_HAL_PORT_PIN +#define CYBSP_CSD_SLD2 P8_5 +#define CYBSP_CS_SLD2 CYBSP_CSD_SLD2 +#define CYBSP_CSD_SLD2_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CS_SLD2_HAL_IRQ CYBSP_CSD_SLD2_HAL_IRQ +#define CYBSP_CSD_SLD2_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CS_SLD2_HAL_DIR CYBSP_CSD_SLD2_HAL_DIR +#define CYBSP_CSD_SLD2_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_CS_SLD2_HAL_DRIVEMODE CYBSP_CSD_SLD2_HAL_DRIVEMODE +#endif // defined (CY_USING_HAL) +#define CYBSP_CSD_SLD3_ENABLED 1U +#define CYBSP_CS_SLD3_ENABLED CYBSP_CSD_SLD3_ENABLED +#define CYBSP_CSD_SLD3_PORT GPIO_PRT8 +#define CYBSP_CS_SLD3_PORT CYBSP_CSD_SLD3_PORT +#define CYBSP_CSD_SLD3_PORT_NUM 8U +#define CYBSP_CS_SLD3_PORT_NUM CYBSP_CSD_SLD3_PORT_NUM +#define CYBSP_CSD_SLD3_PIN 6U +#define CYBSP_CS_SLD3_PIN CYBSP_CSD_SLD3_PIN +#define CYBSP_CSD_SLD3_NUM 6U +#define CYBSP_CS_SLD3_NUM CYBSP_CSD_SLD3_NUM +#define CYBSP_CSD_SLD3_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CS_SLD3_DRIVEMODE CYBSP_CSD_SLD3_DRIVEMODE +#define CYBSP_CSD_SLD3_INIT_DRIVESTATE 1 +#define CYBSP_CS_SLD3_INIT_DRIVESTATE CYBSP_CSD_SLD3_INIT_DRIVESTATE +#ifndef ioss_0_port_8_pin_6_HSIOM +#define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CSD_SLD3_HSIOM ioss_0_port_8_pin_6_HSIOM +#define CYBSP_CS_SLD3_HSIOM CYBSP_CSD_SLD3_HSIOM +#define CYBSP_CSD_SLD3_IRQ ioss_interrupts_gpio_8_IRQn +#define CYBSP_CS_SLD3_IRQ CYBSP_CSD_SLD3_IRQ +#if defined(CY_USING_HAL) +#define CYBSP_CSD_SLD3_HAL_PORT_PIN P8_6 +#define CYBSP_CS_SLD3_HAL_PORT_PIN CYBSP_CSD_SLD3_HAL_PORT_PIN +#define CYBSP_CSD_SLD3 P8_6 +#define CYBSP_CS_SLD3 CYBSP_CSD_SLD3 +#define CYBSP_CSD_SLD3_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CS_SLD3_HAL_IRQ CYBSP_CSD_SLD3_HAL_IRQ +#define CYBSP_CSD_SLD3_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CS_SLD3_HAL_DIR CYBSP_CSD_SLD3_HAL_DIR +#define CYBSP_CSD_SLD3_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_CS_SLD3_HAL_DRIVEMODE CYBSP_CSD_SLD3_HAL_DRIVEMODE +#endif // defined (CY_USING_HAL) +#define CYBSP_CSD_SLD4_ENABLED 1U +#define CYBSP_CS_SLD4_ENABLED CYBSP_CSD_SLD4_ENABLED +#define CYBSP_CSD_SLD4_PORT GPIO_PRT8 +#define CYBSP_CS_SLD4_PORT CYBSP_CSD_SLD4_PORT +#define CYBSP_CSD_SLD4_PORT_NUM 8U +#define CYBSP_CS_SLD4_PORT_NUM CYBSP_CSD_SLD4_PORT_NUM +#define CYBSP_CSD_SLD4_PIN 7U +#define CYBSP_CS_SLD4_PIN CYBSP_CSD_SLD4_PIN +#define CYBSP_CSD_SLD4_NUM 7U +#define CYBSP_CS_SLD4_NUM CYBSP_CSD_SLD4_NUM +#define CYBSP_CSD_SLD4_DRIVEMODE CY_GPIO_DM_ANALOG +#define CYBSP_CS_SLD4_DRIVEMODE CYBSP_CSD_SLD4_DRIVEMODE +#define CYBSP_CSD_SLD4_INIT_DRIVESTATE 1 +#define CYBSP_CS_SLD4_INIT_DRIVESTATE CYBSP_CSD_SLD4_INIT_DRIVESTATE +#ifndef ioss_0_port_8_pin_7_HSIOM +#define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_GPIO +#endif +#define CYBSP_CSD_SLD4_HSIOM ioss_0_port_8_pin_7_HSIOM +#define CYBSP_CS_SLD4_HSIOM CYBSP_CSD_SLD4_HSIOM +#define CYBSP_CSD_SLD4_IRQ ioss_interrupts_gpio_8_IRQn +#define CYBSP_CS_SLD4_IRQ CYBSP_CSD_SLD4_IRQ +#if defined(CY_USING_HAL) +#define CYBSP_CSD_SLD4_HAL_PORT_PIN P8_7 +#define CYBSP_CS_SLD4_HAL_PORT_PIN CYBSP_CSD_SLD4_HAL_PORT_PIN +#define CYBSP_CSD_SLD4 P8_7 +#define CYBSP_CS_SLD4 CYBSP_CSD_SLD4 +#define CYBSP_CSD_SLD4_HAL_IRQ CYHAL_GPIO_IRQ_NONE +#define CYBSP_CS_SLD4_HAL_IRQ CYBSP_CSD_SLD4_HAL_IRQ +#define CYBSP_CSD_SLD4_HAL_DIR CYHAL_GPIO_DIR_INPUT +#define CYBSP_CS_SLD4_HAL_DIR CYBSP_CSD_SLD4_HAL_DIR +#define CYBSP_CSD_SLD4_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG +#define CYBSP_CS_SLD4_HAL_DRIVEMODE CYBSP_CSD_SLD4_HAL_DRIVEMODE +#define CYBSP_A8 (P9_0) +#define CYBSP_J2_2 CYBSP_A8 +#define CYBSP_A9 (P9_1) +#define CYBSP_J2_4 CYBSP_A9 +#define CYBSP_A10 (P9_2) +#define CYBSP_J2_6 CYBSP_A10 +#define CYBSP_A11 (P9_3) +#define CYBSP_J2_8 CYBSP_A11 +#define CYBSP_TRACE_DATA0 CYBSP_A11 +#define CYBSP_A12 (P9_4) +#define CYBSP_J2_10 CYBSP_A12 +#define CYBSP_A13 (P9_5) +#define CYBSP_J2_12 CYBSP_A13 +#define CYBSP_A14 (P9_6) +#define CYBSP_J2_14 CYBSP_A14 +#define CYBSP_A15 (P9_7) +#define CYBSP_J2_16 CYBSP_A15 +#endif // defined (CY_USING_HAL) + +extern const cy_stc_gpio_pin_config_t CYBSP_WCO_IN_config; +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_WCO_IN_obj; +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_WCO_OUT_config; +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_WCO_OUT_obj; +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CSD_RX_config; +#define CYBSP_CS_RX_config CYBSP_CSD_RX_config +#define CYBSP_CS_TX_RX_config CYBSP_CSD_RX_config +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CSD_RX_obj; +#define CYBSP_CS_RX_obj CYBSP_CSD_RX_obj +#define CYBSP_CS_TX_RX_obj CYBSP_CSD_RX_obj +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_SWO_config; +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_SWO_obj; +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_SWDIO_config; +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_SWDIO_obj; +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_SWDCK_config; +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_SWDCK_obj; +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CINA_config; +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CINA_obj; +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CINB_config; +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CINB_obj; +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CMOD_config; +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CMOD_obj; +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CSD_BTN0_config; +#define CYBSP_CS_BTN0_config CYBSP_CSD_BTN0_config +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CSD_BTN0_obj; +#define CYBSP_CS_BTN0_obj CYBSP_CSD_BTN0_obj +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CSD_BTN1_config; +#define CYBSP_CS_BTN1_config CYBSP_CSD_BTN1_config +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CSD_BTN1_obj; +#define CYBSP_CS_BTN1_obj CYBSP_CSD_BTN1_obj +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD0_config; +#define CYBSP_CS_SLD0_config CYBSP_CSD_SLD0_config +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CSD_SLD0_obj; +#define CYBSP_CS_SLD0_obj CYBSP_CSD_SLD0_obj +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD1_config; +#define CYBSP_CS_SLD1_config CYBSP_CSD_SLD1_config +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CSD_SLD1_obj; +#define CYBSP_CS_SLD1_obj CYBSP_CSD_SLD1_obj +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD2_config; +#define CYBSP_CS_SLD2_config CYBSP_CSD_SLD2_config +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CSD_SLD2_obj; +#define CYBSP_CS_SLD2_obj CYBSP_CSD_SLD2_obj +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD3_config; +#define CYBSP_CS_SLD3_config CYBSP_CSD_SLD3_config +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CSD_SLD3_obj; +#define CYBSP_CS_SLD3_obj CYBSP_CSD_SLD3_obj +#endif // defined (CY_USING_HAL) +extern const cy_stc_gpio_pin_config_t CYBSP_CSD_SLD4_config; +#define CYBSP_CS_SLD4_config CYBSP_CSD_SLD4_config +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t CYBSP_CSD_SLD4_obj; +#define CYBSP_CS_SLD4_obj CYBSP_CSD_SLD4_obj +#endif // defined (CY_USING_HAL) + +void init_cycfg_pins(void); +void reserve_cycfg_pins(void); + +#if defined(__cplusplus) +} +#endif + +#endif /* CYCFG_PINS_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_qspi_memslot.c b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_qspi_memslot.c new file mode 100644 index 00000000000000..7f954aca038238 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_qspi_memslot.c @@ -0,0 +1,472 @@ +/******************************************************************************* + * File Name: cycfg_qspi_memslot.c + * + * Description: + * Provides definitions of the SMIF-driver memory configuration. + * This file was automatically generated and should not be modified. + * QSPI Configurator 4.10.0.1343 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include "cycfg_qspi_memslot.h" + +const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readCmd = { + /* The 8-bit command. 1 x I/O read command. */ + .command = 0xECU, + /* The width of the command transfer. */ + .cmdWidth = CY_SMIF_WIDTH_SINGLE, + /* The width of the address transfer. */ + .addrWidth = CY_SMIF_WIDTH_QUAD, + /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */ + .mode = 0x01U, + /* The width of the mode command transfer. */ + .modeWidth = CY_SMIF_WIDTH_QUAD, + /* The number of dummy cycles. A zero value suggests no dummy cycles. */ + .dummyCycles = 4U, + /* The width of the data transfer. */ + .dataWidth = CY_SMIF_WIDTH_QUAD, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* The Data rate of data */ + .dataRate = CY_SMIF_SDR, + /* This specifies the presence of the dummy field */ + .dummyCyclesPresence = CY_SMIF_PRESENT_1BYTE, + /* This specifies the presence of the mode field */ + .modePresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */ + .modeH = 0x00, + /* The Data rate of mode */ + .modeRate = CY_SMIF_SDR, + /* The Data rate of address */ + .addrRate = CY_SMIF_SDR, + /* This specifies the width of the command field */ + .cmdPresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */ + .commandH = 0x00, + /* The Data rate of command */ + .cmdRate = CY_SMIF_SDR, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeEnCmd = { + /* The 8-bit command. 1 x I/O read command. */ + .command = 0x06U, + /* The width of the command transfer. */ + .cmdWidth = CY_SMIF_WIDTH_SINGLE, + /* The width of the address transfer. */ + .addrWidth = CY_SMIF_WIDTH_SINGLE, + /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */ + .mode = 0xFFFFFFFFU, + /* The width of the mode command transfer. */ + .modeWidth = CY_SMIF_WIDTH_SINGLE, + /* The number of dummy cycles. A zero value suggests no dummy cycles. */ + .dummyCycles = 0U, + /* The width of the data transfer. */ + .dataWidth = CY_SMIF_WIDTH_SINGLE, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* The Data rate of data */ + .dataRate = CY_SMIF_SDR, + /* This specifies the presence of the dummy field */ + .dummyCyclesPresence = CY_SMIF_NOT_PRESENT, + /* This specifies the presence of the mode field */ + .modePresence = CY_SMIF_NOT_PRESENT, + /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */ + .modeH = 0x00, + /* The Data rate of mode */ + .modeRate = CY_SMIF_SDR, + /* The Data rate of address */ + .addrRate = CY_SMIF_SDR, + /* This specifies the width of the command field */ + .cmdPresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */ + .commandH = 0x00, + /* The Data rate of command */ + .cmdRate = CY_SMIF_SDR, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeDisCmd = { + /* The 8-bit command. 1 x I/O read command. */ + .command = 0x04U, + /* The width of the command transfer. */ + .cmdWidth = CY_SMIF_WIDTH_SINGLE, + /* The width of the address transfer. */ + .addrWidth = CY_SMIF_WIDTH_SINGLE, + /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */ + .mode = 0xFFFFFFFFU, + /* The width of the mode command transfer. */ + .modeWidth = CY_SMIF_WIDTH_SINGLE, + /* The number of dummy cycles. A zero value suggests no dummy cycles. */ + .dummyCycles = 0U, + /* The width of the data transfer. */ + .dataWidth = CY_SMIF_WIDTH_SINGLE, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* The Data rate of data */ + .dataRate = CY_SMIF_SDR, + /* This specifies the presence of the dummy field */ + .dummyCyclesPresence = CY_SMIF_NOT_PRESENT, + /* This specifies the presence of the mode field */ + .modePresence = CY_SMIF_NOT_PRESENT, + /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */ + .modeH = 0x00, + /* The Data rate of mode */ + .modeRate = CY_SMIF_SDR, + /* The Data rate of address */ + .addrRate = CY_SMIF_SDR, + /* This specifies the width of the command field */ + .cmdPresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */ + .commandH = 0x00, + /* The Data rate of command */ + .cmdRate = CY_SMIF_SDR, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_eraseCmd = { + /* The 8-bit command. 1 x I/O read command. */ + .command = 0xDCU, + /* The width of the command transfer. */ + .cmdWidth = CY_SMIF_WIDTH_SINGLE, + /* The width of the address transfer. */ + .addrWidth = CY_SMIF_WIDTH_SINGLE, + /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */ + .mode = 0xFFFFFFFFU, + /* The width of the mode command transfer. */ + .modeWidth = CY_SMIF_WIDTH_SINGLE, + /* The number of dummy cycles. A zero value suggests no dummy cycles. */ + .dummyCycles = 0U, + /* The width of the data transfer. */ + .dataWidth = CY_SMIF_WIDTH_SINGLE, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* The Data rate of data */ + .dataRate = CY_SMIF_SDR, + /* This specifies the presence of the dummy field */ + .dummyCyclesPresence = CY_SMIF_NOT_PRESENT, + /* This specifies the presence of the mode field */ + .modePresence = CY_SMIF_NOT_PRESENT, + /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */ + .modeH = 0x00, + /* The Data rate of mode */ + .modeRate = CY_SMIF_SDR, + /* The Data rate of address */ + .addrRate = CY_SMIF_SDR, + /* This specifies the width of the command field */ + .cmdPresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */ + .commandH = 0x00, + /* The Data rate of command */ + .cmdRate = CY_SMIF_SDR, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_chipEraseCmd = { + /* The 8-bit command. 1 x I/O read command. */ + .command = 0x60U, + /* The width of the command transfer. */ + .cmdWidth = CY_SMIF_WIDTH_SINGLE, + /* The width of the address transfer. */ + .addrWidth = CY_SMIF_WIDTH_SINGLE, + /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */ + .mode = 0xFFFFFFFFU, + /* The width of the mode command transfer. */ + .modeWidth = CY_SMIF_WIDTH_SINGLE, + /* The number of dummy cycles. A zero value suggests no dummy cycles. */ + .dummyCycles = 0U, + /* The width of the data transfer. */ + .dataWidth = CY_SMIF_WIDTH_SINGLE, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* The Data rate of data */ + .dataRate = CY_SMIF_SDR, + /* This specifies the presence of the dummy field */ + .dummyCyclesPresence = CY_SMIF_NOT_PRESENT, + /* This specifies the presence of the mode field */ + .modePresence = CY_SMIF_NOT_PRESENT, + /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */ + .modeH = 0x00, + /* The Data rate of mode */ + .modeRate = CY_SMIF_SDR, + /* The Data rate of address */ + .addrRate = CY_SMIF_SDR, + /* This specifies the width of the command field */ + .cmdPresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */ + .commandH = 0x00, + /* The Data rate of command */ + .cmdRate = CY_SMIF_SDR, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_programCmd = { + /* The 8-bit command. 1 x I/O read command. */ + .command = 0x34U, + /* The width of the command transfer. */ + .cmdWidth = CY_SMIF_WIDTH_SINGLE, + /* The width of the address transfer. */ + .addrWidth = CY_SMIF_WIDTH_SINGLE, + /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */ + .mode = 0xFFFFFFFFU, + /* The width of the mode command transfer. */ + .modeWidth = CY_SMIF_WIDTH_QUAD, + /* The number of dummy cycles. A zero value suggests no dummy cycles. */ + .dummyCycles = 0U, + /* The width of the data transfer. */ + .dataWidth = CY_SMIF_WIDTH_QUAD, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* The Data rate of data */ + .dataRate = CY_SMIF_SDR, + /* This specifies the presence of the dummy field */ + .dummyCyclesPresence = CY_SMIF_NOT_PRESENT, + /* This specifies the presence of the mode field */ + .modePresence = CY_SMIF_NOT_PRESENT, + /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */ + .modeH = 0x00, + /* The Data rate of mode */ + .modeRate = CY_SMIF_SDR, + /* The Data rate of address */ + .addrRate = CY_SMIF_SDR, + /* This specifies the width of the command field */ + .cmdPresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */ + .commandH = 0x00, + /* The Data rate of command */ + .cmdRate = CY_SMIF_SDR, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readStsRegQeCmd = { + /* The 8-bit command. 1 x I/O read command. */ + .command = 0x35U, + /* The width of the command transfer. */ + .cmdWidth = CY_SMIF_WIDTH_SINGLE, + /* The width of the address transfer. */ + .addrWidth = CY_SMIF_WIDTH_SINGLE, + /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */ + .mode = 0xFFFFFFFFU, + /* The width of the mode command transfer. */ + .modeWidth = CY_SMIF_WIDTH_SINGLE, + /* The number of dummy cycles. A zero value suggests no dummy cycles. */ + .dummyCycles = 0U, + /* The width of the data transfer. */ + .dataWidth = CY_SMIF_WIDTH_SINGLE, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* The Data rate of data */ + .dataRate = CY_SMIF_SDR, + /* This specifies the presence of the dummy field */ + .dummyCyclesPresence = CY_SMIF_NOT_PRESENT, + /* This specifies the presence of the mode field */ + .modePresence = CY_SMIF_NOT_PRESENT, + /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */ + .modeH = 0x00, + /* The Data rate of mode */ + .modeRate = CY_SMIF_SDR, + /* The Data rate of address */ + .addrRate = CY_SMIF_SDR, + /* This specifies the width of the command field */ + .cmdPresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */ + .commandH = 0x00, + /* The Data rate of command */ + .cmdRate = CY_SMIF_SDR, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readStsRegWipCmd = { + /* The 8-bit command. 1 x I/O read command. */ + .command = 0x05U, + /* The width of the command transfer. */ + .cmdWidth = CY_SMIF_WIDTH_SINGLE, + /* The width of the address transfer. */ + .addrWidth = CY_SMIF_WIDTH_SINGLE, + /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */ + .mode = 0xFFFFFFFFU, + /* The width of the mode command transfer. */ + .modeWidth = CY_SMIF_WIDTH_SINGLE, + /* The number of dummy cycles. A zero value suggests no dummy cycles. */ + .dummyCycles = 0U, + /* The width of the data transfer. */ + .dataWidth = CY_SMIF_WIDTH_SINGLE, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* The Data rate of data */ + .dataRate = CY_SMIF_SDR, + /* This specifies the presence of the dummy field */ + .dummyCyclesPresence = CY_SMIF_NOT_PRESENT, + /* This specifies the presence of the mode field */ + .modePresence = CY_SMIF_NOT_PRESENT, + /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */ + .modeH = 0x00, + /* The Data rate of mode */ + .modeRate = CY_SMIF_SDR, + /* The Data rate of address */ + .addrRate = CY_SMIF_SDR, + /* This specifies the width of the command field */ + .cmdPresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */ + .commandH = 0x00, + /* The Data rate of command */ + .cmdRate = CY_SMIF_SDR, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeStsRegQeCmd = { + /* The 8-bit command. 1 x I/O read command. */ + .command = 0x01U, + /* The width of the command transfer. */ + .cmdWidth = CY_SMIF_WIDTH_SINGLE, + /* The width of the address transfer. */ + .addrWidth = CY_SMIF_WIDTH_SINGLE, + /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */ + .mode = 0xFFFFFFFFU, + /* The width of the mode command transfer. */ + .modeWidth = CY_SMIF_WIDTH_SINGLE, + /* The number of dummy cycles. A zero value suggests no dummy cycles. */ + .dummyCycles = 0U, + /* The width of the data transfer. */ + .dataWidth = CY_SMIF_WIDTH_SINGLE, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* The Data rate of data */ + .dataRate = CY_SMIF_SDR, + /* This specifies the presence of the dummy field */ + .dummyCyclesPresence = CY_SMIF_NOT_PRESENT, + /* This specifies the presence of the mode field */ + .modePresence = CY_SMIF_NOT_PRESENT, + /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */ + .modeH = 0x00, + /* The Data rate of mode */ + .modeRate = CY_SMIF_SDR, + /* The Data rate of address */ + .addrRate = CY_SMIF_SDR, + /* This specifies the width of the command field */ + .cmdPresence = CY_SMIF_PRESENT_1BYTE, + /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */ + .commandH = 0x00, + /* The Data rate of command */ + .cmdRate = CY_SMIF_SDR, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_device_cfg_t deviceCfg_S25FL512S_SlaveSlot_0 = { + /* Specifies the number of address bytes used by the memory slave device. */ + .numOfAddrBytes = 0x04U, + /* The size of the memory. */ + .memSize = 0x04000000U, + /* Specifies the Read command. */ + .readCmd = (cy_stc_smif_mem_cmd_t *) &S25FL512S_SlaveSlot_0_readCmd, + /* Specifies the Write Enable command. */ + .writeEnCmd = (cy_stc_smif_mem_cmd_t *) &S25FL512S_SlaveSlot_0_writeEnCmd, + /* Specifies the Write Disable command. */ + .writeDisCmd = (cy_stc_smif_mem_cmd_t *) &S25FL512S_SlaveSlot_0_writeDisCmd, + /* Specifies the Erase command. */ + .eraseCmd = (cy_stc_smif_mem_cmd_t *) &S25FL512S_SlaveSlot_0_eraseCmd, + /* Specifies the sector size of each erase. */ + .eraseSize = 0x00040000U, + /* Specifies the Chip Erase command. */ + .chipEraseCmd = (cy_stc_smif_mem_cmd_t *) &S25FL512S_SlaveSlot_0_chipEraseCmd, + /* Specifies the Program command. */ + .programCmd = (cy_stc_smif_mem_cmd_t *) &S25FL512S_SlaveSlot_0_programCmd, + /* Specifies the page size for programming. */ + .programSize = 0x00000200U, + /* Specifies the command to read the QE-containing status register. */ + .readStsRegQeCmd = (cy_stc_smif_mem_cmd_t *) &S25FL512S_SlaveSlot_0_readStsRegQeCmd, + /* Specifies the command to read the WIP-containing status register. */ + .readStsRegWipCmd = (cy_stc_smif_mem_cmd_t *) &S25FL512S_SlaveSlot_0_readStsRegWipCmd, + /* Specifies the command to write into the QE-containing status register. */ + .writeStsRegQeCmd = (cy_stc_smif_mem_cmd_t *) &S25FL512S_SlaveSlot_0_writeStsRegQeCmd, + /* The mask for the status register. */ + .stsRegBusyMask = 0x01U, + /* The mask for the status register. */ + .stsRegQuadEnableMask = 0x02U, + /* The max time for the erase type-1 cycle-time in ms. */ + .eraseTime = 2600U, + /* The max time for the chip-erase cycle-time in ms. */ + .chipEraseTime = 460000U, + /* The max time for the page-program cycle-time in us. */ + .programTime = 1300U, +#if (CY_SMIF_DRV_VERSION_MAJOR > 1) || (CY_SMIF_DRV_VERSION_MINOR >= 50) + /* Points to NULL or to structure with info about sectors for hybrid memory. */ + .hybridRegionCount = 0U, + .hybridRegionInfo = 0, +#endif + /* Specifies the command to read variable latency cycles configuration register */ + .readLatencyCmd = 0, + /* Specifies the command to write variable latency cycles configuration register */ + .writeLatencyCmd = 0, + /* Specifies the address for variable latency cycle address */ + .latencyCyclesRegAddr = 0x00U, + /* Specifies variable latency cycles Mask */ + .latencyCyclesMask = 0x00U, +#if (CY_IP_MXSMIF_VERSION >= 2) + /* Specifies data for memory with hybrid sectors */ + .octalDDREnableSeq = 0, + /* Specifies the command to read the OE-containing status register. */ + .readStsRegOeCmd = 0, + /* Specifies the command to write the OE-containing status register. */ + .writeStsRegOeCmd = 0, + /* QE mask for the status registers */ + .stsRegOctalEnableMask = 0x00U, + /* Octal enable register address */ + .octalEnableRegAddr = 0x00U, + /* Frequency of operation used in Octal mode */ + .freq_of_operation = CY_SMIF_100MHZ_OPERATION, +#endif +}; + +const cy_stc_smif_mem_config_t S25FL512S_SlaveSlot_0 = { + /* Determines the slot number where the memory device is placed. */ + .slaveSelect = CY_SMIF_SLAVE_SELECT_0, +/* Flags. */ +#if (CY_IP_MXSMIF_VERSION >= 2) + .flags = CY_SMIF_FLAG_SMIF_REV_3 | CY_SMIF_FLAG_MEMORY_MAPPED | CY_SMIF_FLAG_WR_EN, +#else + .flags = CY_SMIF_FLAG_MEMORY_MAPPED | CY_SMIF_FLAG_WR_EN, +#endif /* CY_IP_MXSMIF_VERSION */ + /* The data-line selection options for a slave device. */ + .dataSelect = CY_SMIF_DATA_SEL0, + /* The base address the memory slave is mapped to in the PSoC memory map. + Valid when the memory-mapped mode is enabled. */ + .baseAddress = 0x18000000U, + /* The size allocated in the PSoC memory map, for the memory slave device. + The size is allocated from the base address. Valid when the memory mapped mode is enabled. */ + .memMappedSize = 0x4000000U, + /* If this memory device is one of the devices in the dual quad SPI configuration. + Valid when the memory mapped mode is enabled. */ + .dualQuadSlots = 0, + /* The configuration of the device. */ + .deviceCfg = (cy_stc_smif_mem_device_cfg_t *) &deviceCfg_S25FL512S_SlaveSlot_0, +#if (CY_IP_MXSMIF_VERSION >= 2) + /** Continous transfer merge timeout. + * After this period the memory device is deselected. A later transfer, even from a + * continuous address, starts with the overhead phases (command, address, mode, dummy cycles). + * This configuration parameter is available for CAT1B devices. */ + .mergeTimeout = CY_SMIF_MERGE_TIMEOUT_1_CYCLE, +#endif /* CY_IP_MXSMIF_VERSION */ +}; + +const cy_stc_smif_mem_config_t * const smifMemConfigs[CY_SMIF_DEVICE_NUM] = { + &S25FL512S_SlaveSlot_0, +}; + +const cy_stc_smif_block_config_t smifBlockConfig = { + /* The number of SMIF memories defined. */ + .memCount = CY_SMIF_DEVICE_NUM, + /* The pointer to the array of memory config structures of size memCount. */ + .memConfig = (cy_stc_smif_mem_config_t **) smifMemConfigs, + /* The version of the SMIF driver. */ + .majorVersion = CY_SMIF_DRV_VERSION_MAJOR, + /* The version of the SMIF driver. */ + .minorVersion = CY_SMIF_DRV_VERSION_MINOR, +}; diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_qspi_memslot.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_qspi_memslot.h new file mode 100644 index 00000000000000..48b280a91b4b7d --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_qspi_memslot.h @@ -0,0 +1,68 @@ +/******************************************************************************* + * File Name: cycfg_qspi_memslot.h + * + * Description: + * Provides declarations of the SMIF-driver memory configuration. + * This file was automatically generated and should not be modified. + * QSPI Configurator 4.10.0.1343 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#ifndef CYCFG_QSPI_MEMSLOT_H +#define CYCFG_QSPI_MEMSLOT_H +#include "cy_smif_memslot.h" + +#define CY_SMIF_CFG_TOOL_VERSION (410) + +/* Supported QSPI Driver version */ +#define CY_SMIF_DRV_VERSION_REQUIRED (100) + +#if !defined(CY_SMIF_DRV_VERSION) +#define CY_SMIF_DRV_VERSION (100) +#endif + +/* Check the used Driver version */ +#if (CY_SMIF_DRV_VERSION_REQUIRED > CY_SMIF_DRV_VERSION) +#error The QSPI Configurator requires a newer version of the PDL. Update the PDL in your project. +#endif + +typedef cy_stc_smif_mem_config_t cy_serial_flash_mem_config_t; +typedef cy_stc_smif_block_config_t cy_serial_flash_block_config_t; + +#define CY_SMIF_DEVICE_NUM 1 + +extern const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readCmd; +extern const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeEnCmd; +extern const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeDisCmd; +extern const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_eraseCmd; +extern const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_chipEraseCmd; +extern const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_programCmd; +extern const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readStsRegQeCmd; +extern const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readStsRegWipCmd; +extern const cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeStsRegQeCmd; + +extern const cy_stc_smif_mem_device_cfg_t deviceCfg_S25FL512S_SlaveSlot_0; + +extern const cy_stc_smif_mem_config_t S25FL512S_SlaveSlot_0; + +extern const cy_stc_smif_mem_config_t * const smifMemConfigs[CY_SMIF_DEVICE_NUM]; + +extern const cy_stc_smif_block_config_t smifBlockConfig; + +#endif /*CYCFG_QSPI_MEMSLOT_H*/ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_qspi_memslot.timestamp b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_qspi_memslot.timestamp new file mode 100644 index 00000000000000..b58d184ac8c9e0 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_qspi_memslot.timestamp @@ -0,0 +1,26 @@ +/******************************************************************************* +* File Name: cycfg_qspi_memslot.timestamp +* +* Description: +* Sentinel file for determining if generated source is up to date. +* This file was automatically generated and should not be modified. +* QSPI Configurator 4.10.0.1343 +* +******************************************************************************** +* Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or +* an affiliate of Cypress Semiconductor Corporation. +* SPDX-License-Identifier: Apache-2.0 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_routing.c b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_routing.c new file mode 100644 index 00000000000000..b7f613092bdbe6 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_routing.c @@ -0,0 +1,40 @@ +/******************************************************************************* + * File Name: cycfg_routing.c + * + * Description: + * Establishes all necessary connections between hardware elements. + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include "cycfg_routing.h" +#include "cy_device_headers.h" +#include "cy_trigmux.h" +#include "stdbool.h" + +void init_cycfg_routing(void) +{ + HSIOM->AMUX_SPLIT_CTL[2] = HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; + HSIOM->AMUX_SPLIT_CTL[4] = HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk | HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk | + HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk | HSIOM_V2_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk; +} diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_routing.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_routing.h new file mode 100644 index 00000000000000..f6bae4541ba221 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_routing.h @@ -0,0 +1,61 @@ +/******************************************************************************* + * File Name: cycfg_routing.h + * + * Description: + * Establishes all necessary connections between hardware elements. + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#if !defined(CYCFG_ROUTING_H) +#define CYCFG_ROUTING_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "cycfg_notices.h" + +void init_cycfg_routing(void); + +#define ioss_0_port_0_pin_0_ANALOG P0_0_SRSS_WCO_IN +#define ioss_0_port_0_pin_1_ANALOG P0_1_SRSS_WCO_OUT +#define ioss_0_port_1_pin_0_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_6_pin_4_HSIOM P6_4_CPUSS_SWJ_SWO_TDO +#define ioss_0_port_6_pin_6_HSIOM P6_6_CPUSS_SWJ_SWDIO_TMS +#define ioss_0_port_6_pin_7_HSIOM P6_7_CPUSS_SWJ_SWCLK_TCLK +#define ioss_0_port_7_pin_1_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_7_pin_2_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_7_pin_7_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_1_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_2_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_3_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_4_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_5_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_6_HSIOM HSIOM_SEL_AMUXA +#define ioss_0_port_8_pin_7_HSIOM HSIOM_SEL_AMUXA + +#if defined(__cplusplus) +} +#endif + +#endif /* CYCFG_ROUTING_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_system.c b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_system.c new file mode 100644 index 00000000000000..7c180a8e0812aa --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_system.c @@ -0,0 +1,1160 @@ +/******************************************************************************* + * File Name: cycfg_system.c + * + * Description: + * System configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include "cycfg_system.h" + +#define CY_CFG_SYSCLK_ECO_ERROR 1 +#define CY_CFG_SYSCLK_ALTHF_ERROR 2 +#define CY_CFG_SYSCLK_PLL_ERROR 3 +#define CY_CFG_SYSCLK_FLL_ERROR 4 +#define CY_CFG_SYSCLK_WCO_ERROR 5 +#define CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED 1 +#define CY_CFG_SYSCLK_CLKALTSYSTICK_SOURCE CY_SYSTICK_CLOCK_SOURCE_CLK_LF +#define CY_CFG_SYSCLK_CLKALTSYSTICK_INTERVAL 0 +#define CY_CFG_SYSCLK_CLKALTSYSTICK_FREQUENCY 32768 +#define CY_CFG_SYSCLK_CLKALTSYSTICK_TICKS ((0) / 1000000.0) * 32768 +#define CY_CFG_SYSCLK_CLKBAK_ENABLED 1 +#define CY_CFG_SYSCLK_CLKBAK_SOURCE CY_SYSCLK_BAK_IN_CLKLF +#define CY_CFG_SYSCLK_CLKFAST_ENABLED 1 +#define CY_CFG_SYSCLK_CLKFAST_DIVIDER 0 +#define CY_CFG_SYSCLK_FLL_ENABLED 1 +#define CY_CFG_SYSCLK_FLL_MULT 500U +#define CY_CFG_SYSCLK_FLL_REFDIV 20U +#define CY_CFG_SYSCLK_FLL_CCO_RANGE CY_SYSCLK_FLL_CCO_RANGE4 +#define CY_CFG_SYSCLK_FLL_ENABLE_OUTDIV true +#define CY_CFG_SYSCLK_FLL_LOCK_TOLERANCE 10U +#define CY_CFG_SYSCLK_FLL_IGAIN 9U +#define CY_CFG_SYSCLK_FLL_PGAIN 5U +#define CY_CFG_SYSCLK_FLL_SETTLING_COUNT 8U +#define CY_CFG_SYSCLK_FLL_OUTPUT_MODE CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT +#define CY_CFG_SYSCLK_FLL_CCO_FREQ 355U +#define CY_CFG_SYSCLK_FLL_OUT_FREQ 100000000 +#define CY_CFG_SYSCLK_CLKHF0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKHF0_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE +#define CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ 100UL +#define CY_CFG_SYSCLK_CLKHF0_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0 +#define CY_CFG_SYSCLK_ILO_ENABLED 1 +#define CY_CFG_SYSCLK_ILO_HIBERNATE true +#define CY_CFG_SYSCLK_IMO_ENABLED 1 +#define CY_CFG_SYSCLK_CLKLF_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH0_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH0_SOURCE_NUM 0UL +#define CY_CFG_SYSCLK_CLKPATH1_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH1_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH1_SOURCE_NUM 0UL +#define CY_CFG_SYSCLK_CLKPATH2_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH2_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH2_SOURCE_NUM 0UL +#define CY_CFG_SYSCLK_CLKPATH3_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH3_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH3_SOURCE_NUM 0UL +#define CY_CFG_SYSCLK_CLKPATH4_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH4_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH4_SOURCE_NUM 0UL +#define CY_CFG_SYSCLK_CLKPATH5_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPATH5_SOURCE CY_SYSCLK_CLKPATH_IN_IMO +#define CY_CFG_SYSCLK_CLKPATH5_SOURCE_NUM 0UL +#define CY_CFG_SYSCLK_CLKPERI_ENABLED 1 +#define CY_CFG_SYSCLK_CLKPERI_DIVIDER 0 +#define CY_CFG_SYSCLK_PLL0_ENABLED 1 +#define CY_CFG_SYSCLK_PLL0_FEEDBACK_DIV 30 +#define CY_CFG_SYSCLK_PLL0_REFERENCE_DIV 1 +#define CY_CFG_SYSCLK_PLL0_OUTPUT_DIV 5 +#define CY_CFG_SYSCLK_PLL0_LF_MODE false +#define CY_CFG_SYSCLK_PLL0_OUTPUT_MODE CY_SYSCLK_FLLPLL_OUTPUT_AUTO +#define CY_CFG_SYSCLK_PLL0_OUTPUT_FREQ 48000000 +#define CY_CFG_SYSCLK_CLKSLOW_ENABLED 1 +#define CY_CFG_SYSCLK_CLKSLOW_DIVIDER 0 +#define CY_CFG_SYSCLK_CLKTIMER_ENABLED 1 +#define CY_CFG_SYSCLK_CLKTIMER_SOURCE CY_SYSCLK_CLKTIMER_IN_IMO +#define CY_CFG_SYSCLK_CLKTIMER_DIVIDER 0U +#define CY_CFG_SYSCLK_WCO_ENABLED 1 +#define CY_CFG_SYSCLK_WCO_IN_PRT GPIO_PRT0 +#define CY_CFG_SYSCLK_WCO_IN_PIN 0U +#define CY_CFG_SYSCLK_WCO_OUT_PRT GPIO_PRT0 +#define CY_CFG_SYSCLK_WCO_OUT_PIN 1U +#define CY_CFG_SYSCLK_WCO_BYPASS CY_SYSCLK_WCO_NOT_BYPASSED +#define CY_CFG_PWR_ENABLED 1 +#define CY_CFG_PWR_INIT 1 +#define CY_CFG_PWR_USING_PMIC 0 +#define CY_CFG_PWR_VBACKUP_USING_VDDD 1 +#define CY_CFG_PWR_LDO_VOLTAGE CY_SYSPM_LDO_VOLTAGE_LP +#define CY_CFG_PWR_USING_ULP 0 +#define CY_CFG_PWR_REGULATOR_MODE_MIN false +#define CY_CFG_PWR_BKP_ERROR 6 + +#if defined(CY_DEVICE_SECURE) +static cy_stc_pra_system_config_t srss_0_clock_0_secureConfig; +#endif // defined (CY_DEVICE_SECURE) +#if (!defined(CY_DEVICE_SECURE)) +static const cy_stc_fll_manual_config_t srss_0_clock_0_fll_0_fllConfig = { + .fllMult = 500U, + .refDiv = 20U, + .ccoRange = CY_SYSCLK_FLL_CCO_RANGE4, + .enableOutputDiv = true, + .lockTolerance = 10U, + .igain = 9U, + .pgain = 5U, + .settlingCount = 8U, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT, + .cco_Freq = 355U, +}; +#endif //(!defined(CY_DEVICE_SECURE)) +#if defined(CY_USING_HAL) +const cyhal_resource_inst_t srss_0_clock_0_pathmux_0_obj = { + .type = CYHAL_RSC_CLKPATH, + .block_num = 0U, + .channel_num = 0U, +}; +const cyhal_resource_inst_t srss_0_clock_0_pathmux_1_obj = { + .type = CYHAL_RSC_CLKPATH, + .block_num = 1U, + .channel_num = 0U, +}; +const cyhal_resource_inst_t srss_0_clock_0_pathmux_2_obj = { + .type = CYHAL_RSC_CLKPATH, + .block_num = 2U, + .channel_num = 0U, +}; +const cyhal_resource_inst_t srss_0_clock_0_pathmux_3_obj = { + .type = CYHAL_RSC_CLKPATH, + .block_num = 3U, + .channel_num = 0U, +}; +const cyhal_resource_inst_t srss_0_clock_0_pathmux_4_obj = { + .type = CYHAL_RSC_CLKPATH, + .block_num = 4U, + .channel_num = 0U, +}; +const cyhal_resource_inst_t srss_0_clock_0_pathmux_5_obj = { + .type = CYHAL_RSC_CLKPATH, + .block_num = 5U, + .channel_num = 0U, +}; +#endif // defined (CY_USING_HAL) +#if (!defined(CY_DEVICE_SECURE)) +static const cy_stc_pll_manual_config_t srss_0_clock_0_pll_0_pllConfig = { + .feedbackDiv = 30, + .referenceDiv = 1, + .outputDiv = 5, + .lfMode = false, + .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO, +}; +#endif //(!defined(CY_DEVICE_SECURE)) + +__WEAK void __NO_RETURN cycfg_ClockStartupError(uint32_t error) +{ + (void) error; /* Suppress the compiler warning */ + while (1) + ; +} +#if (!defined(CY_DEVICE_SECURE)) +__STATIC_INLINE void Cy_SysClk_FllDeInit() +{ + Cy_SysClk_FllDisable(); +} +#endif //(!defined(CY_DEVICE_SECURE)) +#if defined(CY_DEVICE_SECURE) +void init_cycfg_secure_struct(cy_stc_pra_system_config_t * secure_config) +{ +#ifdef CY_CFG_PWR_ENABLED + secure_config->powerEnable = CY_CFG_PWR_ENABLED; +#endif /* CY_CFG_PWR_ENABLED */ + +#ifdef CY_CFG_PWR_USING_LDO + secure_config->ldoEnable = CY_CFG_PWR_USING_LDO; +#endif /* CY_CFG_PWR_USING_LDO */ + +#ifdef CY_CFG_PWR_USING_PMIC + secure_config->pmicEnable = CY_CFG_PWR_USING_PMIC; +#endif /* CY_CFG_PWR_USING_PMIC */ + +#ifdef CY_CFG_PWR_VBACKUP_USING_VDDD + secure_config->vBackupVDDDEnable = CY_CFG_PWR_VBACKUP_USING_VDDD; +#endif /* CY_CFG_PWR_VBACKUP_USING_VDDD */ + +#ifdef CY_CFG_PWR_USING_ULP + secure_config->ulpEnable = CY_CFG_PWR_USING_ULP; +#endif /* CY_CFG_PWR_USING_ULP */ + +#ifdef CY_CFG_SYSCLK_ECO_ENABLED + secure_config->ecoEnable = CY_CFG_SYSCLK_ECO_ENABLED; +#endif /* CY_CFG_SYSCLK_ECO_ENABLED */ + +#ifdef CY_CFG_SYSCLK_EXTCLK_ENABLED + secure_config->extClkEnable = CY_CFG_SYSCLK_EXTCLK_ENABLED; +#endif /* CY_CFG_SYSCLK_EXTCLK_ENABLED */ + +#ifdef CY_CFG_SYSCLK_ILO_ENABLED + secure_config->iloEnable = CY_CFG_SYSCLK_ILO_ENABLED; +#endif /* CY_CFG_SYSCLK_ILO_ENABLED */ + +#ifdef CY_CFG_SYSCLK_WCO_ENABLED + secure_config->wcoEnable = CY_CFG_SYSCLK_WCO_ENABLED; +#endif /* CY_CFG_SYSCLK_WCO_ENABLED */ + +#ifdef CY_CFG_SYSCLK_FLL_ENABLED + secure_config->fllEnable = CY_CFG_SYSCLK_FLL_ENABLED; +#endif /* CY_CFG_SYSCLK_FLL_ENABLED */ + +#ifdef CY_CFG_SYSCLK_PLL0_ENABLED + secure_config->pll0Enable = CY_CFG_SYSCLK_PLL0_ENABLED; +#endif /* CY_CFG_SYSCLK_PLL0_ENABLED */ + +#ifdef CY_CFG_SYSCLK_PLL1_ENABLED + secure_config->pll1Enable = CY_CFG_SYSCLK_PLL1_ENABLED; +#endif /* CY_CFG_SYSCLK_PLL1_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKPATH0_ENABLED + secure_config->path0Enable = CY_CFG_SYSCLK_CLKPATH0_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKPATH0_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + secure_config->path1Enable = CY_CFG_SYSCLK_CLKPATH1_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKPATH1_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKPATH2_ENABLED + secure_config->path2Enable = CY_CFG_SYSCLK_CLKPATH2_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKPATH2_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKPATH3_ENABLED + secure_config->path3Enable = CY_CFG_SYSCLK_CLKPATH3_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKPATH3_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKPATH4_ENABLED + secure_config->path4Enable = CY_CFG_SYSCLK_CLKPATH4_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKPATH4_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKPATH5_ENABLED + secure_config->path5Enable = CY_CFG_SYSCLK_CLKPATH5_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKPATH5_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKFAST_ENABLED + secure_config->clkFastEnable = CY_CFG_SYSCLK_CLKFAST_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKFAST_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKPERI_ENABLED + secure_config->clkPeriEnable = CY_CFG_SYSCLK_CLKPERI_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKPERI_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKSLOW_ENABLED + secure_config->clkSlowEnable = CY_CFG_SYSCLK_CLKSLOW_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKSLOW_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKHF0_ENABLED + secure_config->clkHF0Enable = CY_CFG_SYSCLK_CLKHF0_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKHF0_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKHF1_ENABLED + secure_config->clkHF1Enable = CY_CFG_SYSCLK_CLKHF1_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKHF1_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKHF2_ENABLED + secure_config->clkHF2Enable = CY_CFG_SYSCLK_CLKHF2_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKHF2_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKHF3_ENABLED + secure_config->clkHF3Enable = CY_CFG_SYSCLK_CLKHF3_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKHF3_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKHF4_ENABLED + secure_config->clkHF4Enable = CY_CFG_SYSCLK_CLKHF4_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKHF4_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKHF5_ENABLED + secure_config->clkHF5Enable = CY_CFG_SYSCLK_CLKHF5_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKHF5_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKPUMP_ENABLED + secure_config->clkPumpEnable = CY_CFG_SYSCLK_CLKPUMP_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKPUMP_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKLF_ENABLED + secure_config->clkLFEnable = CY_CFG_SYSCLK_CLKLF_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKLF_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKBAK_ENABLED + secure_config->clkBakEnable = CY_CFG_SYSCLK_CLKBAK_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKBAK_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKTIMER_ENABLED + secure_config->clkTimerEnable = CY_CFG_SYSCLK_CLKTIMER_ENABLED; +#endif /* CY_CFG_SYSCLK_CLKTIMER_ENABLED */ + +#ifdef CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED +#error Configuration Error : ALT SYSTICK cannot be enabled for Secure devices. +#endif /* CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED */ + +#ifdef CY_CFG_SYSCLK_PILO_ENABLED + secure_config->piloEnable = CY_CFG_SYSCLK_PILO_ENABLED; +#endif /* CY_CFG_SYSCLK_PILO_ENABLED */ + +#ifdef CY_CFG_SYSCLK_ALTHF_ENABLED + secure_config->clkAltHfEnable = CY_CFG_SYSCLK_ALTHF_ENABLED; +#endif /* CY_CFG_SYSCLK_ALTHF_ENABLED */ + +#ifdef CY_CFG_PWR_LDO_VOLTAGE + secure_config->ldoVoltage = CY_CFG_PWR_LDO_VOLTAGE; +#endif /* CY_CFG_PWR_LDO_VOLTAGE */ + +#ifdef CY_CFG_PWR_REGULATOR_MODE_MIN + secure_config->pwrCurrentModeMin = CY_CFG_PWR_REGULATOR_MODE_MIN; +#endif /* CY_CFG_PWR_REGULATOR_MODE_MIN */ + +#ifdef CY_CFG_PWR_BUCK_VOLTAGE + secure_config->buckVoltage = CY_CFG_PWR_BUCK_VOLTAGE; +#endif /* CY_CFG_PWR_BUCK_VOLTAGE */ + +#ifdef CY_CFG_SYSCLK_ECO_FREQ + secure_config->ecoFreqHz = CY_CFG_SYSCLK_ECO_FREQ; +#endif /* CY_CFG_SYSCLK_ECO_FREQ */ + +#ifdef CY_CFG_SYSCLK_ECO_CLOAD + secure_config->ecoLoad = CY_CFG_SYSCLK_ECO_CLOAD; +#endif /* CY_CFG_SYSCLK_ECO_CLOAD */ + +#ifdef CY_CFG_SYSCLK_ECO_ESR + secure_config->ecoEsr = CY_CFG_SYSCLK_ECO_ESR; +#endif /* CY_CFG_SYSCLK_ECO_ESR */ + +#ifdef CY_CFG_SYSCLK_ECO_DRIVE_LEVEL + secure_config->ecoDriveLevel = CY_CFG_SYSCLK_ECO_DRIVE_LEVEL; +#endif /* CY_CFG_SYSCLK_ECO_DRIVE_LEVEL */ + +#ifdef CY_CFG_SYSCLK_ECO_GPIO_IN_PRT + secure_config->ecoInPort = CY_CFG_SYSCLK_ECO_GPIO_IN_PRT; +#endif /* CY_CFG_SYSCLK_ECO_GPIO_IN_PRT */ + +#ifdef CY_CFG_SYSCLK_ECO_GPIO_OUT_PRT + secure_config->ecoOutPort = CY_CFG_SYSCLK_ECO_GPIO_OUT_PRT; +#endif /* CY_CFG_SYSCLK_ECO_GPIO_OUT_PRT */ + +#ifdef CY_CFG_SYSCLK_ECO_GPIO_IN_PIN + secure_config->ecoInPinNum = CY_CFG_SYSCLK_ECO_GPIO_IN_PIN; +#endif /* CY_CFG_SYSCLK_ECO_GPIO_IN_PIN */ + +#ifdef CY_CFG_SYSCLK_ECO_GPIO_OUT_PIN + secure_config->ecoOutPinNum = CY_CFG_SYSCLK_ECO_GPIO_OUT_PIN; +#endif /* CY_CFG_SYSCLK_ECO_GPIO_OUT_PIN */ + +#ifdef CY_CFG_SYSCLK_EXTCLK_FREQ + secure_config->extClkFreqHz = CY_CFG_SYSCLK_EXTCLK_FREQ; +#endif /* CY_CFG_SYSCLK_EXTCLK_FREQ */ + +#ifdef CY_CFG_SYSCLK_EXTCLK_GPIO_PRT + secure_config->extClkPort = CY_CFG_SYSCLK_EXTCLK_GPIO_PRT; +#endif /* CY_CFG_SYSCLK_EXTCLK_GPIO_PRT */ + +#ifdef CY_CFG_SYSCLK_EXTCLK_GPIO_PIN + secure_config->extClkPinNum = CY_CFG_SYSCLK_EXTCLK_GPIO_PIN; +#endif /* CY_CFG_SYSCLK_EXTCLK_GPIO_PIN */ + +#ifdef CY_CFG_SYSCLK_EXTCLK_GPIO_HSIOM + secure_config->extClkHsiom = CY_CFG_SYSCLK_EXTCLK_GPIO_HSIOM; +#endif /* CY_CFG_SYSCLK_EXTCLK_GPIO_HSIOM */ + +#ifdef CY_CFG_SYSCLK_ILO_HIBERNATE + secure_config->iloHibernateON = CY_CFG_SYSCLK_ILO_HIBERNATE; +#endif /* CY_CFG_SYSCLK_ILO_HIBERNATE */ + +#ifdef CY_CFG_SYSCLK_WCO_BYPASS + secure_config->bypassEnable = CY_CFG_SYSCLK_WCO_BYPASS; +#endif /* CY_CFG_SYSCLK_WCO_BYPASS */ + +#ifdef CY_CFG_SYSCLK_WCO_IN_PRT + secure_config->wcoInPort = CY_CFG_SYSCLK_WCO_IN_PRT; +#endif /* CY_CFG_SYSCLK_WCO_IN_PRT */ + +#ifdef CY_CFG_SYSCLK_WCO_OUT_PRT + secure_config->wcoOutPort = CY_CFG_SYSCLK_WCO_OUT_PRT; +#endif /* CY_CFG_SYSCLK_WCO_OUT_PRT */ + +#ifdef CY_CFG_SYSCLK_WCO_IN_PIN + secure_config->wcoInPinNum = CY_CFG_SYSCLK_WCO_IN_PIN; +#endif /* CY_CFG_SYSCLK_WCO_IN_PIN */ + +#ifdef CY_CFG_SYSCLK_WCO_OUT_PIN + secure_config->wcoOutPinNum = CY_CFG_SYSCLK_WCO_OUT_PIN; +#endif /* CY_CFG_SYSCLK_WCO_OUT_PIN */ + +#ifdef CY_CFG_SYSCLK_FLL_OUT_FREQ + secure_config->fllOutFreqHz = CY_CFG_SYSCLK_FLL_OUT_FREQ; +#endif /* CY_CFG_SYSCLK_FLL_OUT_FREQ */ + +#ifdef CY_CFG_SYSCLK_FLL_MULT + secure_config->fllMult = CY_CFG_SYSCLK_FLL_MULT; +#endif /* CY_CFG_SYSCLK_FLL_MULT */ + +#ifdef CY_CFG_SYSCLK_FLL_REFDIV + secure_config->fllRefDiv = CY_CFG_SYSCLK_FLL_REFDIV; +#endif /* CY_CFG_SYSCLK_FLL_REFDIV */ + +#ifdef CY_CFG_SYSCLK_FLL_CCO_RANGE + secure_config->fllCcoRange = CY_CFG_SYSCLK_FLL_CCO_RANGE; +#endif /* CY_CFG_SYSCLK_FLL_CCO_RANGE */ + +#ifdef CY_CFG_SYSCLK_FLL_ENABLE_OUTDIV + secure_config->enableOutputDiv = CY_CFG_SYSCLK_FLL_ENABLE_OUTDIV; +#endif /* CY_CFG_SYSCLK_FLL_ENABLE_OUTDIV */ + +#ifdef CY_CFG_SYSCLK_FLL_LOCK_TOLERANCE + secure_config->lockTolerance = CY_CFG_SYSCLK_FLL_LOCK_TOLERANCE; +#endif /* CY_CFG_SYSCLK_FLL_LOCK_TOLERANCE */ + +#ifdef CY_CFG_SYSCLK_FLL_IGAIN + secure_config->igain = CY_CFG_SYSCLK_FLL_IGAIN; +#endif /* CY_CFG_SYSCLK_FLL_IGAIN */ + +#ifdef CY_CFG_SYSCLK_FLL_PGAIN + secure_config->pgain = CY_CFG_SYSCLK_FLL_PGAIN; +#endif /* CY_CFG_SYSCLK_FLL_PGAIN */ + +#ifdef CY_CFG_SYSCLK_FLL_SETTLING_COUNT + secure_config->settlingCount = CY_CFG_SYSCLK_FLL_SETTLING_COUNT; +#endif /* CY_CFG_SYSCLK_FLL_SETTLING_COUNT */ + +#ifdef CY_CFG_SYSCLK_FLL_OUTPUT_MODE + secure_config->outputMode = CY_CFG_SYSCLK_FLL_OUTPUT_MODE; +#endif /* CY_CFG_SYSCLK_FLL_OUTPUT_MODE */ + +#ifdef CY_CFG_SYSCLK_FLL_CCO_FREQ + secure_config->ccoFreq = CY_CFG_SYSCLK_FLL_CCO_FREQ; +#endif /* CY_CFG_SYSCLK_FLL_CCO_FREQ */ + +#ifdef CY_CFG_SYSCLK_PLL0_FEEDBACK_DIV + secure_config->pll0FeedbackDiv = CY_CFG_SYSCLK_PLL0_FEEDBACK_DIV; +#endif /* CY_CFG_SYSCLK_PLL0_FEEDBACK_DIV */ + +#ifdef CY_CFG_SYSCLK_PLL0_REFERENCE_DIV + secure_config->pll0ReferenceDiv = CY_CFG_SYSCLK_PLL0_REFERENCE_DIV; +#endif /* CY_CFG_SYSCLK_PLL0_REFERENCE_DIV */ + +#ifdef CY_CFG_SYSCLK_PLL0_OUTPUT_DIV + secure_config->pll0OutputDiv = CY_CFG_SYSCLK_PLL0_OUTPUT_DIV; +#endif /* CY_CFG_SYSCLK_PLL0_OUTPUT_DIV */ + +#ifdef CY_CFG_SYSCLK_PLL0_LF_MODE + secure_config->pll0LfMode = CY_CFG_SYSCLK_PLL0_LF_MODE; +#endif /* CY_CFG_SYSCLK_PLL0_LF_MODE */ + +#ifdef CY_CFG_SYSCLK_PLL0_OUTPUT_MODE + secure_config->pll0OutputMode = CY_CFG_SYSCLK_PLL0_OUTPUT_MODE; +#endif /* CY_CFG_SYSCLK_PLL0_OUTPUT_MODE */ + +#ifdef CY_CFG_SYSCLK_PLL0_OUTPUT_FREQ + secure_config->pll0OutFreqHz = CY_CFG_SYSCLK_PLL0_OUTPUT_FREQ; +#endif /* CY_CFG_SYSCLK_PLL0_OUTPUT_FREQ */ + +#ifdef CY_CFG_SYSCLK_PLL1_FEEDBACK_DIV + secure_config->pll1FeedbackDiv = CY_CFG_SYSCLK_PLL1_FEEDBACK_DIV; +#endif /* CY_CFG_SYSCLK_PLL1_FEEDBACK_DIV */ + +#ifdef CY_CFG_SYSCLK_PLL1_REFERENCE_DIV + secure_config->pll1ReferenceDiv = CY_CFG_SYSCLK_PLL1_REFERENCE_DIV; +#endif /* CY_CFG_SYSCLK_PLL1_REFERENCE_DIV */ + +#ifdef CY_CFG_SYSCLK_PLL1_OUTPUT_DIV + secure_config->pll1OutputDiv = CY_CFG_SYSCLK_PLL1_OUTPUT_DIV; +#endif /* CY_CFG_SYSCLK_PLL1_OUTPUT_DIV */ + +#ifdef CY_CFG_SYSCLK_PLL1_LF_MODE + secure_config->pll1LfMode = CY_CFG_SYSCLK_PLL1_LF_MODE; +#endif /* CY_CFG_SYSCLK_PLL1_LF_MODE */ + +#ifdef CY_CFG_SYSCLK_PLL1_OUTPUT_MODE + secure_config->pll1OutputMode = CY_CFG_SYSCLK_PLL1_OUTPUT_MODE; +#endif /* CY_CFG_SYSCLK_PLL1_OUTPUT_MODE */ + +#ifdef CY_CFG_SYSCLK_PLL1_OUTPUT_FREQ + secure_config->pll1OutFreqHz = CY_CFG_SYSCLK_PLL1_OUTPUT_FREQ; +#endif /* CY_CFG_SYSCLK_PLL1_OUTPUT_FREQ */ + +#ifdef CY_CFG_SYSCLK_CLKPATH0_SOURCE + secure_config->path0Src = CY_CFG_SYSCLK_CLKPATH0_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKPATH0_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKPATH1_SOURCE + secure_config->path1Src = CY_CFG_SYSCLK_CLKPATH1_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKPATH1_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKPATH2_SOURCE + secure_config->path2Src = CY_CFG_SYSCLK_CLKPATH2_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKPATH2_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKPATH3_SOURCE + secure_config->path3Src = CY_CFG_SYSCLK_CLKPATH3_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKPATH3_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKPATH4_SOURCE + secure_config->path4Src = CY_CFG_SYSCLK_CLKPATH4_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKPATH4_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKPATH5_SOURCE + secure_config->path5Src = CY_CFG_SYSCLK_CLKPATH5_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKPATH5_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKFAST_DIVIDER + secure_config->clkFastDiv = CY_CFG_SYSCLK_CLKFAST_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKFAST_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKPERI_DIVIDER + secure_config->clkPeriDiv = CY_CFG_SYSCLK_CLKPERI_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKPERI_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKSLOW_DIVIDER + secure_config->clkSlowDiv = CY_CFG_SYSCLK_CLKSLOW_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKSLOW_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKHF0_CLKPATH + secure_config->hf0Source = CY_CFG_SYSCLK_CLKHF0_CLKPATH; +#endif /* CY_CFG_SYSCLK_CLKHF0_CLKPATH */ + +#ifdef CY_CFG_SYSCLK_CLKHF0_DIVIDER + secure_config->hf0Divider = CY_CFG_SYSCLK_CLKHF0_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKHF0_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ + secure_config->hf0OutFreqMHz = CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ; +#endif /* CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ */ + +#ifdef CY_CFG_SYSCLK_CLKHF1_CLKPATH + secure_config->hf1Source = CY_CFG_SYSCLK_CLKHF1_CLKPATH; +#endif /* CY_CFG_SYSCLK_CLKHF1_CLKPATH */ + +#ifdef CY_CFG_SYSCLK_CLKHF1_DIVIDER + secure_config->hf1Divider = CY_CFG_SYSCLK_CLKHF1_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKHF1_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKHF1_FREQ_MHZ + secure_config->hf1OutFreqMHz = CY_CFG_SYSCLK_CLKHF1_FREQ_MHZ; +#endif /* CY_CFG_SYSCLK_CLKHF1_FREQ_MHZ */ + +#ifdef CY_CFG_SYSCLK_CLKHF2_CLKPATH + secure_config->hf2Source = CY_CFG_SYSCLK_CLKHF2_CLKPATH; +#endif /* CY_CFG_SYSCLK_CLKHF2_CLKPATH */ + +#ifdef CY_CFG_SYSCLK_CLKHF2_DIVIDER + secure_config->hf2Divider = CY_CFG_SYSCLK_CLKHF2_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKHF2_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ + secure_config->hf2OutFreqMHz = CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ; +#endif /* CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ */ + +#ifdef CY_CFG_SYSCLK_CLKHF3_CLKPATH + secure_config->hf3Source = CY_CFG_SYSCLK_CLKHF3_CLKPATH; +#endif /* CY_CFG_SYSCLK_CLKHF3_CLKPATH */ + +#ifdef CY_CFG_SYSCLK_CLKHF3_DIVIDER + secure_config->hf3Divider = CY_CFG_SYSCLK_CLKHF3_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKHF3_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKHF3_FREQ_MHZ + secure_config->hf3OutFreqMHz = CY_CFG_SYSCLK_CLKHF3_FREQ_MHZ; +#endif /* CY_CFG_SYSCLK_CLKHF3_FREQ_MHZ */ + +#ifdef CY_CFG_SYSCLK_CLKHF4_CLKPATH + secure_config->hf4Source = CY_CFG_SYSCLK_CLKHF4_CLKPATH; +#endif /* CY_CFG_SYSCLK_CLKHF4_CLKPATH */ + +#ifdef CY_CFG_SYSCLK_CLKHF4_DIVIDER + secure_config->hf4Divider = CY_CFG_SYSCLK_CLKHF4_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKHF4_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKHF4_FREQ_MHZ + secure_config->hf4OutFreqMHz = CY_CFG_SYSCLK_CLKHF4_FREQ_MHZ; +#endif /* CY_CFG_SYSCLK_CLKHF4_FREQ_MHZ */ + +#ifdef CY_CFG_SYSCLK_CLKHF5_CLKPATH + secure_config->hf5Source = CY_CFG_SYSCLK_CLKHF5_CLKPATH; +#endif /* CY_CFG_SYSCLK_CLKHF5_CLKPATH */ + +#ifdef CY_CFG_SYSCLK_CLKHF5_DIVIDER + secure_config->hf5Divider = CY_CFG_SYSCLK_CLKHF5_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKHF5_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKHF5_FREQ_MHZ + secure_config->hf5OutFreqMHz = CY_CFG_SYSCLK_CLKHF5_FREQ_MHZ; +#endif /* CY_CFG_SYSCLK_CLKHF5_FREQ_MHZ */ + +#ifdef CY_CFG_SYSCLK_CLKPUMP_SOURCE + secure_config->pumpSource = CY_CFG_SYSCLK_CLKPUMP_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKPUMP_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKPUMP_DIVIDER + secure_config->pumpDivider = CY_CFG_SYSCLK_CLKPUMP_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKPUMP_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKLF_SOURCE + secure_config->clkLfSource = CY_CFG_SYSCLK_CLKLF_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKLF_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKBAK_SOURCE + secure_config->clkBakSource = CY_CFG_SYSCLK_CLKBAK_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKBAK_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKTIMER_SOURCE + secure_config->clkTimerSource = CY_CFG_SYSCLK_CLKTIMER_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKTIMER_SOURCE */ + +#ifdef CY_CFG_SYSCLK_CLKTIMER_DIVIDER + secure_config->clkTimerDivider = CY_CFG_SYSCLK_CLKTIMER_DIVIDER; +#endif /* CY_CFG_SYSCLK_CLKTIMER_DIVIDER */ + +#ifdef CY_CFG_SYSCLK_CLKALTSYSTICK_SOURCE + secure_config->clkSrcAltSysTick = CY_CFG_SYSCLK_CLKALTSYSTICK_SOURCE; +#endif /* CY_CFG_SYSCLK_CLKALTSYSTICK_SOURCE */ + +#ifdef CY_CFG_SYSCLK_ALTHF_BLE_ECO_CLOAD + secure_config->altHFcLoad = CY_CFG_SYSCLK_ALTHF_BLE_ECO_CLOAD; +#endif /* CY_CFG_SYSCLK_ALTHF_BLE_ECO_CLOAD */ + +#ifdef CY_CFG_SYSCLK_ALTHF_BLE_ECO_TIME + secure_config->altHFxtalStartUpTime = CY_CFG_SYSCLK_ALTHF_BLE_ECO_TIME; +#endif /* CY_CFG_SYSCLK_ALTHF_BLE_ECO_TIME */ + +#ifdef CY_CFG_SYSCLK_ALTHF_BLE_ECO_FREQ + secure_config->altHFclkFreq = CY_CFG_SYSCLK_ALTHF_BLE_ECO_FREQ; +#endif /* CY_CFG_SYSCLK_ALTHF_BLE_ECO_FREQ */ + +#ifdef CY_CFG_SYSCLK_ALTHF_BLE_ECO_CLK_DIV + secure_config->altHFsysClkDiv = CY_CFG_SYSCLK_ALTHF_BLE_ECO_CLK_DIV; +#endif /* CY_CFG_SYSCLK_ALTHF_BLE_ECO_CLK_DIV */ + +#ifdef CY_CFG_SYSCLK_ALTHF_BLE_ECO_VOL_REGULATOR + secure_config->altHFvoltageReg = CY_CFG_SYSCLK_ALTHF_BLE_ECO_VOL_REGULATOR; +#endif /* CY_CFG_SYSCLK_ALTHF_BLE_ECO_VOL_REGULATOR */ +} +#endif // defined (CY_DEVICE_SECURE) +__STATIC_INLINE void Cy_SysClk_ClkAltSysTickInit() +{ + Cy_SysTick_Init(CY_CFG_SYSCLK_CLKALTSYSTICK_SOURCE, CY_CFG_SYSCLK_CLKALTSYSTICK_TICKS); +} +#if (!defined(CY_DEVICE_SECURE)) +__STATIC_INLINE void Cy_SysClk_ClkBakInit() +{ + Cy_SysClk_ClkBakSetSource(CY_SYSCLK_BAK_IN_CLKLF); +} +__STATIC_INLINE void Cy_SysClk_ClkFastInit() +{ + Cy_SysClk_ClkFastSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_FllInit() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllManualConfigure(&srss_0_clock_0_fll_0_fllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllEnable(200000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkHf0Init() +{ + Cy_SysClk_ClkHfSetSource(0U, CY_CFG_SYSCLK_CLKHF0_CLKPATH); + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); +} +__STATIC_INLINE void Cy_SysClk_IloInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_IloEnable(); + Cy_SysClk_IloHibernateOn(true); +} +__STATIC_INLINE void Cy_SysClk_ClkLfInit() +{ + /* The WDT is unlocked in the default startup code */ + Cy_SysClk_ClkLfSetSource(CY_SYSCLK_CLKLF_IN_WCO); +} +__STATIC_INLINE void Cy_SysClk_ClkPath0Init() +{ + Cy_SysClk_ClkPathSetSource(0U, CY_CFG_SYSCLK_CLKPATH0_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath1Init() +{ + Cy_SysClk_ClkPathSetSource(1U, CY_CFG_SYSCLK_CLKPATH1_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath2Init() +{ + Cy_SysClk_ClkPathSetSource(2U, CY_CFG_SYSCLK_CLKPATH2_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath3Init() +{ + Cy_SysClk_ClkPathSetSource(3U, CY_CFG_SYSCLK_CLKPATH3_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath4Init() +{ + Cy_SysClk_ClkPathSetSource(4U, CY_CFG_SYSCLK_CLKPATH4_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPath5Init() +{ + Cy_SysClk_ClkPathSetSource(5U, CY_CFG_SYSCLK_CLKPATH5_SOURCE); +} +__STATIC_INLINE void Cy_SysClk_ClkPeriInit() +{ + Cy_SysClk_ClkPeriSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_Pll0Init() +{ + if (CY_SYSCLK_SUCCESS != Cy_SysClk_PllManualConfigure(1U, &srss_0_clock_0_pll_0_pllConfig)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_PLL_ERROR); + } + if (CY_SYSCLK_SUCCESS != Cy_SysClk_PllEnable(1U, 10000u)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_PLL_ERROR); + } +} +__STATIC_INLINE void Cy_SysClk_ClkSlowInit() +{ + Cy_SysClk_ClkSlowSetDivider(0U); +} +__STATIC_INLINE void Cy_SysClk_ClkTimerInit() +{ + Cy_SysClk_ClkTimerDisable(); + Cy_SysClk_ClkTimerSetSource(CY_SYSCLK_CLKTIMER_IN_IMO); + Cy_SysClk_ClkTimerSetDivider(0U); + Cy_SysClk_ClkTimerEnable(); +} +__STATIC_INLINE void Cy_SysClk_WcoInit() +{ + (void) Cy_GPIO_Pin_FastInit(GPIO_PRT0, 0U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + (void) Cy_GPIO_Pin_FastInit(GPIO_PRT0, 1U, 0x00U, 0x00U, HSIOM_SEL_GPIO); + if (CY_SYSCLK_SUCCESS != Cy_SysClk_WcoEnable(1000000UL)) + { + cycfg_ClockStartupError(CY_CFG_SYSCLK_WCO_ERROR); + } +} +__STATIC_INLINE void init_cycfg_power(void) +{ + /* Reset the Backup domain on POR, XRES, BOD only if Backup domain is supplied by VDDD */ +#if (CY_CFG_PWR_VBACKUP_USING_VDDD) +#ifdef CY_CFG_SYSCLK_ILO_ENABLED + if (0u == Cy_SysLib_GetResetReason() /* POR, XRES, or BOD */) + { +#if CY_CFG_SYSCLK_WCO_ENABLED + uint32_t wcoTrim = Cy_SysLib_GetWcoTrim(); + if (CY_SYSLIB_SUCCESS != Cy_SysLib_ResetBackupDomain()) + { + Cy_SysLib_DelayUs(1U); + if (CY_SYSLIB_SUCCESS != Cy_SysLib_GetResetStatus()) + { + cycfg_ClockStartupError(CY_CFG_PWR_BKP_ERROR); + } + } + Cy_SysLib_SetWcoTrim(wcoTrim); +#else /* CY_CFG_SYSCLK_WCO_ENABLED */ + (void) Cy_SysLib_ResetBackupDomain(); +#endif /* CY_CFG_SYSCLK_WCO_ENABLED */ + Cy_SysClk_IloDisable(); + Cy_SysClk_IloInit(); + } +#endif /* CY_CFG_SYSCLK_ILO_ENABLED */ +#endif /* CY_CFG_PWR_VBACKUP_USING_VDDD */ +/* Configure core regulator */ +#if !(defined(CY_DEVICE_SECURE)) +#if defined(CY_IP_M4CPUSS) +#if CY_CFG_PWR_USING_LDO + Cy_SysPm_LdoSetVoltage(CY_SYSPM_LDO_VOLTAGE_LP); +#else + Cy_SysPm_BuckEnable(CY_SYSPM_BUCK_OUT1_VOLTAGE_LP); +#endif /* CY_CFG_PWR_USING_LDO */ +#endif /* defined (CY_IP_M4CPUSS) */ +#if CY_CFG_PWR_REGULATOR_MODE_MIN + Cy_SysPm_SystemSetMinRegulatorCurrent(); +#else + Cy_SysPm_SystemSetNormalRegulatorCurrent(); +#endif /* CY_CFG_PWR_REGULATOR_MODE_MIN */ +#endif /* !(defined(CY_DEVICE_SECURE)) */ + /* Configure PMIC */ + Cy_SysPm_UnlockPmic(); +#if CY_CFG_PWR_USING_PMIC + Cy_SysPm_PmicEnableOutput(); +#else + Cy_SysPm_PmicDisableOutput(); +#endif /* CY_CFG_PWR_USING_PMIC */ +} +#endif //(!defined(CY_DEVICE_SECURE)) + +void init_cycfg_system(void) +{ + Cy_SysClk_PeriphAssignDivider(PCLK_CPUSS_CLOCK_TRACE_IN, CY_SYSCLK_DIV_8_BIT, 7U); +#if defined(CY_DEVICE_SECURE) + cy_en_pra_status_t configStatus; + init_cycfg_secure_struct(&srss_0_clock_0_secureConfig); +#if (((CY_CFG_SYSCLK_CLKPATH0_SOURCE_NUM >= 3UL) && (CY_CFG_SYSCLK_CLKPATH0_SOURCE_NUM <= 5UL)) && \ + (CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM == 0UL)) +#error Configuration Error : ALTHF, ILO, PILO cannot drive HF0. +#endif +#if (((CY_CFG_SYSCLK_CLKPATH1_SOURCE_NUM >= 3UL) && (CY_CFG_SYSCLK_CLKPATH1_SOURCE_NUM <= 5UL)) && \ + (CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM == 1UL)) +#error Configuration Error : ALTHF, ILO, PILO cannot drive HF0. +#endif +#if (((CY_CFG_SYSCLK_CLKPATH2_SOURCE_NUM >= 3UL) && (CY_CFG_SYSCLK_CLKPATH2_SOURCE_NUM <= 5UL)) && \ + (CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM == 2UL)) +#error Configuration Error : ALTHF, ILO, PILO cannot drive HF0. +#endif +#if (((CY_CFG_SYSCLK_CLKPATH3_SOURCE_NUM >= 3UL) && (CY_CFG_SYSCLK_CLKPATH3_SOURCE_NUM <= 5UL)) && \ + (CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM == 3UL)) +#error Configuration Error : ALTHF, ILO, PILO cannot drive HF0. +#endif +#if (((CY_CFG_SYSCLK_CLKPATH4_SOURCE_NUM >= 3UL) && (CY_CFG_SYSCLK_CLKPATH4_SOURCE_NUM <= 5UL)) && \ + (CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM == 4UL)) +#error Configuration Error : ALTHF, ILO, PILO cannot drive HF0. +#endif +#if (((CY_CFG_SYSCLK_CLKPATH5_SOURCE_NUM >= 3UL) && (CY_CFG_SYSCLK_CLKPATH5_SOURCE_NUM <= 5UL)) && \ + (CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM == 5UL)) +#error Configuration Error : ALTHF, ILO, PILO cannot drive HF0. +#endif + + configStatus = CY_PRA_FUNCTION_CALL_RETURN_PARAM(CY_PRA_MSG_TYPE_SYS_CFG_FUNC, CY_PRA_FUNC_INIT_CYCFG_DEVICE, + &srss_0_clock_0_secureConfig); + if (configStatus != CY_PRA_STATUS_SUCCESS) + { + cycfg_ClockStartupError(configStatus); + } +#ifdef CY_CFG_SYSCLK_EXTCLK_FREQ + Cy_SysClk_ExtClkSetFrequency(CY_CFG_SYSCLK_EXTCLK_FREQ); +#endif /* CY_CFG_SYSCLK_EXTCLK_FREQ */ +#else /* defined(CY_DEVICE_SECURE) */ + + /* Set worst case memory wait states (! ultra low power, 150 MHz), will update at the end */ + Cy_SysLib_SetWaitStates(false, 150UL); +#ifdef CY_CFG_PWR_ENABLED +#ifdef CY_CFG_PWR_INIT + init_cycfg_power(); +#else +#warning Power system will not be configured. Update power personality to v1.20 or later. +#endif /* CY_CFG_PWR_INIT */ +#endif /* CY_CFG_PWR_ENABLED */ + + /* Disable FLL */ + Cy_SysClk_FllDeInit(); + + /* Reset the core clock path to default and disable all the FLLs/PLLs */ + Cy_SysClk_ClkHfSetDivider(0U, CY_SYSCLK_CLKHF_NO_DIVIDE); + Cy_SysClk_ClkFastSetDivider(0U); + Cy_SysClk_ClkPeriSetDivider(1U); + Cy_SysClk_ClkSlowSetDivider(0U); + for (uint32_t pll = CY_SRSS_NUM_PLL; pll > 0UL; --pll) /* PLL 1 is the first PLL. 0 is invalid. */ + { + (void) Cy_SysClk_PllDisable(pll); + } + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH1, CY_SYSCLK_CLKPATH_IN_IMO); + + if ((CY_SYSCLK_CLKHF_IN_CLKPATH0 == Cy_SysClk_ClkHfGetSource(0UL)) && + (CY_SYSCLK_CLKPATH_IN_WCO == Cy_SysClk_ClkPathGetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0))) + { + Cy_SysClk_ClkHfSetSource(0U, CY_SYSCLK_CLKHF_IN_CLKPATH1); + } + + Cy_SysClk_ClkPathSetSource(CY_SYSCLK_CLKHF_IN_CLKPATH0, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH0); +#ifdef CY_IP_MXBLESS + (void) Cy_BLE_EcoReset(); +#endif + +/* Enable all source clocks */ +#ifdef CY_CFG_SYSCLK_PILO_ENABLED + Cy_SysClk_PiloInit(); +#endif + +#ifdef CY_CFG_SYSCLK_WCO_ENABLED + Cy_SysClk_WcoInit(); +#endif + +#ifdef CY_CFG_SYSCLK_CLKLF_ENABLED + Cy_SysClk_ClkLfInit(); +#endif + +#if (defined(CY_IP_M4CPUSS) && CY_CFG_SYSCLK_ALTHF_ENABLED) + Cy_SysClk_AltHfInit(); +#endif /* (defined(CY_IP_M4CPUSS) && CY_CFG_SYSCLK_ALTHF_ENABLED */ + +#ifdef CY_CFG_SYSCLK_ECO_ENABLED + Cy_SysClk_EcoInit(); +#endif + +#ifdef CY_CFG_SYSCLK_EXTCLK_ENABLED + Cy_SysClk_ExtClkInit(); +#endif + +/* Configure CPU clock dividers */ +#ifdef CY_CFG_SYSCLK_CLKFAST_ENABLED + Cy_SysClk_ClkFastInit(); +#endif + +#ifdef CY_CFG_SYSCLK_CLKPERI_ENABLED + Cy_SysClk_ClkPeriInit(); +#endif + +#ifdef CY_CFG_SYSCLK_CLKSLOW_ENABLED + Cy_SysClk_ClkSlowInit(); +#endif + +#if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE_NUM == 0x6UL) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM == 0U)) + /* Configure HFCLK0 to temporarily run from IMO to initialize other clocks */ + Cy_SysClk_ClkPathSetSource(1UL, CY_SYSCLK_CLKPATH_IN_IMO); + Cy_SysClk_ClkHfSetSource(0UL, CY_SYSCLK_CLKHF_IN_CLKPATH1); +#else +#ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + Cy_SysClk_ClkPath1Init(); +#endif +#endif + +/* Configure Path Clocks */ +#ifdef CY_CFG_SYSCLK_CLKPATH0_ENABLED + Cy_SysClk_ClkPath0Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH2_ENABLED + Cy_SysClk_ClkPath2Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH3_ENABLED + Cy_SysClk_ClkPath3Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH4_ENABLED + Cy_SysClk_ClkPath4Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH5_ENABLED + Cy_SysClk_ClkPath5Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH6_ENABLED + Cy_SysClk_ClkPath6Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH7_ENABLED + Cy_SysClk_ClkPath7Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH8_ENABLED + Cy_SysClk_ClkPath8Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH9_ENABLED + Cy_SysClk_ClkPath9Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH10_ENABLED + Cy_SysClk_ClkPath10Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH11_ENABLED + Cy_SysClk_ClkPath11Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH12_ENABLED + Cy_SysClk_ClkPath12Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH13_ENABLED + Cy_SysClk_ClkPath13Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH14_ENABLED + Cy_SysClk_ClkPath14Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKPATH15_ENABLED + Cy_SysClk_ClkPath15Init(); +#endif + +/* Configure and enable FLL */ +#ifdef CY_CFG_SYSCLK_FLL_ENABLED + Cy_SysClk_FllInit(); +#endif + + Cy_SysClk_ClkHf0Init(); + +#if ((CY_CFG_SYSCLK_CLKPATH0_SOURCE_NUM == 0x6UL) && (CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM == 0U)) +#ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED + /* Apply the ClkPath1 user setting */ + Cy_SysClk_ClkPath1Init(); +#endif +#endif + +/* Configure and enable PLLs */ +#ifdef CY_CFG_SYSCLK_PLL0_ENABLED + Cy_SysClk_Pll0Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL1_ENABLED + Cy_SysClk_Pll1Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL2_ENABLED + Cy_SysClk_Pll2Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL3_ENABLED + Cy_SysClk_Pll3Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL4_ENABLED + Cy_SysClk_Pll4Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL5_ENABLED + Cy_SysClk_Pll5Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL6_ENABLED + Cy_SysClk_Pll6Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL7_ENABLED + Cy_SysClk_Pll7Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL8_ENABLED + Cy_SysClk_Pll8Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL9_ENABLED + Cy_SysClk_Pll9Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL10_ENABLED + Cy_SysClk_Pll10Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL11_ENABLED + Cy_SysClk_Pll11Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL12_ENABLED + Cy_SysClk_Pll12Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL13_ENABLED + Cy_SysClk_Pll13Init(); +#endif +#ifdef CY_CFG_SYSCLK_PLL14_ENABLED + Cy_SysClk_Pll14Init(); +#endif + +/* Configure HF clocks */ +#ifdef CY_CFG_SYSCLK_CLKHF1_ENABLED + Cy_SysClk_ClkHf1Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF2_ENABLED + Cy_SysClk_ClkHf2Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF3_ENABLED + Cy_SysClk_ClkHf3Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF4_ENABLED + Cy_SysClk_ClkHf4Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF5_ENABLED + Cy_SysClk_ClkHf5Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF6_ENABLED + Cy_SysClk_ClkHf6Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF7_ENABLED + Cy_SysClk_ClkHf7Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF8_ENABLED + Cy_SysClk_ClkHf8Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF9_ENABLED + Cy_SysClk_ClkHf9Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF10_ENABLED + Cy_SysClk_ClkHf10Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF11_ENABLED + Cy_SysClk_ClkHf11Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF12_ENABLED + Cy_SysClk_ClkHf12Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF13_ENABLED + Cy_SysClk_ClkHf13Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF14_ENABLED + Cy_SysClk_ClkHf14Init(); +#endif +#ifdef CY_CFG_SYSCLK_CLKHF15_ENABLED + Cy_SysClk_ClkHf15Init(); +#endif + + /* Configure miscellaneous clocks */ +#ifdef CY_CFG_SYSCLK_CLKTIMER_ENABLED + Cy_SysClk_ClkTimerInit(); +#endif + +#ifdef CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED + Cy_SysClk_ClkAltSysTickInit(); +#endif + +#ifdef CY_CFG_SYSCLK_CLKPUMP_ENABLED + Cy_SysClk_ClkPumpInit(); +#endif + +#ifdef CY_CFG_SYSCLK_CLKBAK_ENABLED + Cy_SysClk_ClkBakInit(); +#endif + +/* Configure default enabled clocks */ +#ifdef CY_CFG_SYSCLK_ILO_ENABLED + Cy_SysClk_IloInit(); +#endif + +#ifndef CY_CFG_SYSCLK_IMO_ENABLED +#error the IMO must be enabled for proper chip operation +#endif + +#ifndef CY_CFG_SYSCLK_CLKHF0_ENABLED +#error the CLKHF0 must be enabled for proper chip operation +#endif + +#endif /* defined(CY_DEVICE_SECURE) */ + +#ifdef CY_CFG_SYSCLK_MFO_ENABLED + Cy_SysClk_MfoInit(); +#endif + +#ifdef CY_CFG_SYSCLK_CLKMF_ENABLED + Cy_SysClk_ClkMfInit(); +#endif + +#if (!defined(CY_DEVICE_SECURE)) +/* Set accurate flash wait states */ +#if (defined(CY_CFG_PWR_ENABLED) && defined(CY_CFG_SYSCLK_CLKHF0_ENABLED)) + Cy_SysLib_SetWaitStates(CY_CFG_PWR_USING_ULP != 0, CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ); +#endif + + /* Update System Core Clock values for correct Cy_SysLib_Delay functioning */ + SystemCoreClockUpdate(); +#ifndef CY_CFG_SYSCLK_ILO_ENABLED +#ifdef CY_CFG_SYSCLK_CLKLF_ENABLED + /* Wait 4 ILO cycles in case of unfinished CLKLF clock source transition */ + Cy_SysLib_DelayUs(200U); +#endif + Cy_SysClk_IloDisable(); + Cy_SysClk_IloHibernateOn(false); +#endif + +#endif /* (!defined(CY_DEVICE_SECURE)) */ + +#if defined(CY_CFG_SYSCLK_ECO_PRESCALER_ENABLED) + Cy_SysClk_EcoPrescalerInit(); +#endif // defined(CY_CFG_SYSCLK_ECO_PRESCALER_ENABLED) +} + +void reserve_cycfg_system(void) +{ +#if defined(CY_USING_HAL) + cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_0_obj); + cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_1_obj); + cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_2_obj); + cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_3_obj); + cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_4_obj); + cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_5_obj); +#endif // defined (CY_USING_HAL) +} diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_system.h b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_system.h new file mode 100644 index 00000000000000..0bc3082fa297da --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/cycfg_system.h @@ -0,0 +1,105 @@ +/******************************************************************************* + * File Name: cycfg_system.h + * + * Description: + * System configuration + * This file was automatically generated and should not be modified. + * Configurator Backend 3.10.0 + * device-db 4.100.0.4304 + * mtb-pdl-cat1 3.9.0.29592 + * + ******************************************************************************** + * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#if !defined(CYCFG_SYSTEM_H) +#define CYCFG_SYSTEM_H + +#include "cy_pra.h" +#include "cy_pra_cfg.h" +#include "cy_sysclk.h" +#include "cy_systick.h" +#include "cycfg_notices.h" +#if defined(CY_USING_HAL) +#include "cyhal_hwmgr.h" +#endif // defined (CY_USING_HAL) +#include "cy_gpio.h" +#include "cy_syspm.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +#define cpuss_0_dap_0_ENABLED 1U +#define srss_0_clock_0_ENABLED 1U +#define srss_0_clock_0_altsystickclk_0_ENABLED 1U +#define srss_0_clock_0_bakclk_0_ENABLED 1U +#define srss_0_clock_0_fastclk_0_ENABLED 1U +#define srss_0_clock_0_fll_0_ENABLED 1U +#define srss_0_clock_0_hfclk_0_ENABLED 1U +#define CY_CFG_SYSCLK_CLKHF0 0UL +#define CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM 0UL +#define srss_0_clock_0_ilo_0_ENABLED 1U +#define srss_0_clock_0_imo_0_ENABLED 1U +#define srss_0_clock_0_lfclk_0_ENABLED 1U +#define CY_CFG_SYSCLK_CLKLF_FREQ_HZ 32768 +#define CY_CFG_SYSCLK_CLKLF_SOURCE CY_SYSCLK_CLKLF_IN_WCO +#define srss_0_clock_0_pathmux_0_ENABLED 1U +#define srss_0_clock_0_pathmux_1_ENABLED 1U +#define srss_0_clock_0_pathmux_2_ENABLED 1U +#define srss_0_clock_0_pathmux_3_ENABLED 1U +#define srss_0_clock_0_pathmux_4_ENABLED 1U +#define srss_0_clock_0_pathmux_5_ENABLED 1U +#define srss_0_clock_0_periclk_0_ENABLED 1U +#define srss_0_clock_0_pll_0_ENABLED 1U +#define srss_0_clock_0_slowclk_0_ENABLED 1U +#define srss_0_clock_0_timerclk_0_ENABLED 1U +#define srss_0_clock_0_wco_0_ENABLED 1U +#define srss_0_power_0_ENABLED 1U +#define CY_CFG_PWR_MODE_LP 0x01UL +#define CY_CFG_PWR_MODE_ULP 0x02UL +#define CY_CFG_PWR_MODE_ACTIVE 0x04UL +#define CY_CFG_PWR_MODE_SLEEP 0x08UL +#define CY_CFG_PWR_MODE_DEEPSLEEP 0x10UL +#define CY_CFG_PWR_SYS_IDLE_MODE CY_CFG_PWR_MODE_DEEPSLEEP +#define CY_CFG_PWR_SYS_ACTIVE_MODE CY_CFG_PWR_MODE_LP +#define CY_CFG_PWR_DEEPSLEEP_LATENCY 0UL +#define CY_CFG_PWR_USING_LDO 1 +#define CY_CFG_PWR_VDDA_MV 3300 +#define CY_CFG_PWR_VDDD_MV 3300 +#define CY_CFG_PWR_VBACKUP_MV 3300 +#define CY_CFG_PWR_VDD_NS_MV 3300 +#define CY_CFG_PWR_VDDIO0_MV 3300 +#define CY_CFG_PWR_VDDIO1_MV 3300 + +#if defined(CY_USING_HAL) +extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_0_obj; +extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_1_obj; +extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_2_obj; +extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_3_obj; +extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_4_obj; +extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_5_obj; +#endif // defined (CY_USING_HAL) + +void init_cycfg_system(void); +void reserve_cycfg_system(void); + +#if defined(__cplusplus) +} +#endif + +#endif /* CYCFG_SYSTEM_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/qspi_config.cfg b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/qspi_config.cfg new file mode 100644 index 00000000000000..b751dcd0f17ff5 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/GeneratedSource/qspi_config.cfg @@ -0,0 +1,29 @@ +################################################################################ +# File Name: qspi_config.cfg +# +# Description: +# This file contains a SMIF Bank layout for use with OpenOCD. +# This file was automatically generated and should not be modified. +# QSPI Configurator: 4.10.0.1343 +# +################################################################################ +# Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or +# an affiliate of Cypress Semiconductor Corporation. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ + +set SMIF_BANKS { + 0 {addr 0x18000000 size 0x4000000 psize 0x00000200 esize 0x00040000} +} diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/cy_flash_map.h b/third_party/infineon/psoc6/psoc6_sdk/configs/cy_flash_map.h new file mode 100644 index 00000000000000..89031c0bb4e151 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/cy_flash_map.h @@ -0,0 +1,22 @@ +/* AUTO-GENERATED FILE, DO NOT EDIT. ALL CHANGES WILL BE LOST! */ +/* Platform: PSOC_062_2M */ +#ifndef CY_FLASH_MAP_H +#define CY_FLASH_MAP_H + +static struct flash_area flash_areas[] = { + { .fa_id = FLASH_AREA_BOOTLOADER, .fa_device_id = FLASH_DEVICE_INTERNAL_FLASH, .fa_off = 0x0U, .fa_size = 0x28000U }, + { .fa_id = FLASH_AREA_IMG_1_PRIMARY, .fa_device_id = FLASH_DEVICE_INTERNAL_FLASH, .fa_off = 0x28000U, .fa_size = 0x1c0000U }, + { .fa_id = FLASH_AREA_IMG_1_SECONDARY, + .fa_device_id = FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX), + .fa_off = 0x200U, + .fa_size = 0x1c0000U }, + { .fa_id = FLASH_AREA_IMAGE_SWAP_STATUS, .fa_device_id = FLASH_DEVICE_INTERNAL_FLASH, .fa_off = 0x1e8000U, .fa_size = 0x6c00U }, + { .fa_id = FLASH_AREA_IMAGE_SCRATCH, + .fa_device_id = FLASH_DEVICE_EXTERNAL_FLASH(CY_BOOT_EXTERNAL_DEVICE_INDEX), + .fa_off = 0x440000U, + .fa_size = 0x80000U } +}; + +struct flash_area * boot_area_descs[] = { &flash_areas[0U], &flash_areas[1U], &flash_areas[2U], + &flash_areas[3U], &flash_areas[4U], NULL }; +#endif /* CY_FLASH_MAP_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/configs/lwipopts.h b/third_party/infineon/psoc6/psoc6_sdk/configs/lwipopts.h index e0701a2cd268ac..5a10a49ce2ef67 100644 --- a/third_party/infineon/psoc6/psoc6_sdk/configs/lwipopts.h +++ b/third_party/infineon/psoc6/psoc6_sdk/configs/lwipopts.h @@ -18,8 +18,8 @@ /** * @file - * Compile-time configuration for LwIP on P6 platforms using the - * P6 SDK. + * Compile-time configuration for LwIP on PSOC6 platforms using the + * PSOC6 SDK. * */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/TARGET_CY8CKIT-062S2-43012 b/third_party/infineon/psoc6/psoc6_sdk/libs/TARGET_CY8CKIT-062S2-43012 index 7f3840aab53ff7..a085cc64ea8edc 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/TARGET_CY8CKIT-062S2-43012 +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/TARGET_CY8CKIT-062S2-43012 @@ -1 +1 @@ -Subproject commit 7f3840aab53ff773c5d95eaedb5aaaae9dd2af45 +Subproject commit a085cc64ea8edc368423b515cecb6787a48e2392 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/abstraction-rtos b/third_party/infineon/psoc6/psoc6_sdk/libs/abstraction-rtos index 23800dd03bf460..ccca0f72d96ef6 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/abstraction-rtos +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/abstraction-rtos @@ -1 +1 @@ -Subproject commit 23800dd03bf46064930127b22f915807cacbc1e7 +Subproject commit ccca0f72d96ef6dcdfe11402b244fdd420ae4792 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/anycloud-ota b/third_party/infineon/psoc6/psoc6_sdk/libs/anycloud-ota deleted file mode 160000 index adc942bb85aa6e..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/anycloud-ota +++ /dev/null @@ -1 +0,0 @@ -Subproject commit adc942bb85aa6e43021cbf31454314dbe6038e25 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/bluetooth-freertos b/third_party/infineon/psoc6/psoc6_sdk/libs/bluetooth-freertos deleted file mode 160000 index e0d13d8e1f49f5..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/bluetooth-freertos +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e0d13d8e1f49f5522043133856fa268d1a279b32 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/btstack b/third_party/infineon/psoc6/psoc6_sdk/libs/btstack index 205412d987da3f..d8f0984529fd9c 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/btstack +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/btstack @@ -1 +1 @@ -Subproject commit 205412d987da3f397201580ac2f98918d1bb0d57 +Subproject commit d8f0984529fd9cbc84bfbda62eb0f4d25063d630 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/btstack-integration b/third_party/infineon/psoc6/psoc6_sdk/libs/btstack-integration new file mode 160000 index 00000000000000..5e47501ee097ad --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/btstack-integration @@ -0,0 +1 @@ +Subproject commit 5e47501ee097add323be53bc7032fb50e110ad3e diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/cat1cm0p b/third_party/infineon/psoc6/psoc6_sdk/libs/cat1cm0p new file mode 160000 index 00000000000000..ddcdedbccd69b3 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/cat1cm0p @@ -0,0 +1 @@ +Subproject commit ddcdedbccd69b360da108328e689af2b4d6ac8cb diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/clib-support b/third_party/infineon/psoc6/psoc6_sdk/libs/clib-support index 8be98e6512bb03..97cf620d8cde5d 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/clib-support +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/clib-support @@ -1 +1 @@ -Subproject commit 8be98e6512bb03d11780530c35e23cd723a1cd72 +Subproject commit 97cf620d8cde5ded9844f7a2f8e0fe2f0ea65891 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/cmsis b/third_party/infineon/psoc6/psoc6_sdk/libs/cmsis new file mode 160000 index 00000000000000..ce02f641ebc221 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/cmsis @@ -0,0 +1 @@ +Subproject commit ce02f641ebc22103402260f9bb95698fd14086f1 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/connectivity-utilities b/third_party/infineon/psoc6/psoc6_sdk/libs/connectivity-utilities index 25d71a735e2165..3f6ae38680bb85 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/connectivity-utilities +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/connectivity-utilities @@ -1 +1 @@ -Subproject commit 25d71a735e2165e777948469cd68c419fd75b3a5 +Subproject commit 3f6ae38680bb85061829733c8f1037a6299ce6c5 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/core-lib b/third_party/infineon/psoc6/psoc6_sdk/libs/core-lib index 7e6892ee1eeabc..a74be8b06601cb 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/core-lib +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/core-lib @@ -1 +1 @@ -Subproject commit 7e6892ee1eeabc8f6c25fbf02cb00ff43bd3ac73 +Subproject commit a74be8b06601cbd698dc80b1cdad772412c12d04 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/core-make b/third_party/infineon/psoc6/psoc6_sdk/libs/core-make index 251ade90cd5600..b962a1ed157c34 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/core-make +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/core-make @@ -1 +1 @@ -Subproject commit 251ade90cd56005369ced67cf0583171783b1cd1 +Subproject commit b962a1ed157c34ee24ab7002dadcc39276dd5218 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/freertos b/third_party/infineon/psoc6/psoc6_sdk/libs/freertos index eec60193e7f5d4..c2c8a9b26fd8b3 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/freertos +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/freertos @@ -1 +1 @@ -Subproject commit eec60193e7f5d4e239bc9c8e6c0c6e88eb3ecdb4 +Subproject commit c2c8a9b26fd8b33d9f08e66c85dd3cae4610acef diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/kv-store b/third_party/infineon/psoc6/psoc6_sdk/libs/kv-store index c81d0a32cb8301..9a75a83d22583c 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/kv-store +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/kv-store @@ -1 +1 @@ -Subproject commit c81d0a32cb8301b307b9e32c126bf1a1f6465fbb +Subproject commit 9a75a83d22583c83b862b4118ee13a20e38af8ac diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/lwip b/third_party/infineon/psoc6/psoc6_sdk/libs/lwip index bef26c44236a07..159e31b689577d 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/lwip +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/lwip @@ -1 +1 @@ -Subproject commit bef26c44236a078d4352e76392ef16f019bea501 +Subproject commit 159e31b689577dbf69cf0683bbaffbd71fa5ee10 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/lwip-network-interface-integration b/third_party/infineon/psoc6/psoc6_sdk/libs/lwip-network-interface-integration index 9e1660130f6113..683110fbb75965 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/lwip-network-interface-integration +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/lwip-network-interface-integration @@ -1 +1 @@ -Subproject commit 9e1660130f611364c8772bc01147ddb2916c8d8d +Subproject commit 683110fbb7596507e9b61fd1c83510cb3b35d805 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-hal-cat1 b/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-hal-cat1 index 708a6b2542f0d8..4090e1aec69137 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-hal-cat1 +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-hal-cat1 @@ -1 +1 @@ -Subproject commit 708a6b2542f0d8814c129a3141e78fd265826a0b +Subproject commit 4090e1aec69137fe80423eabe4558d9291dbe9d2 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-pdl-cat1 b/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-pdl-cat1 index 3c6aebd2f3238b..96bbf1928e6b99 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-pdl-cat1 +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/mtb-pdl-cat1 @@ -1 +1 @@ -Subproject commit 3c6aebd2f3238b578329bfb8a6c5a0e138bd5c7b +Subproject commit 96bbf1928e6b99feec4451c6011403aaabf4c08d diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/ota-bootloader-abstraction b/third_party/infineon/psoc6/psoc6_sdk/libs/ota-bootloader-abstraction new file mode 160000 index 00000000000000..472c6455f74a64 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/ota-bootloader-abstraction @@ -0,0 +1 @@ +Subproject commit 472c6455f74a643f1894fc5d111cf7838c89ad2d diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/ota-update b/third_party/infineon/psoc6/psoc6_sdk/libs/ota-update new file mode 160000 index 00000000000000..d7da5cc50fc31d --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/ota-update @@ -0,0 +1 @@ +Subproject commit d7da5cc50fc31d525b9bc7324989b5cbb330644c diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/psoc6cm0p b/third_party/infineon/psoc6/psoc6_sdk/libs/psoc6cm0p deleted file mode 160000 index 65569574830d3e..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/psoc6cm0p +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 65569574830d3eef29fb9a0f1060eb0885063b56 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/recipe-make-cat1a b/third_party/infineon/psoc6/psoc6_sdk/libs/recipe-make-cat1a index 656d8c5b4fbd1e..0446103a230b44 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/recipe-make-cat1a +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/recipe-make-cat1a @@ -1 +1 @@ -Subproject commit 656d8c5b4fbd1e20190315ffb6a64ae151f627c9 +Subproject commit 0446103a230b44aa972a028bbe31591c4744e85f diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/retarget-io b/third_party/infineon/psoc6/psoc6_sdk/libs/retarget-io index a61cd7c5f4b280..db7f9627c81f3d 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/retarget-io +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/retarget-io @@ -1 +1 @@ -Subproject commit a61cd7c5f4b2808c949248f05287c09e6578abfc +Subproject commit db7f9627c81f3d54401cf4aaf7f5ddf21ceda326 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/secure-sockets b/third_party/infineon/psoc6/psoc6_sdk/libs/secure-sockets index f7508f942e1c25..3627168abbed91 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/secure-sockets +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/secure-sockets @@ -1 +1 @@ -Subproject commit f7508f942e1c25f74f5317422ed8289b2b930cb1 +Subproject commit 3627168abbed91f8df3f1d6e41a37ad918fffdfc diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/serial-flash b/third_party/infineon/psoc6/psoc6_sdk/libs/serial-flash index c7b55aa5406e6d..9830481016731e 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/serial-flash +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/serial-flash @@ -1 +1 @@ -Subproject commit c7b55aa5406e6da9954f60e5f5460b71cd220ef2 +Subproject commit 9830481016731e3953996a7b118c84f7f46baa1e diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/whd-bsp-integration b/third_party/infineon/psoc6/psoc6_sdk/libs/whd-bsp-integration index c180a141838d02..0bdf13bafdcd19 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/whd-bsp-integration +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/whd-bsp-integration @@ -1 +1 @@ -Subproject commit c180a141838d02aea52f86967772f8216fc15a18 +Subproject commit 0bdf13bafdcd190c8eade52e03af676b163ac6d0 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-connection-manager b/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-connection-manager index 2567493ff15459..8602aabdfff9ed 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-connection-manager +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-connection-manager @@ -1 +1 @@ -Subproject commit 2567493ff1545989e24f6415254a70d24b7a76e6 +Subproject commit 8602aabdfff9edbaeacfd8ee09461ff81e363064 diff --git a/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-host-driver b/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-host-driver index 919d9213128860..04ee318cc96bff 160000 --- a/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-host-driver +++ b/third_party/infineon/psoc6/psoc6_sdk/libs/wifi-host-driver @@ -1 +1 @@ -Subproject commit 919d921312886057411efcf2271c99296f87afb8 +Subproject commit 04ee318cc96bffa7d69a1e076c008e2364453f82 diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/bootutil/bootutil.h b/third_party/infineon/psoc6/psoc6_sdk/ota/bootutil/bootutil.h new file mode 100644 index 00000000000000..ff94964158ef3d --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/ota/bootutil/bootutil.h @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#ifndef H_BOOTUTIL_ +#define H_BOOTUTIL_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Attempt to boot the contents of the primary slot. */ +#define BOOT_SWAP_TYPE_NONE 1 + +/** + * Swap to the secondary slot. + * Absent a confirm command, revert back on next boot. + */ +#define BOOT_SWAP_TYPE_TEST 2 + +/** + * Swap to the secondary slot, + * and permanently switch to booting its contents. + */ +#define BOOT_SWAP_TYPE_PERM 3 + +/** Swap back to alternate slot. A confirm changes this state to NONE. */ +#define BOOT_SWAP_TYPE_REVERT 4 + +/** Swap failed because image to be run is not valid */ +#define BOOT_SWAP_TYPE_FAIL 5 + +/** Swapping encountered an unrecoverable error */ +#define BOOT_SWAP_TYPE_PANIC 0xff + +#define BOOT_MAX_ALIGN 8 + +/* This is not actually used by mcuboot's code but can be used by apps + * when attempting to read/write a trailer. + */ +struct image_trailer +{ + uint8_t swap_type; + uint8_t pad1[BOOT_MAX_ALIGN - 1]; + uint8_t copy_done; + uint8_t pad2[BOOT_MAX_ALIGN - 1]; + uint8_t image_ok; + uint8_t pad3[BOOT_MAX_ALIGN - 1]; + uint8_t magic[16]; +}; + +int boot_swap_type_multi(int image_index); +int boot_swap_type(void); + +int boot_set_pending(int image, int permanent); +int boot_set_confirmed(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/bootutil/bootutil_log.h b/third_party/infineon/psoc6/psoc6_sdk/ota/bootutil/bootutil_log.h new file mode 100644 index 00000000000000..02f15f063949b9 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/ota/bootutil/bootutil_log.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2017 Linaro Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef H_BOOTUTIL_LOG_H_ +#define H_BOOTUTIL_LOG_H_ + +#include "ignore.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#if 1 // def MCUBOOT_HAVE_LOGGING + +#define BOOT_LOG_ERR(...) MCUBOOT_LOG_ERR(__VA_ARGS__) +#define BOOT_LOG_WRN(...) MCUBOOT_LOG_WRN(__VA_ARGS__) +#define BOOT_LOG_INF(...) MCUBOOT_LOG_INF(__VA_ARGS__) +#define BOOT_LOG_DBG(...) MCUBOOT_LOG_DBG(__VA_ARGS__) + +#else + +#define BOOT_LOG_ERR(...) IGNORE(__VA_ARGS__) +#define BOOT_LOG_WRN(...) IGNORE(__VA_ARGS__) +#define BOOT_LOG_INF(...) IGNORE(__VA_ARGS__) +#define BOOT_LOG_DBG(...) IGNORE(__VA_ARGS__) + +#endif /* MCUBOOT_HAVE_LOGGING */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/bootutil/ignore.h b/third_party/infineon/psoc6/psoc6_sdk/ota/bootutil/ignore.h new file mode 100644 index 00000000000000..64d519e7baa770 --- /dev/null +++ b/third_party/infineon/psoc6/psoc6_sdk/ota/bootutil/ignore.h @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#ifndef H_IGNORE_ +#define H_IGNORE_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * These macros prevent the "set but not used" warnings for log writes below + * the log level. + */ + +#define IGN_1(X) ((void) (X)) +#define IGN_2(X, ...) \ + ((void) (X)); \ + IGN_1(__VA_ARGS__) +#define IGN_3(X, ...) \ + ((void) (X)); \ + IGN_2(__VA_ARGS__) +#define IGN_4(X, ...) \ + ((void) (X)); \ + IGN_3(__VA_ARGS__) +#define IGN_5(X, ...) \ + ((void) (X)); \ + IGN_4(__VA_ARGS__) +#define IGN_6(X, ...) \ + ((void) (X)); \ + IGN_5(__VA_ARGS__) +#define IGN_7(X, ...) \ + ((void) (X)); \ + IGN_6(__VA_ARGS__) +#define IGN_8(X, ...) \ + ((void) (X)); \ + IGN_7(__VA_ARGS__) +#define IGN_9(X, ...) \ + ((void) (X)); \ + IGN_8(__VA_ARGS__) +#define IGN_10(X, ...) \ + ((void) (X)); \ + IGN_9(__VA_ARGS__) +#define IGN_11(X, ...) \ + ((void) (X)); \ + IGN_10(__VA_ARGS__) +#define IGN_12(X, ...) \ + ((void) (X)); \ + IGN_11(__VA_ARGS__) +#define IGN_13(X, ...) \ + ((void) (X)); \ + IGN_12(__VA_ARGS__) +#define IGN_14(X, ...) \ + ((void) (X)); \ + IGN_13(__VA_ARGS__) +#define IGN_15(X, ...) \ + ((void) (X)); \ + IGN_14(__VA_ARGS__) +#define IGN_16(X, ...) \ + ((void) (X)); \ + IGN_15(__VA_ARGS__) +#define IGN_17(X, ...) \ + ((void) (X)); \ + IGN_16(__VA_ARGS__) +#define IGN_18(X, ...) \ + ((void) (X)); \ + IGN_17(__VA_ARGS__) +#define IGN_19(X, ...) \ + ((void) (X)); \ + IGN_18(__VA_ARGS__) +#define IGN_20(X, ...) \ + ((void) (X)); \ + IGN_19(__VA_ARGS__) + +#define GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, NAME, ...) NAME +#define IGNORE(...) \ + GET_MACRO(__VA_ARGS__, IGN_20, IGN_19, IGN_18, IGN_17, IGN_16, IGN_15, IGN_14, IGN_13, IGN_12, IGN_11, IGN_10, IGN_9, IGN_8, \ + IGN_7, IGN_6, IGN_5, IGN_4, IGN_3, IGN_2, IGN_1) \ + (__VA_ARGS__) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_assert.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_assert.h deleted file mode 100644 index 15a69555516030..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_assert.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * mcuboot_assert.h - * - * Cypress-specific assert() macro redefinition - * - */ - -#ifndef MCUBOOT_ASSERT_H -#define MCUBOOT_ASSERT_H - -#define CYBL_ASSERT(...) Cy_BLServ_Assert(__VA_ARGS__) - -#if !defined(NDEBUG) -#undef assert -#define assert(...) CYBL_ASSERT(__VA_ARGS__) -#else -#define assert -#endif - -#endif /* MCUBOOT_ASSERT_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_config.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_config.h deleted file mode 100644 index 6b11d855ca1d04..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_config.h +++ /dev/null @@ -1,151 +0,0 @@ -/* Copyright 2019 Cypress Semiconductor Corporation - * - * Copyright (c) 2018 Open Source Foundries Limited - * - * SPDX-License-Identifier: Apache-2.0 - */ -#ifndef MCUBOOT_CONFIG_H -#define MCUBOOT_CONFIG_H - -/* - * Template configuration file for MCUboot. - * - * When porting MCUboot to a new target, copy it somewhere that your - * include path can find it as mcuboot_config/mcuboot_config.h, and - * make adjustments to suit your platform. - * - * For examples, see: - * - * boot/zephyr/include/mcuboot_config/mcuboot_config.h - * boot/mynewt/mcuboot_config/include/mcuboot_config/mcuboot_config.h - */ -/* Default maximum number of flash sectors per image slot; change - * as desirable. */ -#ifndef MCUBOOT_MAX_IMG_SECTORS -#define MCUBOOT_MAX_IMG_SECTORS 128 -#endif - -/* - * Signature types - * - * You must choose exactly one signature type. - */ - -/* Uncomment for RSA signature support */ -//#define MCUBOOT_SIGN_RSA - -/* Uncomment for ECDSA signatures using curve P-256. */ -//#define MCUBOOT_SIGN_EC256 -//#define NUM_ECC_BYTES (256 / 8) // P-256 curve size in bytes, rnok: to make compilable - -// #define MCUBOOT_SIGN_EC - -/* - * Upgrade mode - * - * The default is to support A/B image swapping with rollback. A - * simpler code path, which only supports overwriting the - * existing image with the update image, is also available. - */ -#ifdef MCUBOOT_OVERWRITE_ONLY -/* Uncomment to only erase and overwrite those slot 0 sectors needed - * to install the new image, rather than the entire image slot. */ -/* #define MCUBOOT_OVERWRITE_ONLY_FAST */ -#else -/* Using SWAP w Scratch by default. - * Comment/Uncomment which is needed. */ -/* #define MCUBOOT_SWAP_USING_SCRATCH 1 */ -/* #define MCUBOOT_SWAP_USING_MOVE 1 */ -#define MCUBOOT_SWAP_USING_STATUS 1 -#endif - -/* - * Cryptographic settings - * - * You must choose between mbedTLS and Tinycrypt as source of - * cryptographic primitives. Other cryptographic settings are also - * available. - */ - -/* Uncomment to use ARM's mbedTLS cryptographic primitives */ -#define MCUBOOT_USE_MBED_TLS -/* Uncomment to use Tinycrypt's. */ -/* #define MCUBOOT_USE_TINYCRYPT */ - -/* - * Always check the signature of the image in slot 0 before booting, - * even if no upgrade was performed. This is recommended if the boot - * time penalty is acceptable. - */ -//#define MCUBOOT_VALIDATE_PRIMARY_SLOT - -/* - * Flash abstraction - */ - -/* Uncomment if your flash map API supports flash_area_get_sectors(). - * See the flash APIs for more details. */ -// TODO: FWSECURITY-755 -#define MCUBOOT_USE_FLASH_AREA_GET_SECTORS - -/* Default number of separately updateable images; change in case of - * multiple images. */ -#ifndef MCUBOOT_IMAGE_NUMBER -#define MCUBOOT_IMAGE_NUMBER 1 -#endif - -/* - * Logging - */ - -/* - * If logging is enabled the following functions must be defined by the - * platform: - * - * MCUBOOT_LOG_ERR(...) - * MCUBOOT_LOG_WRN(...) - * MCUBOOT_LOG_INF(...) - * MCUBOOT_LOG_DBG(...) - * - * The following global logging level configuration macros must also be - * defined, each with a unique value. Those will be used to define a global - * configuration and will allow any source files to override the global - * configuration: - * - * MCUBOOT_LOG_LEVEL_OFF - * MCUBOOT_LOG_LEVEL_ERROR - * MCUBOOT_LOG_LEVEL_WARNING - * MCUBOOT_LOG_LEVEL_INFO - * MCUBOOT_LOG_LEVEL_DEBUG - * - * The global logging level must be defined, with one of the previously defined - * logging levels: - * - * #define MCUBOOT_LOG_LEVEL MCUBOOT_LOG_LEVEL_(OFF|ERROR|WARNING|INFO|DEBUG) - * - * MCUBOOT_LOG_LEVEL sets the minimum level that will be logged. The function - * priority is: - * - * MCUBOOT_LOG_ERR > MCUBOOT_LOG_WRN > MCUBOOT_LOG_INF > MCUBOOT_LOG_DBG - * - * NOTE: Each source file is still able to request its own logging level by - * defining BOOT_LOG_LEVEL before #including `bootutil_log.h` - */ -#define MCUBOOT_HAVE_LOGGING 1 - -/* - * Assertions - */ - -/* Uncomment if your platform has its own mcuboot_config/mcuboot_assert.h. - * If so, it must provide an ASSERT macro for use by bootutil. Otherwise, - * "assert" is used. */ -//#define MCUBOOT_HAVE_ASSERT_H - -#define MCUBOOT_WATCHDOG_FEED() \ - do \ - { \ - /* TODO: to be implemented */ \ - } while (0) - -#endif /* MCUBOOT_CONFIG_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_logging.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_logging.h deleted file mode 100644 index 35424b4c5ad96d..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_config/mcuboot_logging.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2018 Nordic Semiconductor ASA - * Copyright (c) 2015 Runtime Inc - * Copyright (c) 2020 Cypress Semiconductor Corporation - * - * SPDX-License-Identifier: Apache-2.0 - */ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/*******************************************************************************/ - -#ifndef MCUBOOT_LOGGING_H -#define MCUBOOT_LOGGING_H - -#include - -#define MCUBOOT_LOG_LEVEL_OFF 0 -#define MCUBOOT_LOG_LEVEL_ERROR 1 -#define MCUBOOT_LOG_LEVEL_WARNING 2 -#define MCUBOOT_LOG_LEVEL_INFO 3 -#define MCUBOOT_LOG_LEVEL_DEBUG 4 - -/* - * The compiled log level determines the maximum level that can be - * printed. Messages at or below this level can be printed, provided - * they are also enabled through the Rust logging system, such as by - * setting RUST_LOG to bootsim::api=info. - */ -#ifndef MCUBOOT_LOG_LEVEL -#define MCUBOOT_LOG_LEVEL MCUBOOT_LOG_LEVEL_INFO -#endif - -int sim_log_enabled(int level); - -#define sim_log_enabled(x) 1 - -#if MCUBOOT_LOG_LEVEL >= MCUBOOT_LOG_LEVEL_ERROR -#define MCUBOOT_LOG_ERR(_fmt, ...) \ - do \ - { \ - if (sim_log_enabled(MCUBOOT_LOG_LEVEL_ERROR)) \ - { \ - fprintf(stderr, "[ERR] " _fmt "\n\r", ##__VA_ARGS__); \ - } \ - } while (0) -#else -#define MCUBOOT_LOG_ERR(...) IGNORE(__VA_ARGS__) -#endif - -#if MCUBOOT_LOG_LEVEL >= MCUBOOT_LOG_LEVEL_WARNING -#define MCUBOOT_LOG_WRN(_fmt, ...) \ - do \ - { \ - if (sim_log_enabled(MCUBOOT_LOG_LEVEL_WARNING)) \ - { \ - fprintf(stderr, "[WRN] " _fmt "\n\r", ##__VA_ARGS__); \ - } \ - } while (0) -#else -#define MCUBOOT_LOG_WRN(...) IGNORE(__VA_ARGS__) -#endif - -#if MCUBOOT_LOG_LEVEL >= MCUBOOT_LOG_LEVEL_INFO -#define MCUBOOT_LOG_INF(_fmt, ...) \ - do \ - { \ - if (sim_log_enabled(MCUBOOT_LOG_LEVEL_INFO)) \ - { \ - fprintf(stderr, "[INF] " _fmt "\n\r", ##__VA_ARGS__); \ - } \ - } while (0) -#else -#define MCUBOOT_LOG_INF(...) IGNORE(__VA_ARGS__) -#endif - -#if MCUBOOT_LOG_LEVEL >= MCUBOOT_LOG_LEVEL_DEBUG -#define MCUBOOT_LOG_DBG(_fmt, ...) \ - do \ - { \ - if (sim_log_enabled(MCUBOOT_LOG_LEVEL_DEBUG)) \ - { \ - fprintf(stderr, "[DBG] " _fmt "\n\r", ##__VA_ARGS__); \ - } \ - } while (0) -#else -#define MCUBOOT_LOG_DBG(...) IGNORE(__VA_ARGS__) -#endif - -#define MCUBOOT_LOG_MODULE_DECLARE(...) - -#endif /* MCUBOOT_LOGGING_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_acc_config.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_acc_config.h deleted file mode 100644 index 2bf440a549bc49..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_acc_config.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * mbed Microcontroller Library - * Copyright (c) 2019 Cypress Semiconductor Corporation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * \file mcuboot_crypto_acc_config.h - * \version 1.1 - */ - -#ifndef MCUBOOT_MBEDTLS_DEVICE_H -#define MCUBOOT_MBEDTLS_DEVICE_H - -/* Currently this target supports SHA1 */ -// #define MBEDTLS_SHA1_C - -#define MBEDTLS_SHA1_ALT -#define MBEDTLS_SHA256_ALT -#define MBEDTLS_SHA512_ALT - -/* Currently this target supports CBC, CFB, OFB, CTR and XTS cipher modes */ -#define MBEDTLS_AES_ALT -// #define MBEDTLS_CIPHER_MODE_CBC -// #define MBEDTLS_CIPHER_MODE_CFB -// #define MBEDTLS_CIPHER_MODE_OFB -// #define MBEDTLS_CIPHER_MODE_CTR -// #define MBEDTLS_CIPHER_MODE_XTS - -/* Only NIST-P curves are currently supported */ -#define MBEDTLS_ECP_ALT -// #define MBEDTLS_ECP_DP_SECP192R1_ENABLED -// #define MBEDTLS_ECP_DP_SECP224R1_ENABLED -// #define MBEDTLS_ECP_DP_SECP256R1_ENABLED -// #define MBEDTLS_ECP_DP_SECP384R1_ENABLED -// #define MBEDTLS_ECP_DP_SECP521R1_ENABLED - -#define MBEDTLS_ECDSA_SIGN_ALT -#define MBEDTLS_ECDSA_VERIFY_ALT - -#endif /* MCUBOOT_MBEDTLS_DEVICE_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_config.h b/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_config.h deleted file mode 100644 index 4f0f7d383b4bc4..00000000000000 --- a/third_party/infineon/psoc6/psoc6_sdk/ota/config/mcuboot_crypto_config.h +++ /dev/null @@ -1,3606 +0,0 @@ -/** - * \file config.h - * - * \brief Configuration options (set of defines) - * - * This set of compile-time options may be used to enable - * or disable features selectively, and reduce the global - * memory footprint. - */ -/* - * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#ifndef MBEDTLS_CONFIG_H -#define MBEDTLS_CONFIG_H - -#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) -#define _CRT_SECURE_NO_DEPRECATE 1 -#endif - -/** - * \name SECTION: System support - * - * This section sets system specific settings. - * \{ - */ - -/** - * \def MBEDTLS_HAVE_ASM - * - * The compiler has support for asm(). - * - * Requires support for asm() in compiler. - * - * Used in: - * library/aria.c - * library/timing.c - * include/mbedtls/bn_mul.h - * - * Required by: - * MBEDTLS_AESNI_C - * MBEDTLS_PADLOCK_C - * - * Comment to disable the use of assembly code. - */ -#define MBEDTLS_HAVE_ASM - -/** - * \def MBEDTLS_NO_UDBL_DIVISION - * - * The platform lacks support for double-width integer division (64-bit - * division on a 32-bit platform, 128-bit division on a 64-bit platform). - * - * Used in: - * include/mbedtls/bignum.h - * library/bignum.c - * - * The bignum code uses double-width division to speed up some operations. - * Double-width division is often implemented in software that needs to - * be linked with the program. The presence of a double-width integer - * type is usually detected automatically through preprocessor macros, - * but the automatic detection cannot know whether the code needs to - * and can be linked with an implementation of division for that type. - * By default division is assumed to be usable if the type is present. - * Uncomment this option to prevent the use of double-width division. - * - * Note that division for the native integer type is always required. - * Furthermore, a 64-bit type is always required even on a 32-bit - * platform, but it need not support multiplication or division. In some - * cases it is also desirable to disable some double-width operations. For - * example, if double-width division is implemented in software, disabling - * it can reduce code size in some embedded targets. - */ -//#define MBEDTLS_NO_UDBL_DIVISION - -/** - * \def MBEDTLS_NO_64BIT_MULTIPLICATION - * - * The platform lacks support for 32x32 -> 64-bit multiplication. - * - * Used in: - * library/poly1305.c - * - * Some parts of the library may use multiplication of two unsigned 32-bit - * operands with a 64-bit result in order to speed up computations. On some - * platforms, this is not available in hardware and has to be implemented in - * software, usually in a library provided by the toolchain. - * - * Sometimes it is not desirable to have to link to that library. This option - * removes the dependency of that library on platforms that lack a hardware - * 64-bit multiplier by embedding a software implementation in Mbed TLS. - * - * Note that depending on the compiler, this may decrease performance compared - * to using the library function provided by the toolchain. - */ -//#define MBEDTLS_NO_64BIT_MULTIPLICATION - -/** - * \def MBEDTLS_HAVE_SSE2 - * - * CPU supports SSE2 instruction set. - * - * Uncomment if the CPU supports SSE2 (IA-32 specific). - */ -//#define MBEDTLS_HAVE_SSE2 - -/** - * \def MBEDTLS_HAVE_TIME - * - * System has time.h and time(). - * The time does not need to be correct, only time differences are used, - * by contrast with MBEDTLS_HAVE_TIME_DATE - * - * Defining MBEDTLS_HAVE_TIME allows you to specify MBEDTLS_PLATFORM_TIME_ALT, - * MBEDTLS_PLATFORM_TIME_MACRO, MBEDTLS_PLATFORM_TIME_TYPE_MACRO and - * MBEDTLS_PLATFORM_STD_TIME. - * - * Comment if your system does not support time functions - */ -#define MBEDTLS_HAVE_TIME - -/** - * \def MBEDTLS_HAVE_TIME_DATE - * - * System has time.h, time(), and an implementation for - * mbedtls_platform_gmtime_r() (see below). - * The time needs to be correct (not necessarily very accurate, but at least - * the date should be correct). This is used to verify the validity period of - * X.509 certificates. - * - * Comment if your system does not have a correct clock. - * - * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that - * behaves similarly to the gmtime_r() function from the C standard. Refer to - * the documentation for mbedtls_platform_gmtime_r() for more information. - * - * \note It is possible to configure an implementation for - * mbedtls_platform_gmtime_r() at compile-time by using the macro - * MBEDTLS_PLATFORM_GMTIME_R_ALT. - */ -#define MBEDTLS_HAVE_TIME_DATE - -/** - * \def MBEDTLS_PLATFORM_MEMORY - * - * Enable the memory allocation layer. - * - * By default mbed TLS uses the system-provided calloc() and free(). - * This allows different allocators (self-implemented or provided) to be - * provided to the platform abstraction layer. - * - * Enabling MBEDTLS_PLATFORM_MEMORY without the - * MBEDTLS_PLATFORM_{FREE,CALLOC}_MACROs will provide - * "mbedtls_platform_set_calloc_free()" allowing you to set an alternative calloc() and - * free() function pointer at runtime. - * - * Enabling MBEDTLS_PLATFORM_MEMORY and specifying - * MBEDTLS_PLATFORM_{CALLOC,FREE}_MACROs will allow you to specify the - * alternate function at compile time. - * - * Requires: MBEDTLS_PLATFORM_C - * - * Enable this layer to allow use of alternative memory allocators. - */ -//#define MBEDTLS_PLATFORM_MEMORY - -/** - * \def MBEDTLS_PLATFORM_NO_STD_FUNCTIONS - * - * Do not assign standard functions in the platform layer (e.g. calloc() to - * MBEDTLS_PLATFORM_STD_CALLOC and printf() to MBEDTLS_PLATFORM_STD_PRINTF) - * - * This makes sure there are no linking errors on platforms that do not support - * these functions. You will HAVE to provide alternatives, either at runtime - * via the platform_set_xxx() functions or at compile time by setting - * the MBEDTLS_PLATFORM_STD_XXX defines, or enabling a - * MBEDTLS_PLATFORM_XXX_MACRO. - * - * Requires: MBEDTLS_PLATFORM_C - * - * Uncomment to prevent default assignment of standard functions in the - * platform layer. - */ -//#define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS - -/** - * \def MBEDTLS_PLATFORM_EXIT_ALT - * - * MBEDTLS_PLATFORM_XXX_ALT: Uncomment a macro to let mbed TLS support the - * function in the platform abstraction layer. - * - * Example: In case you uncomment MBEDTLS_PLATFORM_PRINTF_ALT, mbed TLS will - * provide a function "mbedtls_platform_set_printf()" that allows you to set an - * alternative printf function pointer. - * - * All these define require MBEDTLS_PLATFORM_C to be defined! - * - * \note MBEDTLS_PLATFORM_SNPRINTF_ALT is required on Windows; - * it will be enabled automatically by check_config.h - * - * \warning MBEDTLS_PLATFORM_XXX_ALT cannot be defined at the same time as - * MBEDTLS_PLATFORM_XXX_MACRO! - * - * Requires: MBEDTLS_PLATFORM_TIME_ALT requires MBEDTLS_HAVE_TIME - * - * Uncomment a macro to enable alternate implementation of specific base - * platform function - */ -//#define MBEDTLS_PLATFORM_EXIT_ALT -//#define MBEDTLS_PLATFORM_TIME_ALT -//#define MBEDTLS_PLATFORM_FPRINTF_ALT -//#define MBEDTLS_PLATFORM_PRINTF_ALT -//#define MBEDTLS_PLATFORM_SNPRINTF_ALT -//#define MBEDTLS_PLATFORM_VSNPRINTF_ALT -//#define MBEDTLS_PLATFORM_NV_SEED_ALT -//#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT - -/** - * \def MBEDTLS_DEPRECATED_WARNING - * - * Mark deprecated functions so that they generate a warning if used. - * Functions deprecated in one version will usually be removed in the next - * version. You can enable this to help you prepare the transition to a new - * major version by making sure your code is not using these functions. - * - * This only works with GCC and Clang. With other compilers, you may want to - * use MBEDTLS_DEPRECATED_REMOVED - * - * Uncomment to get warnings on using deprecated functions. - */ -//#define MBEDTLS_DEPRECATED_WARNING - -/** - * \def MBEDTLS_DEPRECATED_REMOVED - * - * Remove deprecated functions so that they generate an error if used. - * Functions deprecated in one version will usually be removed in the next - * version. You can enable this to help you prepare the transition to a new - * major version by making sure your code is not using these functions. - * - * Uncomment to get errors on using deprecated functions. - */ -//#define MBEDTLS_DEPRECATED_REMOVED - -/** - * \def MBEDTLS_CHECK_PARAMS - * - * This configuration option controls whether the library validates more of - * the parameters passed to it. - * - * When this flag is not defined, the library only attempts to validate an - * input parameter if: (1) they may come from the outside world (such as the - * network, the filesystem, etc.) or (2) not validating them could result in - * internal memory errors such as overflowing a buffer controlled by the - * library. On the other hand, it doesn't attempt to validate parameters whose - * values are fully controlled by the application (such as pointers). - * - * When this flag is defined, the library additionally attempts to validate - * parameters that are fully controlled by the application, and should always - * be valid if the application code is fully correct and trusted. - * - * For example, when a function accepts as input a pointer to a buffer that may - * contain untrusted data, and its documentation mentions that this pointer - * must not be NULL: - * - The pointer is checked to be non-NULL only if this option is enabled. - * - The content of the buffer is always validated. - * - * When this flag is defined, if a library function receives a parameter that - * is invalid: - * 1. The function will invoke the macro MBEDTLS_PARAM_FAILED(). - * 2. If MBEDTLS_PARAM_FAILED() did not terminate the program, the function - * will immediately return. If the function returns an Mbed TLS error code, - * the error code in this case is MBEDTLS_ERR_xxx_BAD_INPUT_DATA. - * - * When defining this flag, you also need to arrange a definition for - * MBEDTLS_PARAM_FAILED(). You can do this by any of the following methods: - * - By default, the library defines MBEDTLS_PARAM_FAILED() to call a - * function mbedtls_param_failed(), but the library does not define this - * function. If you do not make any other arrangements, you must provide - * the function mbedtls_param_failed() in your application. - * See `platform_util.h` for its prototype. - * - If you enable the macro #MBEDTLS_CHECK_PARAMS_ASSERT, then the - * library defines MBEDTLS_PARAM_FAILED(\c cond) to be `assert(cond)`. - * You can still supply an alternative definition of - * MBEDTLS_PARAM_FAILED(), which may call `assert`. - * - If you define a macro MBEDTLS_PARAM_FAILED() before including `config.h` - * or you uncomment the definition of MBEDTLS_PARAM_FAILED() in `config.h`, - * the library will call the macro that you defined and will not supply - * its own version. Note that if MBEDTLS_PARAM_FAILED() calls `assert`, - * you need to enable #MBEDTLS_CHECK_PARAMS_ASSERT so that library source - * files include ``. - * - * Uncomment to enable validation of application-controlled parameters. - */ -//#define MBEDTLS_CHECK_PARAMS - -/** - * \def MBEDTLS_CHECK_PARAMS_ASSERT - * - * Allow MBEDTLS_PARAM_FAILED() to call `assert`, and make it default to - * `assert`. This macro is only used if #MBEDTLS_CHECK_PARAMS is defined. - * - * If this macro is not defined, then MBEDTLS_PARAM_FAILED() defaults to - * calling a function mbedtls_param_failed(). See the documentation of - * #MBEDTLS_CHECK_PARAMS for details. - * - * Uncomment to allow MBEDTLS_PARAM_FAILED() to call `assert`. - */ -//#define MBEDTLS_CHECK_PARAMS_ASSERT - -/* \} name SECTION: System support */ - -/** - * \name SECTION: mbed TLS feature support - * - * This section sets support for features that are or are not needed - * within the modules that are enabled. - * \{ - */ - -/** - * \def MBEDTLS_TIMING_ALT - * - * Uncomment to provide your own alternate implementation for mbedtls_timing_hardclock(), - * mbedtls_timing_get_timer(), mbedtls_set_alarm(), mbedtls_set/get_delay() - * - * Only works if you have MBEDTLS_TIMING_C enabled. - * - * You will need to provide a header "timing_alt.h" and an implementation at - * compile time. - */ -//#define MBEDTLS_TIMING_ALT - -/** - * \def MBEDTLS_AES_ALT - * - * MBEDTLS__MODULE_NAME__ALT: Uncomment a macro to let mbed TLS use your - * alternate core implementation of a symmetric crypto, an arithmetic or hash - * module (e.g. platform specific assembly optimized implementations). Keep - * in mind that the function prototypes should remain the same. - * - * This replaces the whole module. If you only want to replace one of the - * functions, use one of the MBEDTLS__FUNCTION_NAME__ALT flags. - * - * Example: In case you uncomment MBEDTLS_AES_ALT, mbed TLS will no longer - * provide the "struct mbedtls_aes_context" definition and omit the base - * function declarations and implementations. "aes_alt.h" will be included from - * "aes.h" to include the new function definitions. - * - * Uncomment a macro to enable alternate implementation of the corresponding - * module. - * - * \warning MD2, MD4, MD5, ARC4, DES and SHA-1 are considered weak and their - * use constitutes a security risk. If possible, we recommend - * avoiding dependencies on them, and considering stronger message - * digests and ciphers instead. - * - */ -//#define MBEDTLS_AES_ALT -//#define MBEDTLS_ARC4_ALT -//#define MBEDTLS_ARIA_ALT -//#define MBEDTLS_BLOWFISH_ALT -//#define MBEDTLS_CAMELLIA_ALT -//#define MBEDTLS_CCM_ALT -//#define MBEDTLS_CHACHA20_ALT -//#define MBEDTLS_CHACHAPOLY_ALT -//#define MBEDTLS_CMAC_ALT -//#define MBEDTLS_DES_ALT -//#define MBEDTLS_DHM_ALT -//#define MBEDTLS_ECJPAKE_ALT -//#define MBEDTLS_GCM_ALT -//#define MBEDTLS_NIST_KW_ALT -//#define MBEDTLS_MD2_ALT -//#define MBEDTLS_MD4_ALT -//#define MBEDTLS_MD5_ALT -//#define MBEDTLS_POLY1305_ALT -//#define MBEDTLS_RIPEMD160_ALT -//#define MBEDTLS_RSA_ALT -//#define MBEDTLS_SHA1_ALT -//#define MBEDTLS_SHA256_ALT -//#define MBEDTLS_SHA512_ALT -//#define MBEDTLS_XTEA_ALT - -/* - * When replacing the elliptic curve module, pleace consider, that it is - * implemented with two .c files: - * - ecp.c - * - ecp_curves.c - * You can replace them very much like all the other MBEDTLS__MODULE_NAME__ALT - * macros as described above. The only difference is that you have to make sure - * that you provide functionality for both .c files. - */ -//#define MBEDTLS_ECP_ALT - -/** - * \def MBEDTLS_MD2_PROCESS_ALT - * - * MBEDTLS__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use you - * alternate core implementation of symmetric crypto or hash function. Keep in - * mind that function prototypes should remain the same. - * - * This replaces only one function. The header file from mbed TLS is still - * used, in contrast to the MBEDTLS__MODULE_NAME__ALT flags. - * - * Example: In case you uncomment MBEDTLS_SHA256_PROCESS_ALT, mbed TLS will - * no longer provide the mbedtls_sha1_process() function, but it will still provide - * the other function (using your mbedtls_sha1_process() function) and the definition - * of mbedtls_sha1_context, so your implementation of mbedtls_sha1_process must be compatible - * with this definition. - * - * \note Because of a signature change, the core AES encryption and decryption routines are - * currently named mbedtls_aes_internal_encrypt and mbedtls_aes_internal_decrypt, - * respectively. When setting up alternative implementations, these functions should - * be overridden, but the wrapper functions mbedtls_aes_decrypt and mbedtls_aes_encrypt - * must stay untouched. - * - * \note If you use the AES_xxx_ALT macros, then is is recommended to also set - * MBEDTLS_AES_ROM_TABLES in order to help the linker garbage-collect the AES - * tables. - * - * Uncomment a macro to enable alternate implementation of the corresponding - * function. - * - * \warning MD2, MD4, MD5, DES and SHA-1 are considered weak and their use - * constitutes a security risk. If possible, we recommend avoiding - * dependencies on them, and considering stronger message digests - * and ciphers instead. - * - */ -//#define MBEDTLS_MD2_PROCESS_ALT -//#define MBEDTLS_MD4_PROCESS_ALT -//#define MBEDTLS_MD5_PROCESS_ALT -//#define MBEDTLS_RIPEMD160_PROCESS_ALT -//#define MBEDTLS_SHA1_PROCESS_ALT -//#define MBEDTLS_SHA256_PROCESS_ALT -//#define MBEDTLS_SHA512_PROCESS_ALT -//#define MBEDTLS_DES_SETKEY_ALT -//#define MBEDTLS_DES_CRYPT_ECB_ALT -//#define MBEDTLS_DES3_CRYPT_ECB_ALT -//#define MBEDTLS_AES_SETKEY_ENC_ALT -//#define MBEDTLS_AES_SETKEY_DEC_ALT -//#define MBEDTLS_AES_ENCRYPT_ALT -//#define MBEDTLS_AES_DECRYPT_ALT -//#define MBEDTLS_ECDH_GEN_PUBLIC_ALT -//#define MBEDTLS_ECDH_COMPUTE_SHARED_ALT -//#define MBEDTLS_ECDSA_VERIFY_ALT -//#define MBEDTLS_ECDSA_SIGN_ALT -//#define MBEDTLS_ECDSA_GENKEY_ALT - -/** - * \def MBEDTLS_ECP_INTERNAL_ALT - * - * Expose a part of the internal interface of the Elliptic Curve Point module. - * - * MBEDTLS_ECP__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use your - * alternative core implementation of elliptic curve arithmetic. Keep in mind - * that function prototypes should remain the same. - * - * This partially replaces one function. The header file from mbed TLS is still - * used, in contrast to the MBEDTLS_ECP_ALT flag. The original implementation - * is still present and it is used for group structures not supported by the - * alternative. - * - * Any of these options become available by defining MBEDTLS_ECP_INTERNAL_ALT - * and implementing the following functions: - * unsigned char mbedtls_internal_ecp_grp_capable( - * const mbedtls_ecp_group *grp ) - * int mbedtls_internal_ecp_init( const mbedtls_ecp_group *grp ) - * void mbedtls_internal_ecp_free( const mbedtls_ecp_group *grp ) - * The mbedtls_internal_ecp_grp_capable function should return 1 if the - * replacement functions implement arithmetic for the given group and 0 - * otherwise. - * The functions mbedtls_internal_ecp_init and mbedtls_internal_ecp_free are - * called before and after each point operation and provide an opportunity to - * implement optimized set up and tear down instructions. - * - * Example: In case you uncomment MBEDTLS_ECP_INTERNAL_ALT and - * MBEDTLS_ECP_DOUBLE_JAC_ALT, mbed TLS will still provide the ecp_double_jac - * function, but will use your mbedtls_internal_ecp_double_jac if the group is - * supported (your mbedtls_internal_ecp_grp_capable function returns 1 when - * receives it as an argument). If the group is not supported then the original - * implementation is used. The other functions and the definition of - * mbedtls_ecp_group and mbedtls_ecp_point will not change, so your - * implementation of mbedtls_internal_ecp_double_jac and - * mbedtls_internal_ecp_grp_capable must be compatible with this definition. - * - * Uncomment a macro to enable alternate implementation of the corresponding - * function. - */ -/* Required for all the functions in this section */ -//#define MBEDTLS_ECP_INTERNAL_ALT -/* Support for Weierstrass curves with Jacobi representation */ -//#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT -//#define MBEDTLS_ECP_ADD_MIXED_ALT -//#define MBEDTLS_ECP_DOUBLE_JAC_ALT -//#define MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT -//#define MBEDTLS_ECP_NORMALIZE_JAC_ALT -/* Support for curves with Montgomery arithmetic */ -//#define MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT -//#define MBEDTLS_ECP_RANDOMIZE_MXZ_ALT -//#define MBEDTLS_ECP_NORMALIZE_MXZ_ALT - -/** - * \def MBEDTLS_TEST_NULL_ENTROPY - * - * Enables testing and use of mbed TLS without any configured entropy sources. - * This permits use of the library on platforms before an entropy source has - * been integrated (see for example the MBEDTLS_ENTROPY_HARDWARE_ALT or the - * MBEDTLS_ENTROPY_NV_SEED switches). - * - * WARNING! This switch MUST be disabled in production builds, and is suitable - * only for development. - * Enabling the switch negates any security provided by the library. - * - * Requires MBEDTLS_ENTROPY_C, MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES - * - */ -//#define MBEDTLS_TEST_NULL_ENTROPY - -/** - * \def MBEDTLS_ENTROPY_HARDWARE_ALT - * - * Uncomment this macro to let mbed TLS use your own implementation of a - * hardware entropy collector. - * - * Your function must be called \c mbedtls_hardware_poll(), have the same - * prototype as declared in entropy_poll.h, and accept NULL as first argument. - * - * Uncomment to use your own hardware entropy collector. - */ -//#define MBEDTLS_ENTROPY_HARDWARE_ALT - -/** - * \def MBEDTLS_AES_ROM_TABLES - * - * Use precomputed AES tables stored in ROM. - * - * Uncomment this macro to use precomputed AES tables stored in ROM. - * Comment this macro to generate AES tables in RAM at runtime. - * - * Tradeoff: Using precomputed ROM tables reduces RAM usage by ~8kb - * (or ~2kb if \c MBEDTLS_AES_FEWER_TABLES is used) and reduces the - * initialization time before the first AES operation can be performed. - * It comes at the cost of additional ~8kb ROM use (resp. ~2kb if \c - * MBEDTLS_AES_FEWER_TABLES below is used), and potentially degraded - * performance if ROM access is slower than RAM access. - * - * This option is independent of \c MBEDTLS_AES_FEWER_TABLES. - * - */ -//#define MBEDTLS_AES_ROM_TABLES - -/** - * \def MBEDTLS_AES_FEWER_TABLES - * - * Use less ROM/RAM for AES tables. - * - * Uncommenting this macro omits 75% of the AES tables from - * ROM / RAM (depending on the value of \c MBEDTLS_AES_ROM_TABLES) - * by computing their values on the fly during operations - * (the tables are entry-wise rotations of one another). - * - * Tradeoff: Uncommenting this reduces the RAM / ROM footprint - * by ~6kb but at the cost of more arithmetic operations during - * runtime. Specifically, one has to compare 4 accesses within - * different tables to 4 accesses with additional arithmetic - * operations within the same table. The performance gain/loss - * depends on the system and memory details. - * - * This option is independent of \c MBEDTLS_AES_ROM_TABLES. - * - */ -//#define MBEDTLS_AES_FEWER_TABLES - -/** - * \def MBEDTLS_CAMELLIA_SMALL_MEMORY - * - * Use less ROM for the Camellia implementation (saves about 768 bytes). - * - * Uncomment this macro to use less memory for Camellia. - */ -//#define MBEDTLS_CAMELLIA_SMALL_MEMORY - -/** - * \def MBEDTLS_CIPHER_MODE_CBC - * - * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers. - */ -#define MBEDTLS_CIPHER_MODE_CBC - -/** - * \def MBEDTLS_CIPHER_MODE_CFB - * - * Enable Cipher Feedback mode (CFB) for symmetric ciphers. - */ -#define MBEDTLS_CIPHER_MODE_CFB - -/** - * \def MBEDTLS_CIPHER_MODE_CTR - * - * Enable Counter Block Cipher mode (CTR) for symmetric ciphers. - */ -#define MBEDTLS_CIPHER_MODE_CTR - -/** - * \def MBEDTLS_CIPHER_MODE_OFB - * - * Enable Output Feedback mode (OFB) for symmetric ciphers. - */ -#define MBEDTLS_CIPHER_MODE_OFB - -/** - * \def MBEDTLS_CIPHER_MODE_XTS - * - * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES. - */ -#define MBEDTLS_CIPHER_MODE_XTS - -/** - * \def MBEDTLS_CIPHER_NULL_CIPHER - * - * Enable NULL cipher. - * Warning: Only do so when you know what you are doing. This allows for - * encryption or channels without any security! - * - * Requires MBEDTLS_ENABLE_WEAK_CIPHERSUITES as well to enable - * the following ciphersuites: - * MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA - * MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA - * MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA - * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 - * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 - * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256 - * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA - * MBEDTLS_TLS_RSA_WITH_NULL_SHA256 - * MBEDTLS_TLS_RSA_WITH_NULL_SHA - * MBEDTLS_TLS_RSA_WITH_NULL_MD5 - * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA - * MBEDTLS_TLS_PSK_WITH_NULL_SHA384 - * MBEDTLS_TLS_PSK_WITH_NULL_SHA256 - * MBEDTLS_TLS_PSK_WITH_NULL_SHA - * - * Uncomment this macro to enable the NULL cipher and ciphersuites - */ -//#define MBEDTLS_CIPHER_NULL_CIPHER - -/** - * \def MBEDTLS_CIPHER_PADDING_PKCS7 - * - * MBEDTLS_CIPHER_PADDING_XXX: Uncomment or comment macros to add support for - * specific padding modes in the cipher layer with cipher modes that support - * padding (e.g. CBC) - * - * If you disable all padding modes, only full blocks can be used with CBC. - * - * Enable padding modes in the cipher layer. - */ -#define MBEDTLS_CIPHER_PADDING_PKCS7 -#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS -#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN -#define MBEDTLS_CIPHER_PADDING_ZEROS - -/** - * \def MBEDTLS_ENABLE_WEAK_CIPHERSUITES - * - * Enable weak ciphersuites in SSL / TLS. - * Warning: Only do so when you know what you are doing. This allows for - * channels with virtually no security at all! - * - * This enables the following ciphersuites: - * MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA - * MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA - * - * Uncomment this macro to enable weak ciphersuites - * - * \warning DES is considered a weak cipher and its use constitutes a - * security risk. We recommend considering stronger ciphers instead. - */ -//#define MBEDTLS_ENABLE_WEAK_CIPHERSUITES - -/** - * \def MBEDTLS_REMOVE_ARC4_CIPHERSUITES - * - * Remove RC4 ciphersuites by default in SSL / TLS. - * This flag removes the ciphersuites based on RC4 from the default list as - * returned by mbedtls_ssl_list_ciphersuites(). However, it is still possible to - * enable (some of) them with mbedtls_ssl_conf_ciphersuites() by including them - * explicitly. - * - * Uncomment this macro to remove RC4 ciphersuites by default. - */ -#define MBEDTLS_REMOVE_ARC4_CIPHERSUITES - -/** - * \def MBEDTLS_REMOVE_3DES_CIPHERSUITES - * - * Remove 3DES ciphersuites by default in SSL / TLS. - * This flag removes the ciphersuites based on 3DES from the default list as - * returned by mbedtls_ssl_list_ciphersuites(). However, it is still possible - * to enable (some of) them with mbedtls_ssl_conf_ciphersuites() by including - * them explicitly. - * - * A man-in-the-browser attacker can recover authentication tokens sent through - * a TLS connection using a 3DES based cipher suite (see "On the Practical - * (In-)Security of 64-bit Block Ciphers" by Karthikeyan Bhargavan and Gaëtan - * Leurent, see https://sweet32.info/SWEET32_CCS16.pdf). If this attack falls - * in your threat model or you are unsure, then you should keep this option - * enabled to remove 3DES based cipher suites. - * - * Comment this macro to keep 3DES in the default ciphersuite list. - */ -#define MBEDTLS_REMOVE_3DES_CIPHERSUITES - -/** - * \def MBEDTLS_ECP_DP_SECP192R1_ENABLED - * - * MBEDTLS_ECP_XXXX_ENABLED: Enables specific curves within the Elliptic Curve - * module. By default all supported curves are enabled. - * - * Comment macros to disable the curve and functions for it - */ -// #define MBEDTLS_ECP_DP_SECP192R1_ENABLED -#define MBEDTLS_ECP_DP_SECP224R1_ENABLED -#define MBEDTLS_ECP_DP_SECP256R1_ENABLED -// #define MBEDTLS_ECP_DP_SECP384R1_ENABLED -// #define MBEDTLS_ECP_DP_SECP521R1_ENABLED -// #define MBEDTLS_ECP_DP_SECP192K1_ENABLED -// #define MBEDTLS_ECP_DP_SECP224K1_ENABLED -// #define MBEDTLS_ECP_DP_SECP256K1_ENABLED -// #define MBEDTLS_ECP_DP_BP256R1_ENABLED -// #define MBEDTLS_ECP_DP_BP384R1_ENABLED -// #define MBEDTLS_ECP_DP_BP512R1_ENABLED -// #define MBEDTLS_ECP_DP_CURVE25519_ENABLED -// #define MBEDTLS_ECP_DP_CURVE448_ENABLED - -/** - * \def MBEDTLS_ECP_NIST_OPTIM - * - * Enable specific 'modulo p' routines for each NIST prime. - * Depending on the prime and architecture, makes operations 4 to 8 times - * faster on the corresponding curve. - * - * Comment this macro to disable NIST curves optimisation. - */ -#define MBEDTLS_ECP_NIST_OPTIM - -/** - * \def MBEDTLS_ECP_RESTARTABLE - * - * Enable "non-blocking" ECC operations that can return early and be resumed. - * - * This allows various functions to pause by returning - * #MBEDTLS_ERR_ECP_IN_PROGRESS (or, for functions in the SSL module, - * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) and then be called later again in - * order to further progress and eventually complete their operation. This is - * controlled through mbedtls_ecp_set_max_ops() which limits the maximum - * number of ECC operations a function may perform before pausing; see - * mbedtls_ecp_set_max_ops() for more information. - * - * This is useful in non-threaded environments if you want to avoid blocking - * for too long on ECC (and, hence, X.509 or SSL/TLS) operations. - * - * Uncomment this macro to enable restartable ECC computations. - * - * \note This option only works with the default software implementation of - * elliptic curve functionality. It is incompatible with - * MBEDTLS_ECP_ALT, MBEDTLS_ECDH_XXX_ALT, MBEDTLS_ECDSA_XXX_ALT - * and MBEDTLS_ECDH_LEGACY_CONTEXT. - */ -//#define MBEDTLS_ECP_RESTARTABLE - -/** - * \def MBEDTLS_ECDH_LEGACY_CONTEXT - * - * Use a backward compatible ECDH context. - * - * Mbed TLS supports two formats for ECDH contexts (#mbedtls_ecdh_context - * defined in `ecdh.h`). For most applications, the choice of format makes - * no difference, since all library functions can work with either format, - * except that the new format is incompatible with MBEDTLS_ECP_RESTARTABLE. - - * The new format used when this option is disabled is smaller - * (56 bytes on a 32-bit platform). In future versions of the library, it - * will support alternative implementations of ECDH operations. - * The new format is incompatible with applications that access - * context fields directly and with restartable ECP operations. - * - * Define this macro if you enable MBEDTLS_ECP_RESTARTABLE or if you - * want to access ECDH context fields directly. Otherwise you should - * comment out this macro definition. - * - * This option has no effect if #MBEDTLS_ECDH_C is not enabled. - * - * \note This configuration option is experimental. Future versions of the - * library may modify the way the ECDH context layout is configured - * and may modify the layout of the new context type. - */ -#define MBEDTLS_ECDH_LEGACY_CONTEXT - -/** - * \def MBEDTLS_ECDSA_DETERMINISTIC - * - * Enable deterministic ECDSA (RFC 6979). - * Standard ECDSA is "fragile" in the sense that lack of entropy when signing - * may result in a compromise of the long-term signing key. This is avoided by - * the deterministic variant. - * - * Requires: MBEDTLS_HMAC_DRBG_C - * - * Comment this macro to disable deterministic ECDSA. - */ -#define MBEDTLS_ECDSA_DETERMINISTIC - -/** - * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED - * - * Enable the PSK based ciphersuite modes in SSL / TLS. - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_PSK_WITH_RC4_128_SHA - */ -#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED - * - * Enable the DHE-PSK based ciphersuite modes in SSL / TLS. - * - * Requires: MBEDTLS_DHM_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA - * - * \warning Using DHE constitutes a security risk as it - * is not possible to validate custom DH parameters. - * If possible, it is recommended users should consider - * preferring other methods of key exchange. - * See dhm.h for more details. - * - */ -#define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED - * - * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. - * - * Requires: MBEDTLS_ECDH_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA - */ -#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED - * - * Enable the RSA-PSK based ciphersuite modes in SSL / TLS. - * - * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15, - * MBEDTLS_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA - */ -#define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED - * - * Enable the RSA-only based ciphersuite modes in SSL / TLS. - * - * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15, - * MBEDTLS_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - * MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - * MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_RSA_WITH_RC4_128_SHA - * MBEDTLS_TLS_RSA_WITH_RC4_128_MD5 - */ -#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED - * - * Enable the DHE-RSA based ciphersuite modes in SSL / TLS. - * - * Requires: MBEDTLS_DHM_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15, - * MBEDTLS_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA - * MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - * - * \warning Using DHE constitutes a security risk as it - * is not possible to validate custom DH parameters. - * If possible, it is recommended users should consider - * preferring other methods of key exchange. - * See dhm.h for more details. - * - */ -#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED - * - * Enable the ECDHE-RSA based ciphersuite modes in SSL / TLS. - * - * Requires: MBEDTLS_ECDH_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15, - * MBEDTLS_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA - */ -#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED - * - * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. - * - * Requires: MBEDTLS_ECDH_C, MBEDTLS_ECDSA_C, MBEDTLS_X509_CRT_PARSE_C, - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA - */ -#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED - * - * Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. - * - * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA - * MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 - */ -#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED - * - * Enable the ECDH-RSA based ciphersuite modes in SSL / TLS. - * - * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA - * MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 - */ -#define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED - -/** - * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED - * - * Enable the ECJPAKE based ciphersuite modes in SSL / TLS. - * - * \warning This is currently experimental. EC J-PAKE support is based on the - * Thread v1.0.0 specification; incompatible changes to the specification - * might still happen. For this reason, this is disabled by default. - * - * Requires: MBEDTLS_ECJPAKE_C - * MBEDTLS_SHA256_C - * MBEDTLS_ECP_DP_SECP256R1_ENABLED - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 - */ -//#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED - -/** - * \def MBEDTLS_PK_PARSE_EC_EXTENDED - * - * Enhance support for reading EC keys using variants of SEC1 not allowed by - * RFC 5915 and RFC 5480. - * - * Currently this means parsing the SpecifiedECDomain choice of EC - * parameters (only known groups are supported, not arbitrary domains, to - * avoid validation issues). - * - * Disable if you only need to support RFC 5915 + 5480 key formats. - */ -#define MBEDTLS_PK_PARSE_EC_EXTENDED - -/** - * \def MBEDTLS_ERROR_STRERROR_DUMMY - * - * Enable a dummy error function to make use of mbedtls_strerror() in - * third party libraries easier when MBEDTLS_ERROR_C is disabled - * (no effect when MBEDTLS_ERROR_C is enabled). - * - * You can safely disable this if MBEDTLS_ERROR_C is enabled, or if you're - * not using mbedtls_strerror() or error_strerror() in your application. - * - * Disable if you run into name conflicts and want to really remove the - * mbedtls_strerror() - */ -// #define MBEDTLS_ERROR_STRERROR_DUMMY - -/** - * \def MBEDTLS_GENPRIME - * - * Enable the prime-number generation code. - * - * Requires: MBEDTLS_BIGNUM_C - */ -#define MBEDTLS_GENPRIME - -/** - * \def MBEDTLS_FS_IO - * - * Enable functions that use the filesystem. - */ -// #define MBEDTLS_FS_IO - -/** - * \def MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES - * - * Do not add default entropy sources. These are the platform specific, - * mbedtls_timing_hardclock and HAVEGE based poll functions. - * - * This is useful to have more control over the added entropy sources in an - * application. - * - * Uncomment this macro to prevent loading of default entropy functions. - */ -//#define MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES - -/** - * \def MBEDTLS_NO_PLATFORM_ENTROPY - * - * Do not use built-in platform entropy functions. - * This is useful if your platform does not support - * standards like the /dev/urandom or Windows CryptoAPI. - * - * Uncomment this macro to disable the built-in platform entropy functions. - */ -#define MBEDTLS_NO_PLATFORM_ENTROPY - -/** - * \def MBEDTLS_ENTROPY_FORCE_SHA256 - * - * Force the entropy accumulator to use a SHA-256 accumulator instead of the - * default SHA-512 based one (if both are available). - * - * Requires: MBEDTLS_SHA256_C - * - * On 32-bit systems SHA-256 can be much faster than SHA-512. Use this option - * if you have performance concerns. - * - * This option is only useful if both MBEDTLS_SHA256_C and - * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used. - */ -//#define MBEDTLS_ENTROPY_FORCE_SHA256 - -/** - * \def MBEDTLS_ENTROPY_NV_SEED - * - * Enable the non-volatile (NV) seed file-based entropy source. - * (Also enables the NV seed read/write functions in the platform layer) - * - * This is crucial (if not required) on systems that do not have a - * cryptographic entropy source (in hardware or kernel) available. - * - * Requires: MBEDTLS_ENTROPY_C, MBEDTLS_PLATFORM_C - * - * \note The read/write functions that are used by the entropy source are - * determined in the platform layer, and can be modified at runtime and/or - * compile-time depending on the flags (MBEDTLS_PLATFORM_NV_SEED_*) used. - * - * \note If you use the default implementation functions that read a seedfile - * with regular fopen(), please make sure you make a seedfile with the - * proper name (defined in MBEDTLS_PLATFORM_STD_NV_SEED_FILE) and at - * least MBEDTLS_ENTROPY_BLOCK_SIZE bytes in size that can be read from - * and written to or you will get an entropy source error! The default - * implementation will only use the first MBEDTLS_ENTROPY_BLOCK_SIZE - * bytes from the file. - * - * \note The entropy collector will write to the seed file before entropy is - * given to an external source, to update it. - */ -//#define MBEDTLS_ENTROPY_NV_SEED - -/** - * \def MBEDTLS_MEMORY_DEBUG - * - * Enable debugging of buffer allocator memory issues. Automatically prints - * (to stderr) all (fatal) messages on memory allocation issues. Enables - * function for 'debug output' of allocated memory. - * - * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C - * - * Uncomment this macro to let the buffer allocator print out error messages. - */ -//#define MBEDTLS_MEMORY_DEBUG - -/** - * \def MBEDTLS_MEMORY_BACKTRACE - * - * Include backtrace information with each allocated block. - * - * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C - * GLIBC-compatible backtrace() an backtrace_symbols() support - * - * Uncomment this macro to include backtrace information - */ -//#define MBEDTLS_MEMORY_BACKTRACE - -/** - * \def MBEDTLS_PK_RSA_ALT_SUPPORT - * - * Support external private RSA keys (eg from a HSM) in the PK layer. - * - * Comment this macro to disable support for external private RSA keys. - */ -// #define MBEDTLS_PK_RSA_ALT_SUPPORT - -/** - * \def MBEDTLS_PKCS1_V15 - * - * Enable support for PKCS#1 v1.5 encoding. - * - * Requires: MBEDTLS_RSA_C - * - * This enables support for PKCS#1 v1.5 operations. - */ -#define MBEDTLS_PKCS1_V15 - -/** - * \def MBEDTLS_PKCS1_V21 - * - * Enable support for PKCS#1 v2.1 encoding. - * - * Requires: MBEDTLS_MD_C, MBEDTLS_RSA_C - * - * This enables support for RSAES-OAEP and RSASSA-PSS operations. - */ -#define MBEDTLS_PKCS1_V21 - -/** - * \def MBEDTLS_PSA_CRYPTO_SPM - * - * When MBEDTLS_PSA_CRYPTO_SPM is defined, the code is built for SPM (Secure - * Partition Manager) integration which separates the code into two parts: a - * NSPE (Non-Secure Process Environment) and an SPE (Secure Process - * Environment). - * - * Module: library/psa_crypto.c - * Requires: MBEDTLS_PSA_CRYPTO_C - * - */ -//#define MBEDTLS_PSA_CRYPTO_SPM - -/** - * \def MBEDTLS_PSA_INJECT_ENTROPY - * - * Enable support for entropy injection at first boot. This feature is - * required on systems that do not have a built-in entropy source (TRNG). - * This feature is currently not supported on systems that have a built-in - * entropy source. - * - * Requires: MBEDTLS_PSA_CRYPTO_STORAGE_C, MBEDTLS_ENTROPY_NV_SEED - * - */ -//#define MBEDTLS_PSA_INJECT_ENTROPY - -/** - * \def MBEDTLS_RSA_NO_CRT - * - * Do not use the Chinese Remainder Theorem - * for the RSA private operation. - * - * Uncomment this macro to disable the use of CRT in RSA. - * - */ -//#define MBEDTLS_RSA_NO_CRT - -/** - * \def MBEDTLS_SELF_TEST - * - * Enable the checkup functions (*_self_test). - */ -#define MBEDTLS_SELF_TEST - -/** - * \def MBEDTLS_SHA256_SMALLER - * - * Enable an implementation of SHA-256 that has lower ROM footprint but also - * lower performance. - * - * The default implementation is meant to be a reasonnable compromise between - * performance and size. This version optimizes more aggressively for size at - * the expense of performance. Eg on Cortex-M4 it reduces the size of - * mbedtls_sha256_process() from ~2KB to ~0.5KB for a performance hit of about - * 30%. - * - * Uncomment to enable the smaller implementation of SHA256. - */ -//#define MBEDTLS_SHA256_SMALLER - -/** - * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES - * - * Enable sending of alert messages in case of encountered errors as per RFC. - * If you choose not to send the alert messages, mbed TLS can still communicate - * with other servers, only debugging of failures is harder. - * - * The advantage of not sending alert messages, is that no information is given - * about reasons for failures thus preventing adversaries of gaining intel. - * - * Enable sending of all alert messages - */ -#define MBEDTLS_SSL_ALL_ALERT_MESSAGES - -/** - * \def MBEDTLS_SSL_RECORD_CHECKING - * - * Enable the function mbedtls_ssl_check_record() which can be used to check - * the validity and authenticity of an incoming record, to verify that it has - * not been seen before. These checks are performed without modifying the - * externally visible state of the SSL context. - * - * See mbedtls_ssl_check_record() for more information. - * - * Uncomment to enable support for record checking. - */ -#define MBEDTLS_SSL_RECORD_CHECKING - -/** - * \def MBEDTLS_SSL_DTLS_CONNECTION_ID - * - * Enable support for the DTLS Connection ID extension - * (version draft-ietf-tls-dtls-connection-id-05, - * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05) - * which allows to identify DTLS connections across changes - * in the underlying transport. - * - * Setting this option enables the SSL APIs `mbedtls_ssl_set_cid()`, - * `mbedtls_ssl_get_peer_cid()` and `mbedtls_ssl_conf_cid()`. - * See the corresponding documentation for more information. - * - * \warning The Connection ID extension is still in draft state. - * We make no stability promises for the availability - * or the shape of the API controlled by this option. - * - * The maximum lengths of outgoing and incoming CIDs can be configured - * through the options - * - MBEDTLS_SSL_CID_OUT_LEN_MAX - * - MBEDTLS_SSL_CID_IN_LEN_MAX. - * - * Requires: MBEDTLS_SSL_PROTO_DTLS - * - * Uncomment to enable the Connection ID extension. - */ -//#define MBEDTLS_SSL_DTLS_CONNECTION_ID - -/** - * \def MBEDTLS_SSL_ASYNC_PRIVATE - * - * Enable asynchronous external private key operations in SSL. This allows - * you to configure an SSL connection to call an external cryptographic - * module to perform private key operations instead of performing the - * operation inside the library. - * - */ -//#define MBEDTLS_SSL_ASYNC_PRIVATE - -/** - * \def MBEDTLS_SSL_CONTEXT_SERIALIZATION - * - * Enable serialization of the TLS context structures, through use of the - * functions mbedtls_ssl_context_save() and mbedtls_ssl_context_load(). - * - * This pair of functions allows one side of a connection to serialize the - * context associated with the connection, then free or re-use that context - * while the serialized state is persisted elsewhere, and finally deserialize - * that state to a live context for resuming read/write operations on the - * connection. From a protocol perspective, the state of the connection is - * unaffected, in particular this is entirely transparent to the peer. - * - * Note: this is distinct from TLS session resumption, which is part of the - * protocol and fully visible by the peer. TLS session resumption enables - * establishing new connections associated to a saved session with shorter, - * lighter handshakes, while context serialization is a local optimization in - * handling a single, potentially long-lived connection. - * - * Enabling these APIs makes some SSL structures larger, as 64 extra bytes are - * saved after the handshake to allow for more efficient serialization, so if - * you don't need this feature you'll save RAM by disabling it. - * - * Comment to disable the context serialization APIs. - */ -#define MBEDTLS_SSL_CONTEXT_SERIALIZATION - -/** - * \def MBEDTLS_SSL_DEBUG_ALL - * - * Enable the debug messages in SSL module for all issues. - * Debug messages have been disabled in some places to prevent timing - * attacks due to (unbalanced) debugging function calls. - * - * If you need all error reporting you should enable this during debugging, - * but remove this for production servers that should log as well. - * - * Uncomment this macro to report all debug messages on errors introducing - * a timing side-channel. - * - */ -//#define MBEDTLS_SSL_DEBUG_ALL - -/** \def MBEDTLS_SSL_ENCRYPT_THEN_MAC - * - * Enable support for Encrypt-then-MAC, RFC 7366. - * - * This allows peers that both support it to use a more robust protection for - * ciphersuites using CBC, providing deep resistance against timing attacks - * on the padding or underlying cipher. - * - * This only affects CBC ciphersuites, and is useless if none is defined. - * - * Requires: MBEDTLS_SSL_PROTO_TLS1 or - * MBEDTLS_SSL_PROTO_TLS1_1 or - * MBEDTLS_SSL_PROTO_TLS1_2 - * - * Comment this macro to disable support for Encrypt-then-MAC - */ -#define MBEDTLS_SSL_ENCRYPT_THEN_MAC - -/** \def MBEDTLS_SSL_EXTENDED_MASTER_SECRET - * - * Enable support for Extended Master Secret, aka Session Hash - * (draft-ietf-tls-session-hash-02). - * - * This was introduced as "the proper fix" to the Triple Handshake familiy of - * attacks, but it is recommended to always use it (even if you disable - * renegotiation), since it actually fixes a more fundamental issue in the - * original SSL/TLS design, and has implications beyond Triple Handshake. - * - * Requires: MBEDTLS_SSL_PROTO_TLS1 or - * MBEDTLS_SSL_PROTO_TLS1_1 or - * MBEDTLS_SSL_PROTO_TLS1_2 - * - * Comment this macro to disable support for Extended Master Secret. - */ -#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET - -/** - * \def MBEDTLS_SSL_FALLBACK_SCSV - * - * Enable support for FALLBACK_SCSV (draft-ietf-tls-downgrade-scsv-00). - * - * For servers, it is recommended to always enable this, unless you support - * only one version of TLS, or know for sure that none of your clients - * implements a fallback strategy. - * - * For clients, you only need this if you're using a fallback strategy, which - * is not recommended in the first place, unless you absolutely need it to - * interoperate with buggy (version-intolerant) servers. - * - * Comment this macro to disable support for FALLBACK_SCSV - */ -#define MBEDTLS_SSL_FALLBACK_SCSV - -/** - * \def MBEDTLS_SSL_KEEP_PEER_CERTIFICATE - * - * This option controls the availability of the API mbedtls_ssl_get_peer_cert() - * giving access to the peer's certificate after completion of the handshake. - * - * Unless you need mbedtls_ssl_peer_cert() in your application, it is - * recommended to disable this option for reduced RAM usage. - * - * \note If this option is disabled, mbedtls_ssl_get_peer_cert() is still - * defined, but always returns \c NULL. - * - * \note This option has no influence on the protection against the - * triple handshake attack. Even if it is disabled, Mbed TLS will - * still ensure that certificates do not change during renegotiation, - * for exaple by keeping a hash of the peer's certificate. - * - * Comment this macro to disable storing the peer's certificate - * after the handshake. - */ -#define MBEDTLS_SSL_KEEP_PEER_CERTIFICATE - -/** - * \def MBEDTLS_SSL_HW_RECORD_ACCEL - * - * Enable hooking functions in SSL module for hardware acceleration of - * individual records. - * - * Uncomment this macro to enable hooking functions. - */ -//#define MBEDTLS_SSL_HW_RECORD_ACCEL - -/** - * \def MBEDTLS_SSL_CBC_RECORD_SPLITTING - * - * Enable 1/n-1 record splitting for CBC mode in SSLv3 and TLS 1.0. - * - * This is a countermeasure to the BEAST attack, which also minimizes the risk - * of interoperability issues compared to sending 0-length records. - * - * Comment this macro to disable 1/n-1 record splitting. - */ -#define MBEDTLS_SSL_CBC_RECORD_SPLITTING - -/** - * \def MBEDTLS_SSL_RENEGOTIATION - * - * Enable support for TLS renegotiation. - * - * The two main uses of renegotiation are (1) refresh keys on long-lived - * connections and (2) client authentication after the initial handshake. - * If you don't need renegotiation, it's probably better to disable it, since - * it has been associated with security issues in the past and is easy to - * misuse/misunderstand. - * - * Comment this to disable support for renegotiation. - * - * \note Even if this option is disabled, both client and server are aware - * of the Renegotiation Indication Extension (RFC 5746) used to - * prevent the SSL renegotiation attack (see RFC 5746 Sect. 1). - * (See \c mbedtls_ssl_conf_legacy_renegotiation for the - * configuration of this extension). - * - */ -#define MBEDTLS_SSL_RENEGOTIATION - -/** - * \def MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO - * - * Enable support for receiving and parsing SSLv2 Client Hello messages for the - * SSL Server module (MBEDTLS_SSL_SRV_C). - * - * Uncomment this macro to enable support for SSLv2 Client Hello messages. - */ -//#define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO - -/** - * \def MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE - * - * Pick the ciphersuite according to the client's preferences rather than ours - * in the SSL Server module (MBEDTLS_SSL_SRV_C). - * - * Uncomment this macro to respect client's ciphersuite order - */ -//#define MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE - -/** - * \def MBEDTLS_SSL_MAX_FRAGMENT_LENGTH - * - * Enable support for RFC 6066 max_fragment_length extension in SSL. - * - * Comment this macro to disable support for the max_fragment_length extension - */ -#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH - -/** - * \def MBEDTLS_SSL_PROTO_SSL3 - * - * Enable support for SSL 3.0. - * - * Requires: MBEDTLS_MD5_C - * MBEDTLS_SHA1_C - * - * Comment this macro to disable support for SSL 3.0 - */ -//#define MBEDTLS_SSL_PROTO_SSL3 - -/** - * \def MBEDTLS_SSL_PROTO_TLS1 - * - * Enable support for TLS 1.0. - * - * Requires: MBEDTLS_MD5_C - * MBEDTLS_SHA1_C - * - * Comment this macro to disable support for TLS 1.0 - */ -#define MBEDTLS_SSL_PROTO_TLS1 - -/** - * \def MBEDTLS_SSL_PROTO_TLS1_1 - * - * Enable support for TLS 1.1 (and DTLS 1.0 if DTLS is enabled). - * - * Requires: MBEDTLS_MD5_C - * MBEDTLS_SHA1_C - * - * Comment this macro to disable support for TLS 1.1 / DTLS 1.0 - */ -#define MBEDTLS_SSL_PROTO_TLS1_1 - -/** - * \def MBEDTLS_SSL_PROTO_TLS1_2 - * - * Enable support for TLS 1.2 (and DTLS 1.2 if DTLS is enabled). - * - * Requires: MBEDTLS_SHA1_C or MBEDTLS_SHA256_C or MBEDTLS_SHA512_C - * (Depends on ciphersuites) - * - * Comment this macro to disable support for TLS 1.2 / DTLS 1.2 - */ -#define MBEDTLS_SSL_PROTO_TLS1_2 - -/** - * \def MBEDTLS_SSL_PROTO_DTLS - * - * Enable support for DTLS (all available versions). - * - * Enable this and MBEDTLS_SSL_PROTO_TLS1_1 to enable DTLS 1.0, - * and/or this and MBEDTLS_SSL_PROTO_TLS1_2 to enable DTLS 1.2. - * - * Requires: MBEDTLS_SSL_PROTO_TLS1_1 - * or MBEDTLS_SSL_PROTO_TLS1_2 - * - * Comment this macro to disable support for DTLS - */ -#define MBEDTLS_SSL_PROTO_DTLS - -/** - * \def MBEDTLS_SSL_ALPN - * - * Enable support for RFC 7301 Application Layer Protocol Negotiation. - * - * Comment this macro to disable support for ALPN. - */ -#define MBEDTLS_SSL_ALPN - -/** - * \def MBEDTLS_SSL_DTLS_ANTI_REPLAY - * - * Enable support for the anti-replay mechanism in DTLS. - * - * Requires: MBEDTLS_SSL_TLS_C - * MBEDTLS_SSL_PROTO_DTLS - * - * \warning Disabling this is often a security risk! - * See mbedtls_ssl_conf_dtls_anti_replay() for details. - * - * Comment this to disable anti-replay in DTLS. - */ -#define MBEDTLS_SSL_DTLS_ANTI_REPLAY - -/** - * \def MBEDTLS_SSL_DTLS_HELLO_VERIFY - * - * Enable support for HelloVerifyRequest on DTLS servers. - * - * This feature is highly recommended to prevent DTLS servers being used as - * amplifiers in DoS attacks against other hosts. It should always be enabled - * unless you know for sure amplification cannot be a problem in the - * environment in which your server operates. - * - * \warning Disabling this can ba a security risk! (see above) - * - * Requires: MBEDTLS_SSL_PROTO_DTLS - * - * Comment this to disable support for HelloVerifyRequest. - */ -#define MBEDTLS_SSL_DTLS_HELLO_VERIFY - -/** - * \def MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE - * - * Enable server-side support for clients that reconnect from the same port. - * - * Some clients unexpectedly close the connection and try to reconnect using the - * same source port. This needs special support from the server to handle the - * new connection securely, as described in section 4.2.8 of RFC 6347. This - * flag enables that support. - * - * Requires: MBEDTLS_SSL_DTLS_HELLO_VERIFY - * - * Comment this to disable support for clients reusing the source port. - */ -#define MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE - -/** - * \def MBEDTLS_SSL_DTLS_BADMAC_LIMIT - * - * Enable support for a limit of records with bad MAC. - * - * See mbedtls_ssl_conf_dtls_badmac_limit(). - * - * Requires: MBEDTLS_SSL_PROTO_DTLS - */ -#define MBEDTLS_SSL_DTLS_BADMAC_LIMIT - -/** - * \def MBEDTLS_SSL_SESSION_TICKETS - * - * Enable support for RFC 5077 session tickets in SSL. - * Client-side, provides full support for session tickets (maintenance of a - * session store remains the responsibility of the application, though). - * Server-side, you also need to provide callbacks for writing and parsing - * tickets, including authenticated encryption and key management. Example - * callbacks are provided by MBEDTLS_SSL_TICKET_C. - * - * Comment this macro to disable support for SSL session tickets - */ -#define MBEDTLS_SSL_SESSION_TICKETS - -/** - * \def MBEDTLS_SSL_EXPORT_KEYS - * - * Enable support for exporting key block and master secret. - * This is required for certain users of TLS, e.g. EAP-TLS. - * - * Comment this macro to disable support for key export - */ -#define MBEDTLS_SSL_EXPORT_KEYS - -/** - * \def MBEDTLS_SSL_SERVER_NAME_INDICATION - * - * Enable support for RFC 6066 server name indication (SNI) in SSL. - * - * Requires: MBEDTLS_X509_CRT_PARSE_C - * - * Comment this macro to disable support for server name indication in SSL - */ -#define MBEDTLS_SSL_SERVER_NAME_INDICATION - -/** - * \def MBEDTLS_SSL_TRUNCATED_HMAC - * - * Enable support for RFC 6066 truncated HMAC in SSL. - * - * Comment this macro to disable support for truncated HMAC in SSL - */ -#define MBEDTLS_SSL_TRUNCATED_HMAC - -/** - * \def MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT - * - * Fallback to old (pre-2.7), non-conforming implementation of the truncated - * HMAC extension which also truncates the HMAC key. Note that this option is - * only meant for a transitory upgrade period and is likely to be removed in - * a future version of the library. - * - * \warning The old implementation is non-compliant and has a security weakness - * (2^80 brute force attack on the HMAC key used for a single, - * uninterrupted connection). This should only be enabled temporarily - * when (1) the use of truncated HMAC is essential in order to save - * bandwidth, and (2) the peer is an Mbed TLS stack that doesn't use - * the fixed implementation yet (pre-2.7). - * - * \deprecated This option is deprecated and will likely be removed in a - * future version of Mbed TLS. - * - * Uncomment to fallback to old, non-compliant truncated HMAC implementation. - * - * Requires: MBEDTLS_SSL_TRUNCATED_HMAC - */ -//#define MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT - -/** - * \def MBEDTLS_THREADING_ALT - * - * Provide your own alternate threading implementation. - * - * Requires: MBEDTLS_THREADING_C - * - * Uncomment this to allow your own alternate threading implementation. - */ -//#define MBEDTLS_THREADING_ALT - -/** - * \def MBEDTLS_THREADING_PTHREAD - * - * Enable the pthread wrapper layer for the threading layer. - * - * Requires: MBEDTLS_THREADING_C - * - * Uncomment this to enable pthread mutexes. - */ -//#define MBEDTLS_THREADING_PTHREAD - -/** - * \def MBEDTLS_USE_PSA_CRYPTO - * - * Make the X.509 and TLS library use PSA for cryptographic operations, and - * enable new APIs for using keys handled by PSA Crypto. - * - * \note Development of this option is currently in progress, and parts - * of the X.509 and TLS modules are not ported to PSA yet. However, these parts - * will still continue to work as usual, so enabling this option should not - * break backwards compatibility. - * - * \warning The PSA Crypto API is in beta stage. While you're welcome to - * experiment using it, incompatible API changes are still possible, and some - * parts may not have reached the same quality as the rest of Mbed TLS yet. - * - * \warning This option enables new Mbed TLS APIs that are dependent on the - * PSA Crypto API, so can't come with the same stability guarantees as the - * rest of the Mbed TLS APIs. You're welcome to experiment with them, but for - * now, access to these APIs is opt-in (via enabling the present option), in - * order to clearly differentiate them from the stable Mbed TLS APIs. - * - * Requires: MBEDTLS_PSA_CRYPTO_C. - * - * Uncomment this to enable internal use of PSA Crypto and new associated APIs. - */ -//#define MBEDTLS_USE_PSA_CRYPTO - -/** - * \def MBEDTLS_VERSION_FEATURES - * - * Allow run-time checking of compile-time enabled features. Thus allowing users - * to check at run-time if the library is for instance compiled with threading - * support via mbedtls_version_check_feature(). - * - * Requires: MBEDTLS_VERSION_C - * - * Comment this to disable run-time checking and save ROM space - */ -// #define MBEDTLS_VERSION_FEATURES - -/** - * \def MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 - * - * If set, the X509 parser will not break-off when parsing an X509 certificate - * and encountering an extension in a v1 or v2 certificate. - * - * Uncomment to prevent an error. - */ -//#define MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 - -/** - * \def MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION - * - * If set, the X509 parser will not break-off when parsing an X509 certificate - * and encountering an unknown critical extension. - * - * \warning Depending on your PKI use, enabling this can be a security risk! - * - * Uncomment to prevent an error. - */ -//#define MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION - -/** - * \def MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK - * - * If set, this enables the X.509 API `mbedtls_x509_crt_verify_with_ca_cb()` - * and the SSL API `mbedtls_ssl_conf_ca_cb()` which allow users to configure - * the set of trusted certificates through a callback instead of a linked - * list. - * - * This is useful for example in environments where a large number of trusted - * certificates is present and storing them in a linked list isn't efficient - * enough, or when the set of trusted certificates changes frequently. - * - * See the documentation of `mbedtls_x509_crt_verify_with_ca_cb()` and - * `mbedtls_ssl_conf_ca_cb()` for more information. - * - * Uncomment to enable trusted certificate callbacks. - */ -//#define MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK - -/** - * \def MBEDTLS_X509_CHECK_KEY_USAGE - * - * Enable verification of the keyUsage extension (CA and leaf certificates). - * - * Disabling this avoids problems with mis-issued and/or misused - * (intermediate) CA and leaf certificates. - * - * \warning Depending on your PKI use, disabling this can be a security risk! - * - * Comment to skip keyUsage checking for both CA and leaf certificates. - */ -#define MBEDTLS_X509_CHECK_KEY_USAGE - -/** - * \def MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE - * - * Enable verification of the extendedKeyUsage extension (leaf certificates). - * - * Disabling this avoids problems with mis-issued and/or misused certificates. - * - * \warning Depending on your PKI use, disabling this can be a security risk! - * - * Comment to skip extendedKeyUsage checking for certificates. - */ -#define MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE - -/** - * \def MBEDTLS_X509_RSASSA_PSS_SUPPORT - * - * Enable parsing and verification of X.509 certificates, CRLs and CSRS - * signed with RSASSA-PSS (aka PKCS#1 v2.1). - * - * Comment this macro to disallow using RSASSA-PSS in certificates. - */ -#define MBEDTLS_X509_RSASSA_PSS_SUPPORT - -/** - * \def MBEDTLS_ZLIB_SUPPORT - * - * If set, the SSL/TLS module uses ZLIB to support compression and - * decompression of packet data. - * - * \warning TLS-level compression MAY REDUCE SECURITY! See for example the - * CRIME attack. Before enabling this option, you should examine with care if - * CRIME or similar exploits may be applicable to your use case. - * - * \note Currently compression can't be used with DTLS. - * - * \deprecated This feature is deprecated and will be removed - * in the next major revision of the library. - * - * Used in: library/ssl_tls.c - * library/ssl_cli.c - * library/ssl_srv.c - * - * This feature requires zlib library and headers to be present. - * - * Uncomment to enable use of ZLIB - */ -//#define MBEDTLS_ZLIB_SUPPORT -/* \} name SECTION: mbed TLS feature support */ - -/** - * \name SECTION: mbed TLS modules - * - * This section enables or disables entire modules in mbed TLS - * \{ - */ - -/** - * \def MBEDTLS_AESNI_C - * - * Enable AES-NI support on x86-64. - * - * Module: library/aesni.c - * Caller: library/aes.c - * - * Requires: MBEDTLS_HAVE_ASM - * - * This modules adds support for the AES-NI instructions on x86-64 - */ -#define MBEDTLS_AESNI_C - -/** - * \def MBEDTLS_AES_C - * - * Enable the AES block cipher. - * - * Module: library/aes.c - * Caller: library/cipher.c - * library/pem.c - * library/ctr_drbg.c - * - * This module enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA - * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 - * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384 - * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA - * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 - * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256 - * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA - * - * PEM_PARSE uses AES for decrypting encrypted keys. - */ -#define MBEDTLS_AES_C - -/** - * \def MBEDTLS_ARC4_C - * - * Enable the ARCFOUR stream cipher. - * - * Module: library/arc4.c - * Caller: library/cipher.c - * - * This module enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA - * MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA - * MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA - * MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA - * MBEDTLS_TLS_RSA_WITH_RC4_128_SHA - * MBEDTLS_TLS_RSA_WITH_RC4_128_MD5 - * MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA - * MBEDTLS_TLS_PSK_WITH_RC4_128_SHA - * - * \warning ARC4 is considered a weak cipher and its use constitutes a - * security risk. If possible, we recommend avoidng dependencies on - * it, and considering stronger ciphers instead. - * - */ -#define MBEDTLS_ARC4_C - -/** - * \def MBEDTLS_ASN1_PARSE_C - * - * Enable the generic ASN1 parser. - * - * Module: library/asn1.c - * Caller: library/x509.c - * library/dhm.c - * library/pkcs12.c - * library/pkcs5.c - * library/pkparse.c - */ -#define MBEDTLS_ASN1_PARSE_C - -/** - * \def MBEDTLS_ASN1_WRITE_C - * - * Enable the generic ASN1 writer. - * - * Module: library/asn1write.c - * Caller: library/ecdsa.c - * library/pkwrite.c - * library/x509_create.c - * library/x509write_crt.c - * library/x509write_csr.c - */ -#define MBEDTLS_ASN1_WRITE_C - -/** - * \def MBEDTLS_BASE64_C - * - * Enable the Base64 module. - * - * Module: library/base64.c - * Caller: library/pem.c - * - * This module is required for PEM support (required by X.509). - */ -#define MBEDTLS_BASE64_C - -/** - * \def MBEDTLS_BIGNUM_C - * - * Enable the multi-precision integer library. - * - * Module: library/bignum.c - * Caller: library/dhm.c - * library/ecp.c - * library/ecdsa.c - * library/rsa.c - * library/rsa_internal.c - * library/ssl_tls.c - * - * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support. - */ -#define MBEDTLS_BIGNUM_C - -/** - * \def MBEDTLS_BLOWFISH_C - * - * Enable the Blowfish block cipher. - * - * Module: library/blowfish.c - */ -#define MBEDTLS_BLOWFISH_C - -/** - * \def MBEDTLS_CAMELLIA_C - * - * Enable the Camellia block cipher. - * - * Module: library/camellia.c - * Caller: library/cipher.c - * - * This module enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 - */ -#define MBEDTLS_CAMELLIA_C - -/** - * \def MBEDTLS_ARIA_C - * - * Enable the ARIA block cipher. - * - * Module: library/aria.c - * Caller: library/cipher.c - * - * This module enables the following ciphersuites (if other requisites are - * enabled as well): - * - * MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 - * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 - * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 - * MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 - * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 - * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 - * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 - * MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 - * MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256 - * MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384 - * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 - * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 - * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 - * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 - * MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 - * MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 - */ -//#define MBEDTLS_ARIA_C - -/** - * \def MBEDTLS_CCM_C - * - * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher. - * - * Module: library/ccm.c - * - * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C - * - * This module enables the AES-CCM ciphersuites, if other requisites are - * enabled as well. - */ -#define MBEDTLS_CCM_C - -/** - * \def MBEDTLS_CERTS_C - * - * Enable the test certificates. - * - * Module: library/certs.c - * Caller: - * - * This module is used for testing (ssl_client/server). - */ -#define MBEDTLS_CERTS_C - -/** - * \def MBEDTLS_CHACHA20_C - * - * Enable the ChaCha20 stream cipher. - * - * Module: library/chacha20.c - */ -#define MBEDTLS_CHACHA20_C - -/** - * \def MBEDTLS_CHACHAPOLY_C - * - * Enable the ChaCha20-Poly1305 AEAD algorithm. - * - * Module: library/chachapoly.c - * - * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C - */ -#define MBEDTLS_CHACHAPOLY_C - -/** - * \def MBEDTLS_CIPHER_C - * - * Enable the generic cipher layer. - * - * Module: library/cipher.c - * Caller: library/ssl_tls.c - * - * Uncomment to enable generic cipher wrappers. - */ -#define MBEDTLS_CIPHER_C - -/** - * \def MBEDTLS_CMAC_C - * - * Enable the CMAC (Cipher-based Message Authentication Code) mode for block - * ciphers. - * - * Module: library/cmac.c - * - * Requires: MBEDTLS_AES_C or MBEDTLS_DES_C - * - */ -//#define MBEDTLS_CMAC_C - -/** - * \def MBEDTLS_CTR_DRBG_C - * - * Enable the CTR_DRBG AES-based random generator. - * The CTR_DRBG generator uses AES-256 by default. - * To use AES-128 instead, enable MBEDTLS_CTR_DRBG_USE_128_BIT_KEY below. - * - * Module: library/ctr_drbg.c - * Caller: - * - * Requires: MBEDTLS_AES_C - * - * This module provides the CTR_DRBG AES random number generator. - */ -#define MBEDTLS_CTR_DRBG_C - -/** - * \def MBEDTLS_DEBUG_C - * - * Enable the debug functions. - * - * Module: library/debug.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * - * This module provides debugging functions. - */ -#define MBEDTLS_DEBUG_C - -/** - * \def MBEDTLS_DES_C - * - * Enable the DES block cipher. - * - * Module: library/des.c - * Caller: library/pem.c - * library/cipher.c - * - * This module enables the following ciphersuites (if other requisites are - * enabled as well): - * MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA - * MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA - * - * PEM_PARSE uses DES/3DES for decrypting encrypted keys. - * - * \warning DES is considered a weak cipher and its use constitutes a - * security risk. We recommend considering stronger ciphers instead. - */ -#define MBEDTLS_DES_C - -/** - * \def MBEDTLS_DHM_C - * - * Enable the Diffie-Hellman-Merkle module. - * - * Module: library/dhm.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * - * This module is used by the following key exchanges: - * DHE-RSA, DHE-PSK - * - * \warning Using DHE constitutes a security risk as it - * is not possible to validate custom DH parameters. - * If possible, it is recommended users should consider - * preferring other methods of key exchange. - * See dhm.h for more details. - * - */ -#define MBEDTLS_DHM_C - -/** - * \def MBEDTLS_ECDH_C - * - * Enable the elliptic curve Diffie-Hellman library. - * - * Module: library/ecdh.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * - * This module is used by the following key exchanges: - * ECDHE-ECDSA, ECDHE-RSA, DHE-PSK - * - * Requires: MBEDTLS_ECP_C - */ -#define MBEDTLS_ECDH_C - -/** - * \def MBEDTLS_ECDSA_C - * - * Enable the elliptic curve DSA library. - * - * Module: library/ecdsa.c - * Caller: - * - * This module is used by the following key exchanges: - * ECDHE-ECDSA - * - * Requires: MBEDTLS_ECP_C, MBEDTLS_ASN1_WRITE_C, MBEDTLS_ASN1_PARSE_C - */ -#define MBEDTLS_ECDSA_C - -/** - * \def MBEDTLS_ECJPAKE_C - * - * Enable the elliptic curve J-PAKE library. - * - * \warning This is currently experimental. EC J-PAKE support is based on the - * Thread v1.0.0 specification; incompatible changes to the specification - * might still happen. For this reason, this is disabled by default. - * - * Module: library/ecjpake.c - * Caller: - * - * This module is used by the following key exchanges: - * ECJPAKE - * - * Requires: MBEDTLS_ECP_C, MBEDTLS_MD_C - */ -//#define MBEDTLS_ECJPAKE_C - -/** - * \def MBEDTLS_ECP_C - * - * Enable the elliptic curve over GF(p) library. - * - * Module: library/ecp.c - * Caller: library/ecdh.c - * library/ecdsa.c - * library/ecjpake.c - * - * Requires: MBEDTLS_BIGNUM_C and at least one MBEDTLS_ECP_DP_XXX_ENABLED - */ -#define MBEDTLS_ECP_C - -/** - * \def MBEDTLS_ENTROPY_C - * - * Enable the platform-specific entropy code. - * - * Module: library/entropy.c - * Caller: - * - * Requires: MBEDTLS_SHA512_C or MBEDTLS_SHA256_C - * - * This module provides a generic entropy pool - */ -#define MBEDTLS_ENTROPY_C - -/** - * \def MBEDTLS_ERROR_C - * - * Enable error code to error string conversion. - * - * Module: library/error.c - * Caller: - * - * This module enables mbedtls_strerror(). - */ -// #define MBEDTLS_ERROR_C - -/** - * \def MBEDTLS_GCM_C - * - * Enable the Galois/Counter Mode (GCM) for AES. - * - * Module: library/gcm.c - * - * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C - * - * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other - * requisites are enabled as well. - */ -#define MBEDTLS_GCM_C - -/** - * \def MBEDTLS_HAVEGE_C - * - * Enable the HAVEGE random generator. - * - * Warning: the HAVEGE random generator is not suitable for virtualized - * environments - * - * Warning: the HAVEGE random generator is dependent on timing and specific - * processor traits. It is therefore not advised to use HAVEGE as - * your applications primary random generator or primary entropy pool - * input. As a secondary input to your entropy pool, it IS able add - * the (limited) extra entropy it provides. - * - * Module: library/havege.c - * Caller: - * - * Requires: MBEDTLS_TIMING_C - * - * Uncomment to enable the HAVEGE random generator. - */ -//#define MBEDTLS_HAVEGE_C - -/** - * \def MBEDTLS_HKDF_C - * - * Enable the HKDF algorithm (RFC 5869). - * - * Module: library/hkdf.c - * Caller: - * - * Requires: MBEDTLS_MD_C - * - * This module adds support for the Hashed Message Authentication Code - * (HMAC)-based key derivation function (HKDF). - */ -#define MBEDTLS_HKDF_C - -/** - * \def MBEDTLS_HMAC_DRBG_C - * - * Enable the HMAC_DRBG random generator. - * - * Module: library/hmac_drbg.c - * Caller: - * - * Requires: MBEDTLS_MD_C - * - * Uncomment to enable the HMAC_DRBG random number geerator. - */ -#define MBEDTLS_HMAC_DRBG_C - -/** - * \def MBEDTLS_NIST_KW_C - * - * Enable the Key Wrapping mode for 128-bit block ciphers, - * as defined in NIST SP 800-38F. Only KW and KWP modes - * are supported. At the moment, only AES is approved by NIST. - * - * Module: library/nist_kw.c - * - * Requires: MBEDTLS_AES_C and MBEDTLS_CIPHER_C - */ -//#define MBEDTLS_NIST_KW_C - -/** - * \def MBEDTLS_MD_C - * - * Enable the generic message digest layer. - * - * Module: library/md.c - * Caller: - * - * Uncomment to enable generic message digest wrappers. - */ -#define MBEDTLS_MD_C - -/** - * \def MBEDTLS_MD2_C - * - * Enable the MD2 hash algorithm. - * - * Module: library/md2.c - * Caller: - * - * Uncomment to enable support for (rare) MD2-signed X.509 certs. - * - * \warning MD2 is considered a weak message digest and its use constitutes a - * security risk. If possible, we recommend avoiding dependencies on - * it, and considering stronger message digests instead. - * - */ -//#define MBEDTLS_MD2_C - -/** - * \def MBEDTLS_MD4_C - * - * Enable the MD4 hash algorithm. - * - * Module: library/md4.c - * Caller: - * - * Uncomment to enable support for (rare) MD4-signed X.509 certs. - * - * \warning MD4 is considered a weak message digest and its use constitutes a - * security risk. If possible, we recommend avoiding dependencies on - * it, and considering stronger message digests instead. - * - */ -//#define MBEDTLS_MD4_C - -/** - * \def MBEDTLS_MD5_C - * - * Enable the MD5 hash algorithm. - * - * Module: library/md5.c - * Caller: library/md.c - * library/pem.c - * library/ssl_tls.c - * - * This module is required for SSL/TLS up to version 1.1, and for TLS 1.2 - * depending on the handshake parameters. Further, it is used for checking - * MD5-signed certificates, and for PBKDF1 when decrypting PEM-encoded - * encrypted keys. - * - * \warning MD5 is considered a weak message digest and its use constitutes a - * security risk. If possible, we recommend avoiding dependencies on - * it, and considering stronger message digests instead. - * - */ -#define MBEDTLS_MD5_C - -/** - * \def MBEDTLS_MEMORY_BUFFER_ALLOC_C - * - * Enable the buffer allocator implementation that makes use of a (stack) - * based buffer to 'allocate' dynamic memory. (replaces calloc() and free() - * calls) - * - * Module: library/memory_buffer_alloc.c - * - * Requires: MBEDTLS_PLATFORM_C - * MBEDTLS_PLATFORM_MEMORY (to use it within mbed TLS) - * - * Enable this module to enable the buffer memory allocator. - */ -//#define MBEDTLS_MEMORY_BUFFER_ALLOC_C - -/** - * \def MBEDTLS_NET_C - * - * Enable the TCP and UDP over IPv6/IPv4 networking routines. - * - * \note This module only works on POSIX/Unix (including Linux, BSD and OS X) - * and Windows. For other platforms, you'll want to disable it, and write your - * own networking callbacks to be passed to \c mbedtls_ssl_set_bio(). - * - * \note See also our Knowledge Base article about porting to a new - * environment: - * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS - * - * Module: library/net_sockets.c - * - * This module provides networking routines. - */ -// #define MBEDTLS_NET_C - -/** - * \def MBEDTLS_OID_C - * - * Enable the OID database. - * - * Module: library/oid.c - * Caller: library/asn1write.c - * library/pkcs5.c - * library/pkparse.c - * library/pkwrite.c - * library/rsa.c - * library/x509.c - * library/x509_create.c - * library/x509_crl.c - * library/x509_crt.c - * library/x509_csr.c - * library/x509write_crt.c - * library/x509write_csr.c - * - * This modules translates between OIDs and internal values. - */ -#define MBEDTLS_OID_C - -/** - * \def MBEDTLS_PADLOCK_C - * - * Enable VIA Padlock support on x86. - * - * Module: library/padlock.c - * Caller: library/aes.c - * - * Requires: MBEDTLS_HAVE_ASM - * - * This modules adds support for the VIA PadLock on x86. - */ -#define MBEDTLS_PADLOCK_C - -/** - * \def MBEDTLS_PEM_PARSE_C - * - * Enable PEM decoding / parsing. - * - * Module: library/pem.c - * Caller: library/dhm.c - * library/pkparse.c - * library/x509_crl.c - * library/x509_crt.c - * library/x509_csr.c - * - * Requires: MBEDTLS_BASE64_C - * - * This modules adds support for decoding / parsing PEM files. - */ -#define MBEDTLS_PEM_PARSE_C - -/** - * \def MBEDTLS_PEM_WRITE_C - * - * Enable PEM encoding / writing. - * - * Module: library/pem.c - * Caller: library/pkwrite.c - * library/x509write_crt.c - * library/x509write_csr.c - * - * Requires: MBEDTLS_BASE64_C - * - * This modules adds support for encoding / writing PEM files. - */ -#define MBEDTLS_PEM_WRITE_C - -/** - * \def MBEDTLS_PK_C - * - * Enable the generic public (asymetric) key layer. - * - * Module: library/pk.c - * Caller: library/ssl_tls.c - * library/ssl_cli.c - * library/ssl_srv.c - * - * Requires: MBEDTLS_RSA_C or MBEDTLS_ECP_C - * - * Uncomment to enable generic public key wrappers. - */ -#define MBEDTLS_PK_C - -/** - * \def MBEDTLS_PK_PARSE_C - * - * Enable the generic public (asymetric) key parser. - * - * Module: library/pkparse.c - * Caller: library/x509_crt.c - * library/x509_csr.c - * - * Requires: MBEDTLS_PK_C - * - * Uncomment to enable generic public key parse functions. - */ -#define MBEDTLS_PK_PARSE_C - -/** - * \def MBEDTLS_PK_WRITE_C - * - * Enable the generic public (asymetric) key writer. - * - * Module: library/pkwrite.c - * Caller: library/x509write.c - * - * Requires: MBEDTLS_PK_C - * - * Uncomment to enable generic public key write functions. - */ -#define MBEDTLS_PK_WRITE_C - -/** - * \def MBEDTLS_PKCS5_C - * - * Enable PKCS#5 functions. - * - * Module: library/pkcs5.c - * - * Requires: MBEDTLS_MD_C - * - * This module adds support for the PKCS#5 functions. - */ -#define MBEDTLS_PKCS5_C - -/** - * \def MBEDTLS_PKCS11_C - * - * Enable wrapper for PKCS#11 smartcard support. - * - * Module: library/pkcs11.c - * Caller: library/pk.c - * - * Requires: MBEDTLS_PK_C - * - * This module enables SSL/TLS PKCS #11 smartcard support. - * Requires the presence of the PKCS#11 helper library (libpkcs11-helper) - */ -//#define MBEDTLS_PKCS11_C - -/** - * \def MBEDTLS_PKCS12_C - * - * Enable PKCS#12 PBE functions. - * Adds algorithms for parsing PKCS#8 encrypted private keys - * - * Module: library/pkcs12.c - * Caller: library/pkparse.c - * - * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_CIPHER_C, MBEDTLS_MD_C - * Can use: MBEDTLS_ARC4_C - * - * This module enables PKCS#12 functions. - */ -#define MBEDTLS_PKCS12_C - -/** - * \def MBEDTLS_PLATFORM_C - * - * Enable the platform abstraction layer that allows you to re-assign - * functions like calloc(), free(), snprintf(), printf(), fprintf(), exit(). - * - * Enabling MBEDTLS_PLATFORM_C enables to use of MBEDTLS_PLATFORM_XXX_ALT - * or MBEDTLS_PLATFORM_XXX_MACRO directives, allowing the functions mentioned - * above to be specified at runtime or compile time respectively. - * - * \note This abstraction layer must be enabled on Windows (including MSYS2) - * as other module rely on it for a fixed snprintf implementation. - * - * Module: library/platform.c - * Caller: Most other .c files - * - * This module enables abstraction of common (libc) functions. - */ -#define MBEDTLS_PLATFORM_C - -/** - * \def MBEDTLS_POLY1305_C - * - * Enable the Poly1305 MAC algorithm. - * - * Module: library/poly1305.c - * Caller: library/chachapoly.c - */ -#define MBEDTLS_POLY1305_C - -/** - * \def MBEDTLS_PSA_CRYPTO_C - * - * Enable the Platform Security Architecture cryptography API. - * - * \warning The PSA Crypto API is still beta status. While you're welcome to - * experiment using it, incompatible API changes are still possible, and some - * parts may not have reached the same quality as the rest of Mbed TLS yet. - * - * Module: crypto/library/psa_crypto.c - * - * Requires: MBEDTLS_CTR_DRBG_C, MBEDTLS_ENTROPY_C - * - */ -#define MBEDTLS_PSA_CRYPTO_C - -/** - * \def MBEDTLS_PSA_CRYPTO_STORAGE_C - * - * Enable the Platform Security Architecture persistent key storage. - * - * Module: crypto/library/psa_crypto_storage.c - * - * Requires: MBEDTLS_PSA_CRYPTO_C, - * either MBEDTLS_PSA_ITS_FILE_C or a native implementation of - * the PSA ITS interface - */ -//#define MBEDTLS_PSA_CRYPTO_STORAGE_C - -/** - * \def MBEDTLS_PSA_ITS_FILE_C - * - * Enable the emulation of the Platform Security Architecture - * Internal Trusted Storage (PSA ITS) over files. - * - * Module: crypto/library/psa_its_file.c - * - * Requires: MBEDTLS_FS_IO - * - */ -//#define MBEDTLS_PSA_ITS_FILE_C - -/** - * \def MBEDTLS_RIPEMD160_C - * - * Enable the RIPEMD-160 hash algorithm. - * - * Module: library/ripemd160.c - * Caller: library/md.c - * - */ -#define MBEDTLS_RIPEMD160_C - -/** - * \def MBEDTLS_RSA_C - * - * Enable the RSA public-key cryptosystem. - * - * Module: library/rsa.c - * library/rsa_internal.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * library/x509.c - * - * This module is used by the following key exchanges: - * RSA, DHE-RSA, ECDHE-RSA, RSA-PSK - * - * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C - */ -#define MBEDTLS_RSA_C - -/** - * \def MBEDTLS_SHA1_C - * - * Enable the SHA1 cryptographic hash algorithm. - * - * Module: library/sha1.c - * Caller: library/md.c - * library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * library/x509write_crt.c - * - * This module is required for SSL/TLS up to version 1.1, for TLS 1.2 - * depending on the handshake parameters, and for SHA1-signed certificates. - * - * \warning SHA-1 is considered a weak message digest and its use constitutes - * a security risk. If possible, we recommend avoiding dependencies - * on it, and considering stronger message digests instead. - * - */ -#define MBEDTLS_SHA1_C - -/** - * \def MBEDTLS_SHA256_C - * - * Enable the SHA-224 and SHA-256 cryptographic hash algorithms. - * - * Module: library/sha256.c - * Caller: library/entropy.c - * library/md.c - * library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * - * This module adds support for SHA-224 and SHA-256. - * This module is required for the SSL/TLS 1.2 PRF function. - */ -#define MBEDTLS_SHA256_C - -/** - * \def MBEDTLS_SHA512_C - * - * Enable the SHA-384 and SHA-512 cryptographic hash algorithms. - * - * Module: library/sha512.c - * Caller: library/entropy.c - * library/md.c - * library/ssl_cli.c - * library/ssl_srv.c - * - * This module adds support for SHA-384 and SHA-512. - */ -#define MBEDTLS_SHA512_C - -/** - * \def MBEDTLS_SSL_CACHE_C - * - * Enable simple SSL cache implementation. - * - * Module: library/ssl_cache.c - * Caller: - * - * Requires: MBEDTLS_SSL_CACHE_C - */ -#define MBEDTLS_SSL_CACHE_C - -/** - * \def MBEDTLS_SSL_COOKIE_C - * - * Enable basic implementation of DTLS cookies for hello verification. - * - * Module: library/ssl_cookie.c - * Caller: - */ -#define MBEDTLS_SSL_COOKIE_C - -/** - * \def MBEDTLS_SSL_TICKET_C - * - * Enable an implementation of TLS server-side callbacks for session tickets. - * - * Module: library/ssl_ticket.c - * Caller: - * - * Requires: MBEDTLS_CIPHER_C - */ -#define MBEDTLS_SSL_TICKET_C - -/** - * \def MBEDTLS_SSL_CLI_C - * - * Enable the SSL/TLS client code. - * - * Module: library/ssl_cli.c - * Caller: - * - * Requires: MBEDTLS_SSL_TLS_C - * - * This module is required for SSL/TLS client support. - */ -#define MBEDTLS_SSL_CLI_C - -/** - * \def MBEDTLS_SSL_SRV_C - * - * Enable the SSL/TLS server code. - * - * Module: library/ssl_srv.c - * Caller: - * - * Requires: MBEDTLS_SSL_TLS_C - * - * This module is required for SSL/TLS server support. - */ -#define MBEDTLS_SSL_SRV_C - -/** - * \def MBEDTLS_SSL_TLS_C - * - * Enable the generic SSL/TLS code. - * - * Module: library/ssl_tls.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * - * Requires: MBEDTLS_CIPHER_C, MBEDTLS_MD_C - * and at least one of the MBEDTLS_SSL_PROTO_XXX defines - * - * This module is required for SSL/TLS. - */ -#define MBEDTLS_SSL_TLS_C - -/** - * \def MBEDTLS_THREADING_C - * - * Enable the threading abstraction layer. - * By default mbed TLS assumes it is used in a non-threaded environment or that - * contexts are not shared between threads. If you do intend to use contexts - * between threads, you will need to enable this layer to prevent race - * conditions. See also our Knowledge Base article about threading: - * https://tls.mbed.org/kb/development/thread-safety-and-multi-threading - * - * Module: library/threading.c - * - * This allows different threading implementations (self-implemented or - * provided). - * - * You will have to enable either MBEDTLS_THREADING_ALT or - * MBEDTLS_THREADING_PTHREAD. - * - * Enable this layer to allow use of mutexes within mbed TLS - */ -//#define MBEDTLS_THREADING_C - -/** - * \def MBEDTLS_TIMING_C - * - * Enable the semi-portable timing interface. - * - * \note The provided implementation only works on POSIX/Unix (including Linux, - * BSD and OS X) and Windows. On other platforms, you can either disable that - * module and provide your own implementations of the callbacks needed by - * \c mbedtls_ssl_set_timer_cb() for DTLS, or leave it enabled and provide - * your own implementation of the whole module by setting - * \c MBEDTLS_TIMING_ALT in the current file. - * - * \note See also our Knowledge Base article about porting to a new - * environment: - * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS - * - * Module: library/timing.c - * Caller: library/havege.c - * - * This module is used by the HAVEGE random number generator. - */ -// #define MBEDTLS_TIMING_C - -/** - * \def MBEDTLS_VERSION_C - * - * Enable run-time version information. - * - * Module: library/version.c - * - * This module provides run-time version information. - */ -// #define MBEDTLS_VERSION_C - -/** - * \def MBEDTLS_X509_USE_C - * - * Enable X.509 core for using certificates. - * - * Module: library/x509.c - * Caller: library/x509_crl.c - * library/x509_crt.c - * library/x509_csr.c - * - * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, - * MBEDTLS_PK_PARSE_C - * - * This module is required for the X.509 parsing modules. - */ -#define MBEDTLS_X509_USE_C - -/** - * \def MBEDTLS_X509_CRT_PARSE_C - * - * Enable X.509 certificate parsing. - * - * Module: library/x509_crt.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * - * Requires: MBEDTLS_X509_USE_C - * - * This module is required for X.509 certificate parsing. - */ -#define MBEDTLS_X509_CRT_PARSE_C - -/** - * \def MBEDTLS_X509_CRL_PARSE_C - * - * Enable X.509 CRL parsing. - * - * Module: library/x509_crl.c - * Caller: library/x509_crt.c - * - * Requires: MBEDTLS_X509_USE_C - * - * This module is required for X.509 CRL parsing. - */ -#define MBEDTLS_X509_CRL_PARSE_C - -/** - * \def MBEDTLS_X509_CSR_PARSE_C - * - * Enable X.509 Certificate Signing Request (CSR) parsing. - * - * Module: library/x509_csr.c - * Caller: library/x509_crt_write.c - * - * Requires: MBEDTLS_X509_USE_C - * - * This module is used for reading X.509 certificate request. - */ -#define MBEDTLS_X509_CSR_PARSE_C - -/** - * \def MBEDTLS_X509_CREATE_C - * - * Enable X.509 core for creating certificates. - * - * Module: library/x509_create.c - * - * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_WRITE_C - * - * This module is the basis for creating X.509 certificates and CSRs. - */ -#define MBEDTLS_X509_CREATE_C - -/** - * \def MBEDTLS_X509_CRT_WRITE_C - * - * Enable creating X.509 certificates. - * - * Module: library/x509_crt_write.c - * - * Requires: MBEDTLS_X509_CREATE_C - * - * This module is required for X.509 certificate creation. - */ -#define MBEDTLS_X509_CRT_WRITE_C - -/** - * \def MBEDTLS_X509_CSR_WRITE_C - * - * Enable creating X.509 Certificate Signing Requests (CSR). - * - * Module: library/x509_csr_write.c - * - * Requires: MBEDTLS_X509_CREATE_C - * - * This module is required for X.509 certificate request writing. - */ -#define MBEDTLS_X509_CSR_WRITE_C - -/** - * \def MBEDTLS_XTEA_C - * - * Enable the XTEA block cipher. - * - * Module: library/xtea.c - * Caller: - */ -#define MBEDTLS_XTEA_C - -/* \} name SECTION: mbed TLS modules */ - -/** - * \name SECTION: Module configuration options - * - * This section allows for the setting of module specific sizes and - * configuration options. The default values are already present in the - * relevant header files and should suffice for the regular use cases. - * - * Our advice is to enable options and change their values here - * only if you have a good reason and know the consequences. - * - * Please check the respective header file for documentation on these - * parameters (to prevent duplicate documentation). - * \{ - */ - -/* MPI / BIGNUM options */ -//#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */ -//#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */ - -/* CTR_DRBG options */ -//#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with -// SHA-256) */ #define MBEDTLS_CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ #define -// MBEDTLS_CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ #define -// MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ #define -// MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ #define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -///**< Use 128-bit key for CTR_DRBG - may reduce security (see ctr_drbg.h) */ - -/* HMAC_DRBG options */ -//#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ -//#define MBEDTLS_HMAC_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ -//#define MBEDTLS_HMAC_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ -//#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ - -/* ECP options */ -//#define MBEDTLS_ECP_MAX_BITS 521 /**< Maximum bit size of groups */ -//#define MBEDTLS_ECP_WINDOW_SIZE 6 /**< Maximum window size used */ -//#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */ - -/* Entropy options */ -//#define MBEDTLS_ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */ -//#define MBEDTLS_ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */ -//#define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Default minimum number of bytes required for the hardware entropy -// source mbedtls_hardware_poll() before entropy is released */ - -/* Memory buffer allocator options */ -//#define MBEDTLS_MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */ - -/* Platform options */ -//#define MBEDTLS_PLATFORM_STD_MEM_HDR /**< Header to include if MBEDTLS_PLATFORM_NO_STD_FUNCTIONS is defined. Don't -// define if no header is needed. */ #define MBEDTLS_PLATFORM_STD_CALLOC calloc /**< Default allocator to use, can be -// undefined */ #define MBEDTLS_PLATFORM_STD_FREE free /**< Default free to use, can be undefined */ #define -// MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use, can be undefined */ #define MBEDTLS_PLATFORM_STD_TIME time -///**< Default time to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */ #define MBEDTLS_PLATFORM_STD_FPRINTF fprintf -///**< Default fprintf to use, can be undefined */ #define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use, can -// be undefined */ -/* Note: your snprintf must correctly zero-terminate the buffer! */ -//#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< Default snprintf to use, can be undefined */ -//#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS 0 /**< Default exit value to use, can be undefined */ -//#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE 1 /**< Default exit value to use, can be undefined */ -//#define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be -// undefined */ #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function -// to use, can be undefined */ #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile" /**< Seed file to read/write with default -// implementation */ - -/* To Use Function Macros MBEDTLS_PLATFORM_C must be enabled */ -/* MBEDTLS_PLATFORM_XXX_MACRO and MBEDTLS_PLATFORM_XXX_ALT cannot both be defined */ -//#define MBEDTLS_PLATFORM_CALLOC_MACRO calloc /**< Default allocator macro to use, can be undefined */ -//#define MBEDTLS_PLATFORM_FREE_MACRO free /**< Default free macro to use, can be undefined */ -//#define MBEDTLS_PLATFORM_EXIT_MACRO exit /**< Default exit macro to use, can be undefined */ -//#define MBEDTLS_PLATFORM_TIME_MACRO time /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be -// enabled */ #define MBEDTLS_PLATFORM_TIME_TYPE_MACRO time_t /**< Default time macro to use, can be undefined. -// MBEDTLS_HAVE_TIME must be enabled */ #define MBEDTLS_PLATFORM_FPRINTF_MACRO fprintf /**< Default fprintf macro to use, can -// be undefined */ #define MBEDTLS_PLATFORM_PRINTF_MACRO printf /**< Default printf macro to use, can be undefined */ -/* Note: your snprintf must correctly zero-terminate the buffer! */ -//#define MBEDTLS_PLATFORM_SNPRINTF_MACRO snprintf /**< Default snprintf macro to use, can be undefined */ -//#define MBEDTLS_PLATFORM_VSNPRINTF_MACRO vsnprintf /**< Default vsnprintf macro to use, can be undefined */ -//#define MBEDTLS_PLATFORM_NV_SEED_READ_MACRO mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be -// undefined */ #define MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function -// to use, can be undefined */ - -/** - * \brief This macro is invoked by the library when an invalid parameter - * is detected that is only checked with #MBEDTLS_CHECK_PARAMS - * (see the documentation of that option for context). - * - * When you leave this undefined here, the library provides - * a default definition. If the macro #MBEDTLS_CHECK_PARAMS_ASSERT - * is defined, the default definition is `assert(cond)`, - * otherwise the default definition calls a function - * mbedtls_param_failed(). This function is declared in - * `platform_util.h` for the benefit of the library, but - * you need to define in your application. - * - * When you define this here, this replaces the default - * definition in platform_util.h (which no longer declares the - * function mbedtls_param_failed()) and it is your responsibility - * to make sure this macro expands to something suitable (in - * particular, that all the necessary declarations are visible - * from within the library - you can ensure that by providing - * them in this file next to the macro definition). - * If you define this macro to call `assert`, also define - * #MBEDTLS_CHECK_PARAMS_ASSERT so that library source files - * include ``. - * - * Note that you may define this macro to expand to nothing, in - * which case you don't have to worry about declarations or - * definitions. However, you will then be notified about invalid - * parameters only in non-void functions, and void function will - * just silently return early on invalid parameters, which - * partially negates the benefits of enabling - * #MBEDTLS_CHECK_PARAMS in the first place, so is discouraged. - * - * \param cond The expression that should evaluate to true, but doesn't. - */ -//#define MBEDTLS_PARAM_FAILED( cond ) assert( cond ) - -/* SSL Cache options */ -//#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */ -//#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */ - -/* SSL options */ - -/** \def MBEDTLS_SSL_MAX_CONTENT_LEN - * - * Maximum length (in bytes) of incoming and outgoing plaintext fragments. - * - * This determines the size of both the incoming and outgoing TLS I/O buffers - * in such a way that both are capable of holding the specified amount of - * plaintext data, regardless of the protection mechanism used. - * - * To configure incoming and outgoing I/O buffers separately, use - * #MBEDTLS_SSL_IN_CONTENT_LEN and #MBEDTLS_SSL_OUT_CONTENT_LEN, - * which overwrite the value set by this option. - * - * \note When using a value less than the default of 16KB on the client, it is - * recommended to use the Maximum Fragment Length (MFL) extension to - * inform the server about this limitation. On the server, there - * is no supported, standardized way of informing the client about - * restriction on the maximum size of incoming messages, and unless - * the limitation has been communicated by other means, it is recommended - * to only change the outgoing buffer size #MBEDTLS_SSL_OUT_CONTENT_LEN - * while keeping the default value of 16KB for the incoming buffer. - * - * Uncomment to set the maximum plaintext size of both - * incoming and outgoing I/O buffers. - */ -//#define MBEDTLS_SSL_MAX_CONTENT_LEN 16384 - -/** \def MBEDTLS_SSL_IN_CONTENT_LEN - * - * Maximum length (in bytes) of incoming plaintext fragments. - * - * This determines the size of the incoming TLS I/O buffer in such a way - * that it is capable of holding the specified amount of plaintext data, - * regardless of the protection mechanism used. - * - * If this option is undefined, it inherits its value from - * #MBEDTLS_SSL_MAX_CONTENT_LEN. - * - * \note When using a value less than the default of 16KB on the client, it is - * recommended to use the Maximum Fragment Length (MFL) extension to - * inform the server about this limitation. On the server, there - * is no supported, standardized way of informing the client about - * restriction on the maximum size of incoming messages, and unless - * the limitation has been communicated by other means, it is recommended - * to only change the outgoing buffer size #MBEDTLS_SSL_OUT_CONTENT_LEN - * while keeping the default value of 16KB for the incoming buffer. - * - * Uncomment to set the maximum plaintext size of the incoming I/O buffer - * independently of the outgoing I/O buffer. - */ -//#define MBEDTLS_SSL_IN_CONTENT_LEN 16384 - -/** \def MBEDTLS_SSL_CID_IN_LEN_MAX - * - * The maximum length of CIDs used for incoming DTLS messages. - * - */ -//#define MBEDTLS_SSL_CID_IN_LEN_MAX 32 - -/** \def MBEDTLS_SSL_CID_OUT_LEN_MAX - * - * The maximum length of CIDs used for outgoing DTLS messages. - * - */ -//#define MBEDTLS_SSL_CID_OUT_LEN_MAX 32 - -/** \def MBEDTLS_SSL_CID_PADDING_GRANULARITY - * - * This option controls the use of record plaintext padding - * when using the Connection ID extension in DTLS 1.2. - * - * The padding will always be chosen so that the length of the - * padded plaintext is a multiple of the value of this option. - * - * Note: A value of \c 1 means that no padding will be used - * for outgoing records. - * - * Note: On systems lacking division instructions, - * a power of two should be preferred. - * - */ -//#define MBEDTLS_SSL_CID_PADDING_GRANULARITY 16 - -/** \def MBEDTLS_SSL_OUT_CONTENT_LEN - * - * Maximum length (in bytes) of outgoing plaintext fragments. - * - * This determines the size of the outgoing TLS I/O buffer in such a way - * that it is capable of holding the specified amount of plaintext data, - * regardless of the protection mechanism used. - * - * If this option undefined, it inherits its value from - * #MBEDTLS_SSL_MAX_CONTENT_LEN. - * - * It is possible to save RAM by setting a smaller outward buffer, while keeping - * the default inward 16384 byte buffer to conform to the TLS specification. - * - * The minimum required outward buffer size is determined by the handshake - * protocol's usage. Handshaking will fail if the outward buffer is too small. - * The specific size requirement depends on the configured ciphers and any - * certificate data which is sent during the handshake. - * - * Uncomment to set the maximum plaintext size of the outgoing I/O buffer - * independently of the incoming I/O buffer. - */ -//#define MBEDTLS_SSL_OUT_CONTENT_LEN 16384 - -/** \def MBEDTLS_SSL_DTLS_MAX_BUFFERING - * - * Maximum number of heap-allocated bytes for the purpose of - * DTLS handshake message reassembly and future message buffering. - * - * This should be at least 9/8 * MBEDTLSSL_IN_CONTENT_LEN - * to account for a reassembled handshake message of maximum size, - * together with its reassembly bitmap. - * - * A value of 2 * MBEDTLS_SSL_IN_CONTENT_LEN (32768 by default) - * should be sufficient for all practical situations as it allows - * to reassembly a large handshake message (such as a certificate) - * while buffering multiple smaller handshake messages. - * - */ -//#define MBEDTLS_SSL_DTLS_MAX_BUFFERING 32768 - -//#define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */ -//#define MBEDTLS_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */ -//#define MBEDTLS_SSL_COOKIE_TIMEOUT 60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number -// of cookies issued */ - -/** - * Complete list of ciphersuites to use, in order of preference. - * - * \warning No dependency checking is done on that field! This option can only - * be used to restrict the set of available ciphersuites. It is your - * responsibility to make sure the needed modules are active. - * - * Use this to save a few hundred bytes of ROM (default ordering of all - * available ciphersuites) and a few to a few hundred bytes of RAM. - * - * The value below is only an example, not the default. - */ -//#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - -/* X509 options */ -//#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */ -//#define MBEDTLS_X509_MAX_FILE_PATH_LEN 512 /**< Maximum length of a path/filename string in bytes including the null -// terminator character ('\0'). */ - -/** - * Allow SHA-1 in the default TLS configuration for certificate signing. - * Without this build-time option, SHA-1 support must be activated explicitly - * through mbedtls_ssl_conf_cert_profile. Turning on this option is not - * recommended because of it is possible to generate SHA-1 collisions, however - * this may be safe for legacy infrastructure where additional controls apply. - * - * \warning SHA-1 is considered a weak message digest and its use constitutes - * a security risk. If possible, we recommend avoiding dependencies - * on it, and considering stronger message digests instead. - * - */ -//#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES - -/** - * Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake - * signature and ciphersuite selection. Without this build-time option, SHA-1 - * support must be activated explicitly through mbedtls_ssl_conf_sig_hashes. - * The use of SHA-1 in TLS <= 1.1 and in HMAC-SHA-1 is always allowed by - * default. At the time of writing, there is no practical attack on the use - * of SHA-1 in handshake signatures, hence this option is turned on by default - * to preserve compatibility with existing peers, but the general - * warning applies nonetheless: - * - * \warning SHA-1 is considered a weak message digest and its use constitutes - * a security risk. If possible, we recommend avoiding dependencies - * on it, and considering stronger message digests instead. - * - */ -#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE - -/** - * Uncomment the macro to let mbed TLS use your alternate implementation of - * mbedtls_platform_zeroize(). This replaces the default implementation in - * platform_util.c. - * - * mbedtls_platform_zeroize() is a widely used function across the library to - * zero a block of memory. The implementation is expected to be secure in the - * sense that it has been written to prevent the compiler from removing calls - * to mbedtls_platform_zeroize() as part of redundant code elimination - * optimizations. However, it is difficult to guarantee that calls to - * mbedtls_platform_zeroize() will not be optimized by the compiler as older - * versions of the C language standards do not provide a secure implementation - * of memset(). Therefore, MBEDTLS_PLATFORM_ZEROIZE_ALT enables users to - * configure their own implementation of mbedtls_platform_zeroize(), for - * example by using directives specific to their compiler, features from newer - * C standards (e.g using memset_s() in C11) or calling a secure memset() from - * their system (e.g explicit_bzero() in BSD). - */ -//#define MBEDTLS_PLATFORM_ZEROIZE_ALT - -/** - * Uncomment the macro to let Mbed TLS use your alternate implementation of - * mbedtls_platform_gmtime_r(). This replaces the default implementation in - * platform_util.c. - * - * gmtime() is not a thread-safe function as defined in the C standard. The - * library will try to use safer implementations of this function, such as - * gmtime_r() when available. However, if Mbed TLS cannot identify the target - * system, the implementation of mbedtls_platform_gmtime_r() will default to - * using the standard gmtime(). In this case, calls from the library to - * gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex - * if MBEDTLS_THREADING_C is enabled. We recommend that calls from outside the - * library are also guarded with this mutex to avoid race conditions. However, - * if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will - * unconditionally use the implementation for mbedtls_platform_gmtime_r() - * supplied at compile time. - */ -//#define MBEDTLS_PLATFORM_GMTIME_R_ALT - -/** - * Enable the verified implementations of ECDH primitives from Project Everest - * (currently only Curve25519). This feature changes the layout of ECDH - * contexts and therefore is a compatibility break for applications that access - * fields of a mbedtls_ecdh_context structure directly. See also - * MBEDTLS_ECDH_LEGACY_CONTEXT in include/mbedtls/ecdh.h. - */ -//#define MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED - -/* \} name SECTION: Customisation configuration options */ - -/* Target and application specific configurations - * - * Allow user to override any previous default. - * - */ -#if defined(MBEDTLS_USER_CONFIG_FILE) -#include MBEDTLS_USER_CONFIG_FILE -#endif - -#include "mbedtls/check_config.h" - -#endif /* MBEDTLS_CONFIG_H */ diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/cy8c6xxa_cm4_dual_ota_int.ld b/third_party/infineon/psoc6/psoc6_sdk/ota/cy8c6xxa_cm4_dual_ota_int.ld index d1717ff3e47ff0..7e8e34fa3239c4 100644 --- a/third_party/infineon/psoc6/psoc6_sdk/ota/cy8c6xxa_cm4_dual_ota_int.ld +++ b/third_party/infineon/psoc6/psoc6_sdk/ota/cy8c6xxa_cm4_dual_ota_int.ld @@ -43,15 +43,12 @@ ENTRY(Reset_Handler) /* Size of the stack section at the end of CM4 SRAM */ STACK_SIZE = 0x1000; -/* Size of the Cortex-M0+ application image at the start of FLASH - passed in as argument to ld.exe*/ -/* MCUBOOT_BOOTLOADER_SIZE = 0x12000; */ - -/* MCUBoot Header Size passed in as argument to ld.exe */ -/* MCUBOOT_HEADER_SIZE = 0x1000; */ - -/* CY_BOOT_PRIMARY_1_SIZE Slot 1 size passed in as argument to ld.exe */ -/* CY_BOOT_PRIMARY_1_SIZE = 0x0EE000 (Internal FLASH) */ -/* CY_BOOT_PRIMARY_1_SIZE = 0x10C000 (External FLASH) */ +/* + Arguments for OTA using MCUBoot -- will get from passed in Makefile: + --defsym,MCUBOOT_HEADER_SIZE=XXXX + --defsym,FLASH_AREA_IMG_1_PRIMARY_START=XXXX + --defsym,FLASH_AREA_IMG_1_PRIMARY_SIZE=XXXX +*/ /* Force symbol to be entered in the output file as an undefined symbol. Doing * this may, for example, trigger linking of additional modules from standard @@ -74,7 +71,7 @@ MEMORY * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.ld'. */ ram (rwx) : ORIGIN = 0x08020800, LENGTH = 0xDF000 - flash (rx) : ORIGIN = 0x10000000 + MCUBOOT_BOOTLOADER_SIZE, LENGTH = CY_BOOT_PRIMARY_1_SIZE + flash (rx) : ORIGIN = 0x10000000 + FLASH_AREA_IMG_1_PRIMARY_START + MCUBOOT_HEADER_SIZE, LENGTH = FLASH_AREA_IMG_1_PRIMARY_SIZE - MCUBOOT_HEADER_SIZE /* This is a 32K flash region used for EEPROM emulation. This region can also be used as the general purpose flash. * You can assign sections to this memory region for only one of the cores. @@ -133,7 +130,7 @@ GROUP(libgcc.a libc.a libm.a libnosys.a) SECTIONS { /* Cortex-M4 application flash area */ - .text ORIGIN(flash) + MCUBOOT_HEADER_SIZE : + .text ORIGIN(flash) : { . = ALIGN(8); __cy_app_load_addr = . ; @@ -401,4 +398,4 @@ __cy_memory_4_start = 0x90700000; __cy_memory_4_length = 0x100000; __cy_memory_4_row_size = 1; -/* EOF */ +/* EOF */ \ No newline at end of file diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex b/third_party/infineon/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex index a8ae0bf328eb65..ff4b8ae09aefb5 100644 --- a/third_party/infineon/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex +++ b/third_party/infineon/psoc6/psoc6_sdk/ota/matter-psoc6-mcuboot-bootloader.hex @@ -1,4099 +1,5769 @@ -:020000041000EA -:1000000000000208070500100D000000690500103F -:1000100000000000000000000000000000000000E0 -:100020000000000000000000000000006505001056 -:1000300000000000000000006505001065050010CC -:1000400065050010650500106505001065050010C8 -:1000500065050010650500106505001065050010B8 -:1000600065050010650500106505001065050010A8 -:100070006505001065050010650500106505001098 -:1000800010B5064C2378002B07D1054B002B02D06E -:10009000044800E000BF0123237010BD740700086E -:1000A00000000000DCF60010044B10B5002B03D05C -:1000B0000349044800E000BF10BDC0460000000036 -:1000C00078070008DCF6001010B500F07DF800F0AD -:1000D00007F800F069F800F01FF800F029F810BDEB -:1000E00010B50021012007F059F94D22002101200F -:1000F00007F092F80021012007F00EF900210020FE -:1001000007F04CF900220021002007F085F80021BB -:10011000002007F001F910BD10B5002200212F20AA -:1001200007F0C0F800220121052007F0BBF810BD40 -:1001300010B5134C134A0021200004F0AFFD124A01 -:100140000121200004F0AAFD104C114A00212000DA -:1001500004F0A4FD0F4A0121200004F09FFD0E4C85 -:100160000E4A0421200004F099FD0D4A06212000CA -:1001700004F094FD0B4A0721200004F08FFD10BD10 -:1001800000003140FCDF001030E000108002314000 -:1001900094DF0010C8DF00100003314060DF001062 -:1001A0002CDF0010F8DE0010034B332203495A50B5 -:1001B00003495A507047C0460000304008200000F4 -:1001C00010200000FEE7000030B583B0962100202B -:1001D00008F048F808F00CF800281BD1774AFF23F4 -:1001E0001B02D4583F231C4007F0F2FF002806D022 -:1001F000012007F0DBFF714B9B6C002B25DB6F4A66 -:10020000FF231B02D45007F07BFA07F06DFA0120A0 -:1002100007F08EFA012008F005FD08F0A1FC08F0B7 -:1002200087FD08F06FFD0021002007F0FFF9002096 -:1002300007F086F9012007F067F9002007F0E2F8DF -:100240005F4B1A683F23D45C06E00620FFF7BAFF35 -:10025000200007F0BBFC013C002CF9D1002101205B -:1002600007F09EFA002007F0CFF9002800D189E0BE -:1002700007F054FB0021002007F092FA0021002033 -:1002800007F0A4F94F4C002500950023002200211F -:10029000200004F055FC00950023002201212000DD -:1002A00004F04EFC484807F0FFF9002800D075E044 -:1002B000012007F017F9002007F042F9012007F0AC -:1002C00023F9002007F09EF80021012007F068FACA -:1002D0000021002007F064FA0021022007F060FAF4 -:1002E0000021032007F05CFA0021042007F058FAEF -:1002F0000021052007F054FA344807F02DFB0028B0 -:100300004FD1334807F0F6FB00284DD101210020E2 -:1003100007F05CF90021002007F088F92D49012041 -:1003200007F07AFC002842D12B49012007F00AFD92 -:1003300000283FD10021022007F048F901210220C6 -:1003400007F074F9022007F00DF907F0BFF800205C -:1003500007F088F8002007F09DF807F0ABF80020C0 -:1003600008F0F4FC012007F06BF807F0BDF901205C -:1003700007F0DEF99021002007F074FF00F01AF971 -:1003800003B030BD07F03AFA1223FF33984200D091 -:100390006EE70121002007F019F969E70520FFF752 -:1003A00011FF0420FFF70EFF0420FFF70BFF0320CF -:1003B000FFF708FF0320FFF705FFC04600002740B6 -:1003C000D45F01080000314040420F00C0E100103E -:1003D000400D0300D4E100101027000010B503F019 -:1003E00059F9054C200004F055FB200004F052FBA5 -:1003F000012002F04FFE10BD8002314010B584682C -:1004000003681B89E418094B1B68DB68382201214B -:1004100007480AF0B5F80A21064803F01DF9FFF76E -:10042000DDFF200000F082F910BDC046EC0100089D -:10043000DCE100100000654010B584B0FFF744FE19 -:1004400062B6E120400203F0E9F8264C2368DB683D -:100450001022012124480AF093F82368DB68222245 -:10046000012122480AF08CF8012002F0C1FD041E8F -:100470000DD11C4B1B68DB682E2201211C480AF0A1 -:100480007FF8002C0BD0002008F032FAFBE7154B68 -:100490001B68D8682200174909F0FEFFF1E701A8A0 -:1004A00000F086FF00280FD10E4B1B68DB682F225F -:1004B000012111480AF064F8FA20000102F0BAFFA5 -:1004C00001A8FFF79BFFDEE7064B1B68DB683222C3 -:1004D00001210A480AF054F80A21094803F0BCF83F -:1004E000D1E7C046EC01000818E200102CE2001031 -:1004F00050E2001080E20010C4E20010F4E20010AC -:10050000000065407047FFF7FDFF72B60F4C104DBD -:10051000AC4209DA21686268A368043B02DBC85870 -:10052000D050FAE70C34F3E70A490B4A0020521A7C -:1005300002DD043A8850FCDC084809490860BFF332 -:100540004F8F00F075F8FFF777FFFEE7E8F6001031 -:1005500000F70010740700087C6001080000000824 -:1005600008ED00E0FEE7FEE700B504207146084212 -:1005700002D0EFF3098001E0EFF30880043007F0C8 -:1005800059FEFEE7000000000230800803D0013071 -:100590000238FCD1C046C0467047EFF3108072B6F7 -:1005A000704780F31088704710B5002004F0C2FD3A -:1005B00010BD704710B5002007F0EAFC041E00D102 -:1005C00010BD144B186006F0AFFF411C200008F06E -:1005D00035FC0400104B186006F026FF411C20007B -:1005E00008F02CFC04000D4B1860013C0C49200065 -:1005F00008F024FC01300B4B1870FA218900200010 -:1006000008F01CFC0130084B1860C003074B186051 -:10061000D6E7C04684000008880000088000000873 -:1006200040420F0094000008900000088C00000871 -:1006300010B5234803F036F8224CB022D200A3585C -:100640005B005B08A350E02189006358302083439E -:10065000635080235B04A3501B4B1C4AE2500433BD -:10066000A0229201E2501A4BFF22E25008F098FBC0 -:10067000C0225200A35801218B43A350FFF799FFDA -:10068000FFF798FF134B1B68BA20195ACA00521A79 -:10069000196A8C4662440021D1601A6A185AC30054 -:1006A0001B1AD31859600C4A8031032004F09AFDBC -:1006B0000A4804F0F3FB0A4804F048FC10BDC046A9 -:1006C000F8ED001000002640840500000100020043 -:1006D0008C050000D45F010820070008900700087F -:1006E00028E30010034A90235B01D35803201840ED -:1006F0007047C0460000204010B5FFF74EFF084C81 -:10070000902149016358074A1A40074B134363502D -:10071000034B5B68DB06FBD5FFF743FF10BDC0460C -:1007200000002040FCFF00000100FA0570B5040045 -:10073000830500D001BEFFF730FF0500FFF7D2FFB1 -:10074000032813D00B4B802292009C509020400134 -:100750001A5809491140094A0A431A50054B5B6867 -:10076000DB06FBD52800FFF71CFF70BDFFF7C4FFB9 -:10077000E8E7C04600002040FCFF00000300FA0547 -:1007800000B583B0130001AA1370012301F055FADC -:1007900003B000BD10B509F00DFF10BD04280AD04C -:1007A000052804D101394B1E994108007047401AB1 -:1007B00043425841FAE70120F8E710B582B00C0037 -:1007C000C0B201A901F07EFF002803D0012420005F -:1007D00002B010BD2100019801F094FA04000198C4 -:1007E00001F084FFF3E710B5040001F015FA0100F1 -:1007F00001222000FFF7C4FF10BD10B5040001F076 -:1008000007FA010001222000FFF7BAFF10BD000027 -:1008100030B583B004000E2A10D80E2915D8120165 -:100820000A436B46DD1DDA7101F0FBF9010001237B -:100830002A00200001F001FA03B030BD9C21064BD4 -:10084000064A8900064809F009FE9C21054B034A27 -:100850008900034809F002FE5CE30010CCE40010BC -:1008600070E30010B8E3001010B582B004000191ED -:1008700001F0DCF90100042301AA200001F0DDF9F8 -:1008800002B010BD30B589B006A90120FFF795FF71 -:10089000002800D08CE004A90230FFF78EFF04008E -:1008A000444B1B68D86806AB1B78012B28D0032B60 -:1008B00024D0414B06AA51789578D27802920195BE -:1008C00000913E4A3E4909F0E7FD3A4B1B68D86863 -:1008D00004AB1B78012B17D0032B13D0364B04AA83 -:1008E00051789578D278029201950091354A344931 -:1008F00009F0D2FD002C11D0FF2057E0324BD9E790 -:10090000324BD7E7304BEAE7304BE8E72B79042B43 -:1009100028D006AA9278934224D00134022C3CD8E5 -:1009200063001B195B002A4AD51806A90978D05C18 -:10093000FFF734FF0028F0D004AB19786878FFF790 -:100940002DFF0028E9D0AB78042B03D006AAD2787B -:100950009342E2D1EB78042BD8D004AAD278934208 -:10096000DBD1D3E7134B1B68D8686B79022B07D018 -:10097000032B10D0042B01D0164A02E0164A00E0E7 -:10098000164A174909F088FD6879831EDBB2022BED -:100990000CD9FF200AE0134AF3E7064B1B68DB681B -:1009A00017220121104809F0EBFD012009B030BDEC -:1009B000FF20FBE7EC010008CCE300100CE4001082 -:1009C00030E4001074E40010D8E30010D0E300100D -:1009D000F4E40010F0E3001004E40010E0E3001081 -:1009E0009CE40010E8E30010B4E4001070B50500CA -:1009F000002915D001235B422878584004090F22B2 -:100A00001040094E80008359634018091A40920033 -:100A100093594340013901350029EDD1D84370BDC8 -:100A200001235B42FAE7C04608E50010F0B5CE4668 -:100A3000474680B5A7B0140099462E9F2F9B984635 -:100A4000684602F0B9FC0021684602F0BAFC319B0E -:100A5000002B02D0329B002B07DC2389E2689446EE -:100A600063446689F618002513E01A003199684638 -:100A700002F0B5FCF1E723003A002900484601F0F6 -:100A800037FE002811D122003900684602F0A7FC89 -:100A90002D19B54204D2741B4445ECD94446EAE70B -:100AA0003099684602F0A7FC002027B0C0BCB946C8 -:100AB000B046F0BDF0B59FB017001D002C4B1E686E -:100AC000279B0493269B039306AB0293259B0193DC -:100AD000249B00932B00FFF7A9FF041E3DD1289B08 -:100AE000002B04D0202206A9180009F071FD002374 -:100AF0000093204B2A00390016A801F00FFD041EB8 -:100B00002BD11CAB72226A441DA916A801F07CFDF2 -:100B1000002821DB1CDC1CA909881029F1D17223D3 -:100B20006B441B88202B20D10EAA1D99280001F0B0 -:100B3000DFFD071E17D120220EA906A8FFF72AFE07 -:100B400006000D4B1B6801248342DAD03C0004E010 -:100B500063425C41E4B200E00400002C00D13400A8 -:100B600020001FB0F0BD0400F7E701246442F7E75E -:100B700098000008FFFF00001009000810B50B4B9B -:100B800002689A420FD1C2680389D843824202D8D0 -:100B9000D418012000E00020002805D08B68A34273 -:100BA00002D8002000E0002010BDC0463DB8F396FA -:100BB000F0B585B005000C000192002001F098FE10 -:100BC000C0B203A901F07EFD002806D001270398DA -:100BD00001F08CFD380005B0F0BD2C236343EB1809 -:100BE0001A89DE689619042302AA3100039801F0DD -:100BF0007FFD071E26D12C214C432D196C8902AB99 -:100C00001A88134B9A420DD0002C1DD102AB1A88C2 -:100C1000104B9A421AD1331902AA52889B18019A92 -:100C20001360D4E702AB59888C4201D00327CEE78A -:100C30008919042302AA039801F05AFD0028E5D07F -:100C40000127C4E70127C2E70327C0E70327BEE760 -:100C5000086900000769000010B582B004000800B0 -:100C6000E02212010192012906D002290FD00729A2 -:100C700010D1E26D603401E0626A283401A901F00C -:100C800085FE002801D1019B236002B010BD226DBA -:100C90005434F3E70120F8E710B5006A01F018FEBC -:100CA00010BD70B504000121FFF7D6FF002802D067 -:100CB0000125280070BD02212000FFF7CDFF00288C -:100CC00001D00125F5E707212000FFF7C5FF051E2C -:100CD00001D00125EDE72000FFF7DEFFA066E8E781 -:100CE000F0B583B004000F00002001F001FEC0B297 -:100CF00001A901F0E7FC061E1AD1019801F008FED7 -:100D00000500019801F0F2FC2C21794361180023C1 -:100D1000032B05D8CA5C954208D10133DBB2F7E753 -:100D20000123002B07D0300003B0F0BD0023F8E70B -:100D300001267642F7E701267642F4E700B587B050 -:100D4000130000220492039202920132FF320192B8 -:100D5000044A00920A0000210020FFF7ABFE07B012 -:100D600000BDC046805D0108F0B585B005000C00EF -:100D70000192244B1F68002001F0BAFDC0B203A904 -:100D800001F0A0FC002802D0380005B0F0BD2C30E6 -:100D900060432E1821002800FFF7A2FF00282BD067 -:100DA0003369D90601D5012727E0019B039A310059 -:100DB0002800FFF7C3FF0700039D29003000FFF75D -:100DC000DDFE002803D0104B1B68BB4215D0002C61 -:100DD0000AD10E4B1B68D868002C0BD10C4A0D4968 -:100DE00009F05AFB012708E0AA680021280001F059 -:100DF00015FDEEE7084AF2E70127039801F076FCBB -:100E0000C2E7C0469800000810090008EC0100087D -:100E100054E500105CE5001048E5001070B50500D1 -:100E20000E000020FFF72EFD0400022805D0042844 -:100E300003D0032801D0200070BD3200012128001A -:100E4000FFF792FF044B1B688342F4D0012801D0C6 -:100E50000524F0E70400EEE710090008F8B50600E5 -:100E60000D0017000024012C11DC2C226243B21863 -:100E70003B002100300000F0D9FB002801D10134F3 -:100E8000F1E7002C04DD002D02D1002000E000205D -:100E9000F8BD002383718360C36001334371036035 -:100EA0000371C37170474379012B01D00020704753 -:100EB0000368012B01D00020F9E70379012B01D051 -:100EC0000020F4E70120F2E730B583B005000C0004 -:100ED0000023009301930800FFF7E5FF002830D0BE -:100EE000204B2A689A4212D01E4BEA6A9A421BD0C3 -:100EF000019B009A934200D90093009BA360009A43 -:100F00002100280000F0D2FD002003B030BD6A4669 -:100F100000212800FFF74CFE0028E5D0124B134AB1 -:100F20001349144809F09AFA01AA01212800FFF791 -:100F30003FFE0028DCD00C4B0C4A0F490D4809F04D -:100F40008DFA21000831002001F000F8002802D1BC -:100F5000A3680093D3E7044B044A0849054809F005 -:100F60007DFAC0463DB8F39688E50010C8E600104B -:100F70003604000090E500104D0400006D040000F0 -:100F800070B504000D00FFF79FFF002812D1EB7928 -:100F90006422A354033BDBB2012B11D9EB79022B62 -:100FA00017D0042B15D0032B13D06423E35CFF2B45 -:100FB00018D070BD124B134A1349144809F04EFA69 -:100FC000002000F011FA0028E8D06423FF22E25448 -:100FD000E4E7002000F0F4F90028E6D06423FF22C3 -:100FE000E254E2E70A4B1B68DB680E220121094844 -:100FF00009F0C6FA084B034A0849044809F02EFADA -:1010000088E50010D8E600109605000090E5001075 -:10101000EC010008D0E50010E0E50010AE0500008E -:1010200070B50400FFF750FF002814D16423E55C7D -:10103000EB1EDBB2012B14D9022D03D0042D01D0FD -:10104000032D07D1002000F0BBF9002802D0642353 -:10105000FF22E25470BD084B084A0949094809F0CB -:10106000FDF9002000F0C0F90028E5D06423FF223C -:10107000E254FF25E2E7C04688E50010B4E6001020 -:101080005305000090E5001070B504000D00FFF757 -:1010900008FE00280FD1002200212000FFF7DEFE0D -:1010A000002814D1200000F0CDFB00281AD16423C1 -:1010B0000122E2540AE0344B1B68D868E022120196 -:1010C000324909F0E9F964230122E25470BD2E4B44 -:1010D0001B68D86800222E4909F0DEF9642301223A -:1010E000E254F3E72800FFF7D4FE2900200001F0C6 -:1010F00001F8002814D12800FFF7D5FE00281AD0E7 -:10110000EB79012B34D02A0001212000FFF72CFEBF -:10111000204B1B68834232D064230522E254D5E77A -:10112000194B1B68D86800221B4909F0B5F96423E4 -:101130000122E254CAE729002000FFF721FF00281E -:101140000AD12A0000212000FFF788FE002809D1DB -:1011500064230122E254B9E7104B114A11491248A5 -:1011600009F07CF90D4B0E4A10490F4809F076F949 -:1011700029002000FFF752FE6423E054A6E7EA7935 -:101180006423E254A2E7C046EC010008E4E5001045 -:101190002CE60010100900085CE6001088E500103D -:1011A000F4E600105306000090E500105906000018 -:1011B00010B501F033FB10BDF8B5DE4657464E467C -:1011C0004546E0B58946924698460A9B9B460B9E4B -:1011D000002512E04346E9182300124A484601F070 -:1011E00087FA002819D15B46E91823000D4A5046BA -:1011F00001F0BEFA002812D12D19B54206D2741B97 -:101200008023DB009C42E5D91C00E3E70020F0BC12 -:10121000BB46B246A946A046F8BD0120F7E701202B -:10122000F5E7C04680090008F0B5C64600B584B0B1 -:1012300004000E004E4B1B6898466C22002109F0FA -:10124000D0F94C4B63624C4B23654C4BE365012753 -:101250007F420025012D14D82900002001F048FB11 -:101260002C21694320316118C0B201F02BFA071E0E -:1012700001D10135EEE7424B424A4349434809F068 -:10128000EDF869462000FFF7FFFE6423E35C6A4641 -:10129000D371042B18D8022B21D2012B2BD164231C -:1012A000E35CFF2B2BD0012B37D1394B22689A42BC -:1012B0003BD0384B1B68D86800232200364909F020 -:1012C000EBF80327002549E0052B14D1002000F09E -:1012D0008BF8071EE3D06423FF22E254DFE7694660 -:1012E0002000FFF79DFE071ED9D0254B254A2B492C -:1012F000264809F0B3F86423FF22E254CFE7254BD8 -:101300001B68DB680E220121254809F039F9254BBD -:101310001C4A25491D4809F0A1F86A460021200011 -:10132000FFF79CFD071EC0D0CCE7102200216846C5 -:1013300009F057F9236A5B783371236A5B68B360FD -:1013400034601A4B1B689846BCE70122521B2C23C1 -:101350005343E318186A01F0C9F90135012DF4D996 -:10136000002F00D14746380004B080BCB846F0BD1D -:1013700098000008800D0008807D000880ED0008BE -:1013800088E5001014E70010D406000090E5001076 -:101390003DB8F396EC0100088CE60010140700003D -:1013A000D0E50010E0E500102B0700001009000850 -:1013B00010B501000148FFF737FF10BD1409000800 -:1013C00010B582B001A9012001F07CF9002803D0FA -:1013D0000124200002B010BD0198FFF704FA0400B8 -:1013E000019801F083F9F4E710B584B003A9012056 -:1013F00001F068F9002803D00124200004B010BDDA -:1014000001A9039800F07EFC041E0CD101ABDB782F -:10141000032B03D0039801F069F9EEE70398FFF777 -:10142000ECF90400F6E70124F4E70000F0B5CE463D -:1014300000B582B00C0016001D00526AC300D758D8 -:101440001368FF1A0138C0001258D31A99462B6846 -:10145000012B15D1EB68022B0CD00899300000F05D -:101460008BFD00282AD12A000899300000F0EAFDFF -:1014700000282AD10999300000F07EFD00282BD1E8 -:10148000220039000898FFF793FE00282BD1019421 -:1014900000974B46089A11003000FFF78DFE002898 -:1014A00028D12900300000F0E9FB2B6801332B60C4 -:1014B000002826D102B080BCB946F0BD5421144B9F -:1014C000144AFF31144808F0C9FFAB21104B114AF0 -:1014D0004900114808F0C2FFAD210D4B0D4A4900EB -:1014E0000D4808F0BBFFAF21094B0A4A49000A48E2 -:1014F00008F0B4FF6221064B064AFF31064808F0A7 -:10150000ADFFB321024B034A4900034808F0A6FF90 -:1015100088E50010CCE8001024E70010F0B5CE46B6 -:10152000474680B583B00F0015001C00566AC30003 -:10153000F2583368D21A90460138C0003658F61A6D -:101540002A6D11581368CB1A99462279012A07D0BF -:101550002379022B32D003B0C0BCB946B046F0BDEF -:101560003A0031000A98FFF723FE002818D10197AE -:1015700000964B460A9A0B992800FFF71DFE00289B -:1015800015D12100280000F079FB022323710028E7 -:10159000DED08021224B234AFF31234808F05EFF32 -:1015A0007A211F4B1F4AFF311F4808F057FFBE2109 -:1015B0001B4B1C4A49001C4808F050FF3A004946A2 -:1015C0000B98FFF7F5FD00281CD101974B460093BF -:1015D00043460B9A0A992800FFF7EEFD002818D120 -:1015E0002100280000F04AFB236801332360012317 -:1015F00023710028AFD08C21094B0A4AFF310A48D9 -:1016000008F02CFFC221064B064A4900064808F0A4 -:1016100025FF8821024B034AFF31034808F01EFFD3 -:1016200088E50010B8E8001024E7001070B582B01B -:1016300016001C1E3AD0436A5D686379012B12D0F4 -:10164000022B19D00025002001F052F9C0B201A9E7 -:1016500001F038F8002830D00125019801F046F853 -:10166000280002B070BD002922D11D4B1B682268E2 -:101670009A42E8D80025E6E72368012B08D9184AE2 -:101680001268934204D8002914D100250131DAE709 -:10169000012B01D00025D6E7002900D00025012923 -:1016A000D1D12379022BCED10021CCE70025CAE786 -:1016B0000025C8E700250021C5E7202332002900C6 -:1016C000019801F015F8051E08D1002CC5D032682C -:1016D000044B9A42C1D001256D42BEE70125BCE70B -:1016E0009C0000083DB8F396F0B5DE4657464E46DE -:1016F0004546E0B589B006000591049200230393A6 -:101700000378032B00D182E000F095FAE0252D014B -:1017100000239A460133019300239B46013B9946DF -:101720000023029380464F460BE06B1E9B460292BD -:101730001AE0019BA34202D001239C46E244013DF2 -:101740000194002D1DDD30784346E918013901234D -:1017500006AA073200F086FE041E5ADB06ABDA79D1 -:10176000531EDBB2012BE0D9300001F0D1F806ABFB -:1017700007331B789842DCD07A1CE0D12F0003930A -:10178000DDE7B9465346012B24DC049908310020DB -:1017900000F0DCFB041E2BD1049B9E6805998F6E24 -:1017A0003900300007F04AFB05003900300007F02F -:1017B000CBFB4B1E99416918484601302AD0894518 -:1017C0001CDA0123049A537113004A461A60039AE3 -:1017D0001A711FE0134B1B68DB6825220121124898 -:1017E00008F0CEFE114B124AC221124808F036FE14 -:1017F000114B0F4AC8210F4808F030FE0223049A0B -:10180000537113005A461A60029A1A7102E00724B3 -:1018100000E00124200009B0F0BCBB46B246A94656 -:10182000A046F0BDEC0100086CE70010E0E50010F8 -:1018300010E9001024E7001088E500100068484314 -:101840007047000070B5856A446DAC4202D0631CDD -:10185000AB4213D1E0231B019D4219D80023002184 -:10186000A34229D2DA00416A89184968066DB44654 -:10187000624452688A4215D10133F1E7194B1B6863 -:10188000DB683A220121184808F07AFE002012E0B5 -:10189000144B1B68DB6831220121144808F070FEEC -:1018A000002008E00F4B1B68DB682E220121104846 -:1018B00008F066FE002070BDAC4211D2426ADB0027 -:1018C000D3185B68994201D10120F4E7054B1B68EE -:1018D000DB682E220121064808F052FE0020EAE7CC -:1018E0000120E8E7EC01000894E70010D0E70010C1 -:1018F00004E8001070B586B004A90120FEF75DFF72 -:10190000041E25D11D4B1B68D86804AB1B78012B26 -:1019100027D0032B23D01A4B04AD6A78A978EE7830 -:10192000029601910092174A174908F0B5FD2B78ED -:10193000012B02D1AB78032B15D0104B1B68DB6851 -:1019400019220121114808F01BFE200006B070BDCD -:1019500030210F4B0F4AFF310F4808F07FFD0F4B2E -:10196000DAE70F4BD8E7054B1B68DB682122012122 -:101970000C4808F005FE0224E7E7C046EC01000829 -:10198000CCE3001034E8001030E400107CE80010D4 -:1019900088E50010FCE8001024E70010D8E30010F0 -:1019A000D0E3001058E80010F0B589B005900C00A5 -:1019B0001500334962681140324A914202D12268CF -:1019C000012A01D009B0F0BD06A91800FEF7F5FE06 -:1019D000002834D12C4B1B68D86806AB1B78012B30 -:1019E00036D0032B32D0294B06AF7A78B978FE78FF -:1019F000029601910092264A264908F04DFD3B7857 -:101A0000032BDFD12900059800F0B6FA002821D178 -:101A10002800FEF7F2FE002823D1A1682800FEF777 -:101A200023FF002824D1280000F010F90028C9D095 -:101A3000B821194B194AFF31194808F00FFDD4217C -:101A4000154B164A4900164808F008FD154BCBE720 -:101A5000154BC9E7D721104B104A4900104808F030 -:101A6000FDFCB2210C4B0D4AFF310D4808F0F6FC8D -:101A7000DA21094B094A4900094808F0EFFCC04641 -:101A800000FF00FF00010004EC010008CCE300109F -:101A900098E8001030E4001088E50010ECE8001031 -:101AA00024E70010D8E30010D0E30010F0B5C646DC -:101AB00000B584B080460E00354B00211960436AA2 -:101AC0005F680023DB19324D29684C1C2C6093425F -:101AD000F8D303A9012000F0F5FD002812D102A9D6 -:101AE000022000F0EFFD002813D10223029A3100FA -:101AF0004046FFF759FF7379012B11D00223737110 -:101B0000012429E0D821234B234AFF31234808F040 -:101B1000A5FCED211F4B204A4900204808F09EFCFF -:101B20001B4B1C6800E0013C002C11D0184B1B68BB -:101B300032689B1A0133A342F5D3029B0193039BA6 -:101B400000933300424639002000FFF76FFCEAE7BC -:101B500001233360D2E701340D4B1B68A3420DD340 -:101B60003368A342F7D8029B0193039B0093330091 -:101B7000424639002000FFF7D1FCECE7039800F063 -:101B8000B5FD029800F0B2FD04B080BCB846F0BDCF -:101B90009C00000888E50010E0E8001024E7001031 -:101BA000012800D170470220FCE7000010B5102288 -:101BB000044908F0FFFC002801D0022010BD0120DC -:101BC000FCE7C046E4E4001030B585B00D0001200C -:101BD00000F078FD041E02D0200005B030BD1023B7 -:101BE0006A460949012000F03DFC041E07D110227D -:101BF0000649684608F0DEFC002800D10400286889 -:101C000000F074FDE8E7C04684110000E4E4001031 -:101C1000004870478311000010B5FFF7F9FF013845 -:101C200010BD10B5FFF7F8FF013810BD10B5FFF774 -:101C3000F8FF043810BD0020704710B5007800F0A0 -:101C40009FFB002800D110BD0120FCE710B50078F3 -:101C50001023044A044900F093FB002800D110BD72 -:101C60000120FCE7E4E400108411000010B5C36D0E -:101C700059689020800107F0E1F810BD30B583B0BD -:101C80000C0001A9012000F01DFD002806D0012450 -:101C9000019800F02BFD200003B030BD0198FFF744 -:101CA000CAFF050001212000FFF7C8FD291863794C -:101CB000012B0ED023790133DBB26A460332137055 -:101CC000019B1878012300F05BFB041EE0D0012487 -:101CD000DEE72379F1E7F0B5C64600B580460F0090 -:101CE0001600002400E00134B44207D23D5D4046B6 -:101CF00000F00EFE8542F6D0002000E0012080BCFE -:101D0000B846F0BDF0B5DE4657464E464546E0B50E -:101D100089B004000E0002A9072000F0D3FC051EC4 -:101D200008D00127380009B0F0BCBB46B246A9462E -:101D3000A046F0BD2078102304AA834900F092FB4E -:101D4000002800DAEEE0102204A90298FFF7C3FF92 -:101D5000071E00DAE8E001286FD004A8FFF726FF8D -:101D600030700023994698462000FFF75AFF010083 -:101D70002078012302AA073200F074FB002800DA61 -:101D8000D4E0012202ABD91D0298FFF7A4FF00287E -:101D900000DACDE002AB07331B780F221A407270D5 -:101DA0001B093371012801D0042A03D90123737060 -:101DB000002333712000FFF72FFF01002078B71CAC -:101DC00001233A0000F04EFB002800DAB2E00122C5 -:101DD00039000298FFF77FFF002800DAACE0012805 -:101DE00063D0B078FFF7DCFEB0702000FFF710FF83 -:101DF00082462078F31C9B4601235A46514600F048 -:101E000031FB002800DA99E0012259460298FFF7D9 -:101E100062FF071E00DA93E0012849D0F078FFF74F -:101E2000BFFEF0704B46002B00D18BE010224146E4 -:101E3000200000F0F3FC070074E7032333702378DD -:101E4000022B05D0062B03D00023994698468BE73A -:101E5000A36810225242944663449846102304AA71 -:101E60004146200000F06EFD8146031E00DA59E76E -:101E700001280DD004A8FFF799FEC0B230700128E8 -:101E80000BD04B46002B00DA4CE7012399466BE759 -:101E9000023333700023994666E72078102304AAA2 -:101EA000294900F06DFA8146EBE70323B3709CE704 -:101EB0000323F3702378052B25D021D8012B22D0C2 -:101EC000022B00D02EE7A3681822524294466344A6 -:101ED000984601235A464146200000F033FD031E78 -:101EE000019000DA1EE7012811D0F078FFF758FEC4 -:101EF000C0B2F07002280DD1019B002B96DA11E7D9 -:101F0000062BE0D00EE7B378012B8BD1DBE7023351 -:101F1000F37087E7207801235A46514600F030FAE3 -:101F20000190E9E70127FDE60127FBE60127F9E635 -:101F30000127F7E60127F5E60127F3E60127F1E699 -:101F40000127EFE62F00EDE68411000030B583B0E5 -:101F50000C0001A9FFF738FE002801D003B030BD06 -:101F6000019D2800FFF762FE01002878042322006B -:101F700000F078FAF2E70000F0B5CE46474680B5AB -:101F800083B007008946294B1B68D8680A7828491E -:101F900008F082FA01A9072000F094FB002806D07F -:101FA0000124200003B0C0BCB946B046F0BD0021FA -:101FB00000F09EFC04000121002000F099FC4B463B -:101FC0001B78A34201D083422ED1180000F048F9BB -:101FD00080463800FFF74AFE441E0025FA6DE300F4 -:101FE000D3185E6819681368C91A41443200019811 -:101FF000FFF7DEF8002811D1013CAD1990239B01B9 -:102000009D42EBD34B46996840394022484600F048 -:1020100005FC0400019800F069FBC2E7054B064A85 -:102020000649074808F01AFA0124BAE7EC0100084B -:1020300028E9001088E50010C0E90010190200002E -:102040004CE9001030B583B00C0015006946022041 -:10205000FEF7B3FB002814D1E979012917D16B46AB -:10206000DB78012B1FD0A9682000FEF7FDFB0028BC -:1020700024D12000FFF7EAFD002825D1002003B07D -:1020800030BD144B144A1549154808F0E7F90022F1 -:102090002000FEF7BDFB0028E1D00E4B0E4A11498F -:1020A0000F4808F0DBF92000FEF7A7FB0028DAD084 -:1020B000084B094A0C490A4808F0D0F9054B064A72 -:1020C0000A49074808F0CAF9024B034A084904487C -:1020D00008F0C4F988E50010ACE900103E020000E9 -:1020E0004CE9001042020000470200004B020000D1 -:1020F0005602000070B584B005000E00FFF7FAFB31 -:10210000041EF06008D0022809D103A9012000F0C4 -:10211000D9FA002809D00124200004B070BD1E4B5C -:102120001E4A1F491F4808F099F902A9072000F02C -:10213000C9FA002801D00124EEE7320029000398F3 -:10214000FFF7D2FA041E19D10398FFF76AFD0100C8 -:1021500001236A460732012000F084F901226B4610 -:10216000D91D0298FFF7B7FD002813DB01280CD01A -:102170006B46DA790F231340F3710400039800F0E3 -:10218000B5FA029800F0B2FAC6E76B460122DA719E -:102190002000EDE70124BFE7E0E5001098E900101A -:1021A0006F0200004CE9001010B5FA21490006F05A -:1021B00045FE10BD10B5FFF7F7FF400210BD10B58A -:1021C000FEF714FC10BD000070B5204CA5440400BF -:1021D0000E001D000132839201A9072000F072FA5F -:1021E000002805D00124200084239B009D4470BD5D -:1021F000FA225200290002A808F0EAF9839B809392 -:10220000134B1B687F93FE21490002A8FFF7D7FFFD -:1022100082908190012E10D00136F1008919490277 -:10222000091980239B0002AA019800F0A1FA041E5C -:1022300005D1019800F05AFAD5E70026EDE7054BE5 -:10224000054AE921054808F009F9C046F0FDFFFFFD -:10225000C4EA001088E500107CEA0010DCE90010F8 -:10226000012804D0022804D190208001704700206A -:10227000FCE701204042F9E7F0B5DE4657464E46FE -:102280004546E0B5394CA54481460191029205A925 -:10229000072000F017FA061E63D100250023984698 -:1022A00000279A4603930CE0859B9B46FE2149003C -:1022B00006A8FFF784FF584518D001239C46E24446 -:1022C0000135012D19D8EC00641964024C448023B7 -:1022D0009B0006AA2100059800F00AFA002842D1C6 -:1022E000234B839A9A42DFD00137E9E7849B9845D4 -:1022F000E6D82E0098460394E2E7022F11D0534609 -:10230000022B1CD101267642059800F0EFF930002F -:1023100087239B009D44F0BCBB46B246A946A0461D -:10232000F0BD0023029A1360059800F0F1FA010055 -:10233000FA225200019808F054F90126E4E7029BC2 -:1023400042461A60FA235B00019A0399059800F04F -:10235000CFF90028D8D0074B074AAB21074808F02F -:102360007DF80126D3E70126D1E7C046E4FDFFFF53 -:10237000AFBEADDE88E50010ACEA0010DCE900106D -:10238000F0B5CE46474680B5FFB007000C00914639 -:102390001E00FA214900200006F0D6FD0D0032197A -:1023A0002A4B9A420DD83800FFF75AFF071E0FDB61 -:1023B0002000FFF7FFFEC719002398460120404286 -:1023C00026E00E21224B234AFF31234808F046F82D -:1023D0001221224B1F4AFF311F4808F03FF85A1BB9 -:1023E000280068444946414408F0F2F86B467D9A5B -:1023F00021003800FFF7E8FE002818D1F53EFF3E27 -:1024000080239B009C4667440C3B9C46E04400258F -:10241000002E15DD7DAA69463800FFF72DFF041E4A -:102420000CDBFA235B009E42D9DC3200D8E72E2178 -:102430000B4B084AFF31084808F010F801204042D1 -:102440007FB0C0BCB946B046F0BDC0469411000094 -:1024500028EA001098EA0010DCE9001054EA0010A5 -:1024600088E50010F0B5C64600B5FEB005000E00C8 -:1024700090461C00FA214900300006F065FD0F006F -:10248000A219214B9A420AD82800FFF7E9FE051E3F -:102490000CDB3000FFF78EFE451900261DE0AA2157 -:1024A0001A4B1B4A49001B4807F0D8FFAC211A4BB6 -:1024B000174A4900174807F0D1FF22003900694444 -:1024C0004346981908F084F8F53CFF3C80239B00B4 -:1024D0009C466544F536FF360027002C0CDD7DAAAE -:1024E00069462800FFF7C8FE00280ADBFA235B00D4 -:1024F0009C42E2DDDA1BE1E700207EB080BCB846FA -:10250000F0BD01204042F8E79411000028EA0010D5 -:1025100064EA0010DCE9001054EA0010F0B5D64679 -:102520004F464646C0B582B004000D0017009946DC -:102530000AAA13789A46002845D0002947D0002FD0 -:1025400049D00E89CB689C466644042301AA310019 -:10255000380000F0CDF88046002840D101AB1A8841 -:10256000274B9A421FD06B89002B40D101AB1A88B0 -:10257000244B9A423FD1256067604B4623815346E6 -:10258000A3726B899B19E3606B899B1901AA52881E -:102590009B18636104362661404602B0E0BCBA462F -:1025A000B146A846F0BD6B8901AA51888B421AD169 -:1025B00089190423380000F09BF80028D6D00123A5 -:1025C0005B429846E8E701235B429846E4E7012333 -:1025D0005B429846E0E701235B429846DCE7012333 -:1025E0005B429846D8E701235B429846D4E7012333 -:1025F0005B429846D0E701235B429846CCE7C04651 -:102600000869000007690000F0B583B004000F00FE -:1026100016001D00002848D00368002B48D04368EE -:10262000002B20D1012040423BE0042301AA216974 -:10263000606800F05DF800283DD1A37A002B03D03C -:102640002369E268934239D223891D4A934218D004 -:1026500001AA1288934214D001AB5B882269944688 -:102660006344043323612369626993421BD2226865 -:102670005289002AD9D0E2689A42D6D10433236124 -:10268000D3E7002D02D001AB1B882B8023690433D4 -:102690003B6001AB5B88338022699446634404331A -:1026A000236103B0F0BD0120FBE701204042F8E7C1 -:1026B00001204042F5E701204042F2E70120F0E727 -:1026C000FFFF000010B5002200E001329300064C2D -:1026D0001B59002B05D01C788442F6D10B600020DA -:1026E00001E00120404210BDA0000008704700003A -:1026F00070B5150044688C4214D9CA18944218D990 -:10270000611842787F2A1BD052B2002A1EDB0124B6 -:102710006442114B1B68D8682200104907F0BCFEC8 -:10272000200070BD20210E4B0E4AFF310E4807F0ED -:1027300095FE90210D4B0B4A49000B4807F08EFE89 -:102740001A00280007F044FF0024E9E72A0000F0FF -:102750006FF9041EE4D0DCE7EC01000844EB001044 -:10276000C8EA001098EC0010DCEA00102CEB001016 -:10277000F8B5150044688C420CD9CA18944210D997 -:10278000641842787F2A13D052B2002A34DB012029 -:102790004042F8BDA3211B4B1B4A49001B4807F0D0 -:1027A0005DFE48211A4B184AFF31184807F056FEC3 -:1027B000DA0506D1E205D00D002A09D15F0A06002C -:1027C00017E0A921134B104A4900104807F046FEB4 -:1027D0005421114B0C4AFF310C4807F03FFE2900F1 -:1027E000200002F017F980239B009C466444654456 -:1027F0000136BE42F3D3CCE72A00210000F040F9B5 -:10280000C7E7C046C8EA001084EC0010DCEA0010FC -:102810002CEB00106CEB00108CEB001070B5836893 -:10282000934211D38B4216D9541845685B199C42C8 -:1028300018D26D18531941787F291AD049B200294E -:1028400034DB0120404270BDBC211B4B1B4A4900B8 -:102850001B4807F003FE7A211A4B184AFF3118482B -:1028600007F0FCFDBD21184B144A4900144807F03D -:10287000F5FD6D0A6D025B0A5B029D4212D05B1B87 -:102880005C0A0020002CDED0013C6002401902F0FE -:1028900087F80028F6D094210C4B084AFF310848ED -:1028A00007F0DCFD280002F07BF8CCE711002800DF -:1028B00000F00EF9C7E7C046B8EB001070EC00104E -:1028C000DCEA0010CCEB0010E0EB001008EC00108C -:1028D00010B543787F2B08D05BB2002B02DB0120C0 -:1028E000404210BD00F0C6FBFBE780208000F8E707 -:1028F000012908D0022908D0002902D00120404235 -:1029000070470120FCE70220FAE70320F8E7000007 -:1029100010B543787F2B0BD05BB2002B02DAFF207F -:10292000C0B210BD034B044A0449054807F096FDA8 -:102930000020F5E724EC001058EC00101F02000006 -:10294000DCEA0010F8B5CE46474680B50700904651 -:102950001E00FFF7CDFE814600280FD10024B442AF -:1029600009D243461D5D3800FFF7D2FF854208D1EA -:102970000134E4B2F3E70123994602E001235B420C -:1029800099464846C0BCB946B046F8BDF8B50E00F9 -:102990001500002200E00132930020495B58002B13 -:1029A00004D019788142F6D11C0000E01C00002BF5 -:1029B0002ED063787F2B11D05BB2002B2BDA00F086 -:1029C00061FB0700A368D8190138390006F036FA10 -:1029D000336883420BD36268002414E0072802D1D5 -:1029E0008027BF00EEE700F04DFB0700EAE70C4B45 -:1029F0000C4A0D490D4807F031FDE300EB185F600C -:102A00001A60D21901348442F7D330600020F8BD37 -:102A100001204042FBE701204042F8E7A000000807 -:102A20002CEC001040EC001072020000DCEA0010F8 -:102A3000F0B5C64600B582B00E0017001C00437802 -:102A40007F20184000F0AEFA0500E8231B069C46E4 -:102A5000664400F0AFFA804600F0B0FA01900094AE -:102A60003B0032002900404604F0F6F9002804D16A -:102A7000002002B080BCB846F0BD01204042F8E71B -:102A8000F0B5C64600B582B00E0017001C004378B2 -:102A90007F20184000F086FA0500E8231B069C46BC -:102AA000664400F087FA804600F088FA01900094AE -:102AB0003B0032002900404604F048FA002804D1C7 -:102AC000002002B080BCB846F0BD01204042F8E7CB -:102AD000F0B583B00500002000F064FA0400E8239C -:102AE0001B06E818A3699D696D42054000F062FA73 -:102AF0000600A3699F6900F061FA00903B002A007C -:102B00002100300004F0C0FA002802D1002003B0F8 -:102B1000F0BD01204042FAE7F0B5C64600B58C682A -:102B20000A688423C3580F252B40073DED1A230064 -:102B3000AC4226D92B0024E055782D021678354377 -:102B4000D678360697783F043E4335439827C551DB -:102B500055792D0216793543A846D67936069579EA -:102B60002D042E4345463543C551D218E41A84231B -:102B7000C3580F252B40073DED1A2300AC4200D966 -:102B80002B00002B00D183E0082BD5D0012B24D0C3 -:102B9000022B26D0032B2BD0042B33D0052B3ED079 -:102BA000062B4CD0072B5DD053781B0215782B4396 -:102BB000D5782D069678360435432B4398268351D5 -:102BC00053791B0215792B43D5792D0697793F044C -:102BD0003D432B4383510823C7E716789025465180 -:102BE000C3E755782D021678354394268551BCE706 -:102BF00055782D0216783543942685519678902580 -:102C00004651B2E755782D0216783543D678360608 -:102C100097783F043E43354398268551A5E755787C -:102C20002D0216783543D678360697783F043E4312 -:102C300035439826855116799025465195E7557864 -:102C40002D0216783543D678360697783F043E43F2 -:102C500035439826855155792D02167935439426AA -:102C6000855182E755782D0216783543D678360699 -:102C700097783F043E4335439826855155792D0278 -:102C800016793543942685519679902546516CE7FF -:102C90000A608C60002C0CD1F924E4000359012255 -:102CA000934303518A61CB69002B02D0CB69012089 -:102CB000984780BCB846F0BDF8B50E004C69CA68AC -:102CC000C423C3580F21194023008C421CD90B0088 -:102CD0001AE0D825415911700F0A57700F0C9770E0 -:102CE000090ED17045591571290A5171290C91713C -:102CF0002D0ED571D218E41AC423C3580F251D40D8 -:102D00002300AC4200D92B00002B6DD0082BE0D063 -:102D1000012B1ED0022B20D0032B24D0042B2BD030 -:102D2000052B33D0062B3ED0072B4BD0D821435850 -:102D300013701D0A55701D0C95701B0ED3704358EF -:102D40001371190A5171190C91711B0ED37108235B -:102D5000D0E7D02141581170CCE7D42141581170EF -:102D6000090A5170C6E7D42141581170090A5170FF -:102D7000D02141589170BDE7D821415811700D0AFA -:102D800055700D0C9570090ED170B3E7D8214158DC -:102D900011700D0A55700D0C9570090ED170D0216F -:102DA00041581171A6E7D821415811700D0A55708C -:102DB0000D0C9570090ED170D42141581171090A7A -:102DC000517197E7D821415811700D0A55700D0CBB -:102DD0009570090ED170D42141581171090A5171B1 -:102DE000D0214158917185E7F2607461002C0DD1BA -:102DF000F922D200835802218B4383500323B3610D -:102E0000336A002B02D0336A032098477461F8BDFF -:102E100010B5264A264BD358DA070DD49A0716D494 -:102E20005A071FD5234B05229A61204AF823DB005D -:102E30000421D150D35809E01C4C1E492000FFF753 -:102E40006BFEF823DB000122E250E35810BD174C63 -:102E500018492000FFF730FFF823DB000222E25080 -:102E6000E358F3E71A0709D5124B06229A610F4A75 -:102E7000F823DB000821D150D358E7E7DA0609D55B -:102E80000C4B07229A61094AF823DB001021D1502C -:102E9000D358DBE79B06D9D5064B08229A61034A33 -:102EA000F823DB002021D150D358CFE70000424067 -:102EB000CC070000805E010810B52E4C2E4A03217D -:102EC000200001F0EBFE11220321200001F00CFE96 -:102ED0002A4A0421200001F0E1FE112204212000F1 -:102EE00001F002FE264A0521200001F0D7FE112242 -:102EF0000521200001F0F8FD224A0621200001F002 -:102F0000CDFE11220621200001F0EEFD1E4A072110 -:102F1000200001F0C3FE11220721200001F0E4FD92 -:102F20000021022004F052FB0221022004F07EFB6B -:102F3000022004F017FB1549154805F0BBF8FA22EA -:102F4000144B92001449154802F040FD041E0FD1A5 -:102F50000F4B00229B5E002B06DB1F2213401E3A04 -:102F60009A4013000E4A13600A490C4802F00CFF05 -:102F7000200010BD8005314044ED001010ED001020 -:102F8000DCEC0010A8EC001078ED0010112E001001 -:102F9000E4010008805E0108ACED00100000424032 -:102FA00000E100E0024B1B685B688000C05870477E -:102FB000385F0108004870470000424000487047F1 -:102FC000805E010810B50400FFF776FF002800D0EE -:102FD00010BD044B1C60044A2100044803F02EFE7F -:102FE000F6E7C046385F0108805E010800004240F5 -:102FF00070B51D4B5B68032831D00AD8012811D069 -:10300000022803D11B6802221A700EE00120404200 -:1030100024E0042803D11B6808221A7005E001206F -:1030200040421BE01B6801221A7001380F4A43001E -:10303000191889008C581918890051184D680E7A92 -:103040000B4A16722900200001F028FE32002900E8 -:10305000200001F049FD0448FFF7B4FF70BD1B6874 -:1030600004221A70E1E7C046D40100088C01000870 -:10307000E4000008024B5B681B689B69586A704754 -:10308000D4010008024B5B681B689B699869704714 -:10309000D401000870B504001D4D280003F040FB6A -:1030A0002B685B005B082B60022004F073FA194B5D -:1030B00000229B5E002B0BDB1F2213401E3A9A401E -:1030C0001300154980228B50BFF34F8FBFF36F8FD2 -:1030D000104B59880020185E04F0BAFF013C6000D4 -:1030E000001980000D4BC05801F0D4FC0C4C20009E -:1030F00001F0D0FC200001F0CDFC200001F0CAFC62 -:10310000200001F0C7FC200001F0C4FC70BDC046E7 -:1031100000004240E401000800E100E08C010008EA -:1031200080053140074BC200D05A9B1859889A88B5 -:10313000DB88084310431843C0B2431E9841C0B215 -:103140007047C046845F010870B515000024002C4C -:1031500002D0124C200070BDA3005B195B00104A26 -:103160009A5A6B000F4E9B5B9A4201D30134EEE7F3 -:1031700000230B704C700C4B03602000FFF7D2FF54 -:10318000002807D00649A20055196D006B5A01337B -:103190006B52DFE7044800F0FDFBF3E7011000008D -:1031A000845F0108BCED00100000104070B50600FF -:1031B0000D004C78A3009B185B0010495B5A002B54 -:1031C00004D0A400A4186400013B63526878FFF7A0 -:1031D000A9FF002800D070BD094B1B68002B05D04B -:1031E0003368002B05DB01232B70F4E700F026FB8E -:1031F000F6E7300000F014FCF5E7C046845F0108F4 -:10320000D85F010870B504000D0000280BD0211D07 -:103210002A002000FFF798FF002800D1A571434243 -:103220005841C0B270BD01BEF1E710B5002803D00F -:103230000379002B02D010BD01BEF9E782790100AD -:1032400001C9FFF7B3FFF6E730B583B005000C0006 -:10325000002801D0002901D103B030BD0321684608 -:10326000FFF7D0FF002803D16846FFF7DEFFF3E742 -:103270000098A3B2074A11682D228A5C1F2A04D83D -:103280000022290000F07AFCEEE70022290000F07D -:1032900003FDE9E7D45F010810B5041E01D0002941 -:1032A00000D110BDFFF7D0FF03212000FFF7AAFFD8 -:1032B000F7E7000070B505000C1E22D0002B23D0CC -:1032C000006816490E682D21715C1F2911D8210054 -:1032D00000F05EFD00281AD12868104B1A682D23D3 -:1032E000D35C1F2B09D8210000F008FE002811D163 -:1032F00070BD210000F0D6FEECE7210000F060FF79 -:10330000F4E701204042F3E701204042F0E70120CA -:103310004042EDE701204042EAE7C046D45F0108A1 -:1033200070B5002913D0002A14D0CC68002C14D01A -:1033300000680D4C25682D242C5D1F2C04D800F04E -:10334000F3FD00280CD170BD00F050FFF9E701201B -:103350004042F8E701204042F5E701204042F2E711 -:1033600001204042EFE7C046D45F010810B50029B4 -:1033700013D0002A14D0CB68002B14D000680D4B5A -:103380001C682D23E35C1F2B04D800F019FE0028D5 -:103390000CD110BD01F0C6F8F9E701204042F8E772 -:1033A00001204042F5E701204042F2E7012040427F -:1033B000EFE7C046D45F010810B59821FFF76CFF16 -:1033C00010BD10B50B0001000831002B05D1022201 -:1033D00003003833FFF76EFF10BD0122F8E710B588 -:1033E0000C00131E01D1002010BD01000831220085 -:1033F000FFF796FFF8E710B50A0001000831FFF764 -:10340000B5FF10BD10B50549C02252008B580120F0 -:1034100003438B5005F008FD10BDC0460000264058 -:103420000349C02252008B58012083438B507047C0 -:103430000000264070B50400421E304B9A4256D818 -:103440002F4B1B78002B55D12D4B01221A702D4B81 -:103450001B78002B0ED0FFF7E3FF2B4B1C800023C3 -:103460000C2B1FD89900294A52185288A24212D90F -:103470000133F5E7264D8032FF32AB580126334346 -:10348000AB5005F0D1FCE122D200AB58B343AB50B6 -:103490001C4B1E70DFE70A001C49525AA24202D997 -:1034A000140000E00C231B4A1370FF251D40280068 -:1034B00005F0A0FC2004000C06F02CFE164A174B69 -:1034C00005F06AFF05F07EFE82B211235B1B01202E -:1034D0009840101A80B20E4AC2235B00D358C0181D -:1034E00080B205F06FFCFFF78DFF002070BD01205A -:1034F0004042FBE701204042F8E7C0466F1700005A -:10350000905F0108915F01088E5F0108C4ED001013 -:10351000000026408C5F010833DFC14F1C409F3FF5 -:10352000064AD0239B00D05803E0044AD0239B00D6 -:10353000D058431CF9D0C0B27047C0460000654067 -:1035400010B50400002003E02100034801F0E8FE6C -:103550000028F9D010BDC0460000654070B50600D7 -:103560000D00002102F0AAF80021012003F016FF4F -:10357000040004F01DFDE9004B08C01805F05EFCD6 -:10358000421E002C08D0002C0CD0326880231B0671 -:1035900013433360200070BD0021012003F03CFE86 -:1035A0000400F0E70021012003F0B6FE0400ECE780 -:1035B00070B50C001600002901D0002509E0002597 -:1035C000280070BD2078094B1870FFF7B9FF01344F -:1035D0000135B542F4DA23780A2BF3D1034B1B787B -:1035E0000D2BEFD00D20FFF7ABFFEBE7D05F01080D -:1035F00070B50C001600002901D0002503E000255D -:10360000280070BD0134B542FADAFFF789FF207057 -:1036100001350A28F4D00D28F4D1F1E710B50400E3 -:103620000A4A0B490B4801F08FFE002808D00028F9 -:1036300005D1084A116880231B060B43136010BD97 -:1036400021000448FFF78AFFF1E7C046945F0108B4 -:10365000B8DE00100000654070B505000C0007E002 -:103660000B4B1B689800C0184000FCF78DFF013C15 -:10367000002C0BD082229200AB58DB05DB0DA95841 -:10368000C90B01220A409B18002BE9D170BDC0462E -:103690009000000810B5024801F0DEFF10BDC046E2 -:1036A00000006540014B18607047C046D45F0108B8 -:1036B000F0B51F001D4B1E68002E2DD0B36B1B18DC -:1036C0001B68346D2418E41A631E9C41E3B29C46C7 -:1036D000B368C41825680F242C40062CF8D81306AC -:1036E000F26882183B43136063460B4313D00F4BC1 -:1036F0001B689B68C3181B68DB03F8D50C4B1A6862 -:103700002D23D35C1F2B09D8084B1B681B681B1883 -:103710001B681B06F8D4F0BD3300D2E7034B1B68CF -:103720001B681B181B68002BF8D1F4E7D85F010851 -:10373000D45F010810B50400E0239B05802200211E -:10374000FFF7B6FFD0239B05802200212000FFF762 -:10375000AFFFC0239B05802200212000FFF7A8FFB8 -:10376000B0239B05802200212000FFF7A1FFA023AA -:103770009B05802200212000FFF79AFF90239B05E4 -:10378000802200212000FFF793FF80239B058022E9 -:1037900000212000FFF78CFFE0235B058022002141 -:1037A0002000FFF785FFC0235B0580220021200059 -:1037B000FFF77EFFA0235B05802200212000FFF79A -:1037C00077FF80235B05802200212000FFF770FF38 -:1037D000C0231B05802200212000FFF769FF802302 -:1037E0001B05802200212000FFF762FF8023DB04FD -:1037F000802200212000FFF75BFF002380220021B0 -:103800002000FFF755FF0B4B1B689B080A4A116805 -:103810002D228A5C1F2A0AD80C229340F02292059E -:103820001343802200212000FFF742FF10BD0D222C -:10383000F3E7C046DC5F0108D45F0108054B1A6856 -:103840002D23D35C1F2B03D8034A044B1A60704707 -:10385000034AFAE7D45F0108B8EE0010D85F010808 -:103860000CEF0010F0B583B01400444B1B68002B24 -:1038700075D0002918D0002973D0002C73D0802275 -:103880001202944200D972E080225201944239D04F -:1038900021D88022D200944236D00ED98022120143 -:1038A000944216D1782225E0002AE4D11A6D11182D -:1038B000334A1268D46CA400DDE78022520094429F -:1038C00024D00132FF32944201D17E2212E02D4DEC -:1038D0004AE02C4D48E08022D201944218D0802248 -:1038E0001202944201D1002204E08022920194420B -:1038F0003FD16022224D2E682D25765D1F2E09D9DD -:10390000671E08E07022F5E77C22F3E77F22F1E7EB -:103910004022EFE71C4F01910D003D4039422AD172 -:103920001F2E02D91202194942509B6B1B18019A93 -:103930001A60A308124A11682D228A5C1F2A0CD82B -:103940000C2293401A00F0239B0513438022002190 -:10395000FFF7AEFE0E4B1C6006E00D22F1E7094DAD -:1039600002E0084D00E0074D280003B0F0BD054D12 -:10397000FAE7044DF8E7034DF6E7C046D85F0108C3 -:10398000D45F01080B003200FF3F000088140000E4 -:10399000DC5F010810B50400FFF750FF1A4B1A68EE -:1039A0002D23D35C1F2B10D8184B2360184B1B689A -:1039B0005B6B1B1901221A60164B1B68002B16D07B -:1039C0002000FFF7B7FE002010BD2368124A134005 -:1039D00023600F4B1B685B681B19104A1A60226832 -:1039E00080231B06134323600323A360DEE7084BF9 -:1039F0001B68196D6118044B1B68DA6C920020007B -:103A0000FFF730FFDCE7C046D45F01080300008009 -:103A1000D85F0108DC5F0108FFFFFE7F01000200A4 -:103A2000084B1A682D23D35C1F2B06D80023036094 -:103A3000054B00221A60002070470023036083605A -:103A4000F6E7C046D45F0108DC5F010870B50D4C95 -:103A50002568AC68241826680F243440042CF6D856 -:103A6000EC680419084D2560064C2568ED68451979 -:103A700029602168C96841180A602268D2688018E4 -:103A8000036070BDD85F01081002004270B50F4C92 -:103A90002568AC68241826680C242642F7D1EC6807 -:103AA00004190B4D2560094C2568ED6845192960FE -:103AB0002168C96841180A602268D26882181360B8 -:103AC0002368DB68C018049B036070BDD85F0108E1 -:103AD0001032004370B51D0004AB1E78084A14680C -:103AE000A3681A1812681307F8D409060223B34012 -:103AF00019430123AB40E26880181943016070BD8F -:103B0000D85F010830B51D000B4A1468A3681A1865 -:103B100012681307F8D409060323049A9340194343 -:103B20000223039A934019430123AB40E2688018B3 -:103B30001943016030BDC046D85F010810B582B09E -:103B4000040008001100002B01D102B010BD0200DA -:103B50002000FFF77BFF08230093043B0022502145 -:103B60002000FFF7B7FF044B1B681B681B191B687D -:103B7000DB06F8D4E9E7C046D85F010810B582B08B -:103B8000040010001A1E01D102B010BD0300200075 -:103B9000FFF75CFF0C230093043B0022512120001F -:103BA000FFF798FF034B1B681B681B191B68DB069C -:103BB000F8D4E9E7D85F0108F0B5002B00D1F0BDDB -:103BC0001E00314C2568AC68241827680F243C403F -:103BD000042CF6D8862464010459002CFADBEC6826 -:103BE00004192A4D2560284D2C68E46804192260C8 -:103BF0002A68D26882181660234A1468A2681218CC -:103C000015680F222A40042AF6D8E2688218204C50 -:103C100014601D4C2268D268821811602268D26834 -:103C2000821816600EE0184A11688A681218146823 -:103C30000F222240062AF6D8CA6882181549116058 -:103C4000103B9BB20F2BEED8002B07D10E4B1B68FD -:103C50001B681B181B68002BF8D1B0E70A4A1168D3 -:103C60008A68121814680F222240062AF6D81B040C -:103C7000C02212021343CA68821808210B43802114 -:103C8000C9050B431360E1E7D85F01080800007124 -:103C90000C00007008C01040F0B5002B00D1F0BD42 -:103CA0001F00264C2568AC68241826680F24344071 -:103CB000042CF6D8EC680419214D25601F4D2C68A2 -:103CC000E468041921602968C96841180F600F2B46 -:103CD00014D91A490C68A16809180D680F212940E8 -:103CE0000629F6D8E168411886256D03154384241A -:103CF000E4052C430C60103B9BB2E8E7002B07D196 -:103D00000E4B1B681B681B181B68002BF8D1C6E7FD -:103D10000A490C68A16809180D680F212940062975 -:103D2000F6D81B04C02109020B43E16841181A436D -:103D30008423DB051A430A60E2E7C046D85F010826 -:103D40000C00007010B582B004000B0011000722B7 -:103D500058680240C020800022501A699B69009276 -:103D60002000FFF793FE0C230193043B0093043BD8 -:103D700000224C212000FFF7C5FE044B1B681B6886 -:103D80001B191B685B07F8D402B010BDD85F01088F -:103D900010B5002B01D0002900D101BE062A00D9A0 -:103DA00098E090004C4C205887468B6018004030BB -:103DB000086154338B610A6000234B60474BCB6230 -:103DC0004023CB602C3B4B614B622D33FF33CB61E7 -:103DD000002010BD8B6018004030086160338B619B -:103DE0000A6001234B603E4BCB624023CB60203BFB -:103DF0004B61043B4B62E433CB610020E9E78B600D -:103E000018004030086160338B610A6001234B6009 -:103E1000344BCB624023CB60203B4B614B62E033A1 -:103E2000CB610020D5E78B60180080300861C0337B -:103E30008B610A6002234B602B4BCB628023CB60EB -:103E4000403B4B61103B4B62A0239B00CB610020A9 -:103E5000BFE78B60180080300861C0338B610A6057 -:103E600002234B60214BCB628023CB60403B4B61F4 -:103E70004B62A0239B00CB610020AAE78B60180057 -:103E800080300861C0338B610A6002234B60184B9D -:103E9000CB628023CB60403B4B61243B4B62A02331 -:103EA0009B00CB61002094E78B6018008030086194 -:103EB000C0338B610A6002234B600E4BCB628023C0 -:103EC000CB60403B4B61203B4B62A0239B00CB610E -:103ED00000207EE708487CE760EF00107CEF0010D0 -:103EE00090EF0010B0EF0010D0EF001010F00010B5 -:103EF00050F0001090F000100B00320010B50A1EB8 -:103F00000ED000238B620B624B69002B01D1054858 -:103F100010BD0969D26A9BB2FFF710FE0020F7E7D7 -:103F20000048F5E70B003200F0B5D6464F4646464E -:103F3000C0B581460E001700002931D0002A31D0CB -:103F4000CA689046002A2FD0002B34D00A6AD218B3 -:103F50000A628C6A1D0014E043461B1B9A46B36834 -:103F6000191953469BB23A004846FFF7E7FDB2687D -:103F700031004846FFF7E6FE4346E41A2D19574440 -:103F800000242B199845E7D9B362002D0DD0B168F4 -:103F90000919ABB23A004846FFF7D0FD002504E00E -:103FA000064D02E0054D00E0044D2800E0BCBA4695 -:103FB000B146A846F0BD1D00F7E7C0460B00320031 -:103FC000F0B5DE4657464E464546E0B583B0009014 -:103FD0000E00140000295FD0002A5FD00D698B68A5 -:103FE0009846CF688B6A9A460B6ADB009946802F09 -:103FF0002DD038230193802342465146535401313A -:104000004144BBB29B4652469B1A9BB2013B9BB2BA -:1040100000220098FFF7B2FD019B53451AD93B1FC0 -:104020004A46120E4146CA544B461A0CFB1ECA544D -:104030004B461A0ABB1ECA54013F4A46CA5542465D -:1040400031000098FFF77EFE706A80081BE0702345 -:104050000193D0E742463100009B9A461800FFF7D3 -:1040600071FE5B46002241465046FFF787FDD6E7CA -:10407000EB782370AB7863706B78A3702B78E37068 -:104080000434043501380028F2D103B0F0BCBB463B -:10409000B246A946A046F0BD0148F6E70048F4E75D -:1040A0000B00320010B5002B01D0002900D101BE59 -:1040B000062A00D970E09000384C205887468B6063 -:1040C00040330B610A6069234B60354BCB62402360 -:1040D000CB602C3B4B614B62002010BD8B604033AA -:1040E0000B610A606A234B602E4BCB624023CB608E -:1040F000203B4B614B620020EFE78B6040330B614C -:104100000A606A234B60284BCB624023CB60203B84 -:104110004B61043B4B620020DFE78B6080330B6117 -:104120000A606B234B60214BCB628023CB60403B0A -:104130004B614B620020D0E78B6080330B610A60DB -:104140006B234B601A4BCB628023CB60403B4B61AF -:10415000103B4B620020C0E78B6080330B610A602C -:104160006B234B60134BCB628023CB60403B4B6196 -:10417000203B4B620020B0E78B6080330B610A600C -:104180006B234B600C4BCB628023CB60403B4B617D -:10419000243B4B620020A0E708489EE7D0F00010C7 -:1041A000ECF0001020F1001000F1001080F1001080 -:1041B00040F1001000F20010C0F100100B003200BE -:1041C00010B50A1E0ED000238B620B624B69002BC8 -:1041D00001D1054810BD0969D26A9BB2FFF7ECFC1A -:1041E0000020F7E70048F5E70B003200F0B5D646AF -:1041F0004F464646C0B504009146002900D180E1F3 -:10420000002A00D17FE1CE68002E00D17DE1002B95 -:1042100005D11800E0BCBA46B146A846F0BD0A6A0E -:10422000D01808628D6ABA480768BA68101902681F -:104230000F2010400628F6D8F8682018C827FF0578 -:104240000760B34800680068001900680028F8D1CA -:104250000A6990464A699446AD480768BA681019D9 -:1042600002680F2010400428F6D8F8682018A94FDB -:104270000760A74F3868C068201842460260386857 -:10428000C0682018624602604A699446A0480768E0 -:10429000BA68101902680F2010400628F6D8F8688E -:1042A0002018CC27FF05624617430760984800682E -:1042B0000068201802689246002AF7D194480268E4 -:1042C0009068001907680F2038400628F6D8D06893 -:1042D0002018CA22D2050260002D48D18C480268FD -:1042E0009068001907680F2038400428F6D8862007 -:1042F000400120580028FADBD0682018864A026066 -:10430000834A94461068C06820184A460260624694 -:104310001268D268A21813605A19964257D8721BB5 -:1043200090467B4A10688268121917680F223A403B -:10433000062AF6D82A02C068201847461743CC221E -:10434000D2053A4302604A689046714A1068826812 -:10435000121917680F223A40062AF6D8C268A21826 -:10436000404600061060AD1B5B195546D4E78A68CD -:104370009046674802689068001907680F20384027 -:104380000428F6D8D0682018624A0260604A106893 -:10439000C0682018474607601068C068201805608C -:1043A0005B4802689068001907680F2038400628AB -:1043B000F6D8D0682018CC22D2052A43026054488F -:1043C00000680068201800680028F8D186E78A6233 -:1043D000002B4ED18D6A002D64D10E694D694C4B76 -:1043E0001A6893681B1918680F230340042BF6D82A -:1043F000D368E318494A1A60454A1368DB68E31832 -:104400001E601368DB68E3181D60414B1A689368EF -:104410001B1918680F230340062BF6D8D368E3183E -:10442000CA22D2051A604869394B1A6893681B1969 -:1044300019680F230B40062BF6D8D368E318CE2259 -:10444000D20502431A60324B1B681B68E3181868D8 -:104450000028F8D12E4B1A6893681B1919680F238E -:104460000B40062BF6D8D368E418CA23DB0523607B -:10447000D0E6274A10688268121916680F22324067 -:10448000062AF6D82D02C268A2182B43CC25ED05CA -:104490002B4313601E4B1B681B68E3181B68002B23 -:1044A000F8D197E78E681A4B1A6893681B19186839 -:1044B0000F230340042BF6D8D368E318174A1A6079 -:1044C000134A1368DB68E3181E601368DB68E3189F -:1044D0001D608D6A0E4B1A6893681B1918680F23AC -:1044E0000340062BF6D8D368E318CE22D2052A4320 -:1044F0001A60074B1B681B68E3181B68002BF8D178 -:104500006BE7074886E6064884E6054882E6C0462B -:10451000D85F010808000070080000710C000070EE -:104520000B003200F0B5DE4657464E464546E0B534 -:1045300083B003000192002900D198E1002A00D144 -:1045400097E1CC688E6A0D6A6A0F9346ED00802C65 -:1045500000D171E138229446C7480768BA68D0187C -:1045600002680F2010400628F6D8F8681818C827E7 -:10457000FF050760C04800680068C0180068002890 -:10458000F8D10A6991464A699046BB480768BA68FB -:10459000D01802680F2010400428F6D8F8681818C0 -:1045A000B64A0260B44A92461068C06818184A4673 -:1045B000026052461068C0681818424602604A6994 -:1045C0009146AD480768BA68D01802680F201040BD -:1045D0000628F6D8F8681818CC22D2054F4617439B -:1045E0000760A54800680068181800680028F8D11E -:1045F000A1480768BA68D01802680F201040062842 -:10460000F6D8F8681818CA27FF0507608A68904628 -:1046100099480768BA68D01802680F20104004282B -:10462000F6D8F8681818954F0760934F3868C06837 -:104630001818424602603868C068181806608E482C -:104640000768BA68D01802680F2010400628F6D80C -:10465000F8681818CC27FF053743076086480068BC -:104660000068181800680028F8D183480768BA68FD -:10467000D01802680F2010400628F6D83202914662 -:10468000F8681818802290464A4647463A439146B1 -:10469000D022D20590464A4647463A430260B44586 -:1046A00000D8CCE0621F94465A46D2B29046724877 -:1046B0000668B268D01807680F2038400628F6D878 -:1046C00062461702F068181842461743D026F605CE -:1046D00037430760221F90462A0E944666480668B4 -:1046E000B268D01807680F2038400628F6D842462E -:1046F0001002F6689E1962461043D027FF05384322 -:104700003060E21E9046280CC2B294465A480668B1 -:10471000B268D01807680F2038400628F6D84246FD -:104720001002F6689E1962461043D027FF053843F1 -:104730003060A21E9046280AC2B294464E480668CF -:10474000B268D01807680F2038400628F6D84246CD -:104750001002F6689E1962461043D027FF053843C1 -:104760003060013CEAB2944643480668B268D0180B -:1047700007680F2038400628F6D82502F068181878 -:1047800062461543D024E405254305604E683A4847 -:104790000468A268D01805680F2028400628F6D8BB -:1047A000E068181836060660334800680068181874 -:1047B00000680028F8D14F6A2F4C2568AA68D418E1 -:1047C00026680F243440042CF6D8EC681C192C4DB4 -:1047D0002560294D2C68E4681C19019A22602A681A -:1047E000D2689A181760244A1468A268D21815680B -:1047F0000F222A40062AF6D8E2689A18CA24E4054D -:1048000014604D6A1C4A11688A68D21814680F2215 -:104810002240062AF6D8CA689A18CE21C90529432B -:104820001160184A9A58002AFBDB03B0F0BCBB4663 -:10483000B246A946A046F0BD702294468CE64A686E -:1048400090460D480668B268D01807680F203840B7 -:104850000628F6D8F068181842461606066006487C -:1048600000680068181800680028F8D11AE70648A0 -:10487000DBE70548D9E7C046D85F010808000070AB -:104880000C000070F01000000B003200C005434225 -:104890005841C0B270470000A0231B0698422AD09E -:1048A00014D8802829D008D980235B0098422AD0C8 -:1048B0001B4B984209D01B4807E010281FD0402806 -:1048C00001D1194801E000281BD17047174B9842CD -:1048D0001BD007D9164B98421ED0164B98421DD1BB -:1048E0001548F2E7154B984211D0154B984211D15B -:1048F000A420C003E9E70020E7E71248E5E71248F3 -:10490000E3E70848E1E70648DFE71048DDE7A020D5 -:10491000C003DAE70348D8E70D48D6E70148D4E7F3 -:1049200006005200FF00520002005000030000F099 -:10493000040000F0050000F003005200090000A090 -:10494000010000F00500520001005000010052007B -:104950000200520010B50F4B1A683323D35C002BB2 -:1049600000D101BE0B4B1C68BC23E358226A94465D -:1049700063441B68002B0BDB074B1868FFF78CFFA9 -:10498000636801229A6063689B68002BFBD110BDAD -:104990000248FCE7D45F0108E05F01080200500014 -:1049A00010B50400FFF772FF002801D1134810BDB5 -:1049B000FBF700FE124B134A1A605C6000229A60FB -:1049C000DA60114B1A685423D35C002B10D003F02B -:1049D000FCFAFA21890004F031FA01000B4804F0D6 -:1049E0002DFA0B4BC1188020400009F05DFADEE77C -:1049F00080200021400009F057FAD8E70600520055 -:104A0000E05F01080001001CD45F010860F5900020 -:104A10009808000070B504000D00FFF737FF00286C -:104A200027D0002D27D0FBF7C5FD144B144A1A6080 -:104A300000225A609C60DD60124B1A685223D35CDE -:104A4000002B10D003F0C1FAFA21890004F0F6F926 -:104A500001000D4804F0F2F90C4BC1188020400011 -:104A600009F022FA06E080200021400009F01CFA3B -:104A700000E0074870BD0648FCE7C046E05F01085B -:104A800000010005D45F0108C0EA210148260000AA -:104A90000600520030B5134A11688B69C31ADB094E -:104AA00049691B01C91800230360812415682C5D26 -:104AB00004192360822415682C5D04192360832463 -:104AC00015682C5D04192360802415682C5D041979 -:104AD0002360836114688422A25C801803600B60E9 -:104AE0004B6030BDD45F010810B5072900D901BE65 -:104AF0001F2314009C4300D001BE104B1B689C690F -:104B0000001BC0095B690001181803290AD8046852 -:104B1000C9001F238B409C431F231A408A40224315 -:104B2000026010BD04394468C9001F238B409C43B8 -:104B30001F231A408A4022434260F2E7D45F0108F3 -:104B4000F8B506000C0015001F0006AB1A780729FF -:104B500000D901BE0F232900994303D1012D01D0B3 -:104B6000092D00D101BE012F00D901BE1F23110064 -:104B7000994300D001BE21003000FFF7B5FF336834 -:104B800001210A00A24093433940A14019433160FA -:104B9000074B1A688123D05C86193268A400723BE7 -:104BA0001900A1408A432B40A34013433360F8BD52 -:104BB000D45F0108072900D901BE012A00D901BE2E -:104BC00001238B40002A01D1436070478360FCE7DA -:104BD00030B50400072900D901BE0F231000984307 -:104BE00003D1012A01D0092A00D101BE8900074B57 -:104BF00018688123C05C00190468723B1D008D4059 -:104C0000AC4313408B402343036030BDD45F0108A5 -:104C100030B50300072900D901BE012A00D901BE21 -:104C2000074804688220205CC018046801231D0026 -:104C30008D40AC4313408B402343036030BDC046DE -:104C4000D45F010830B5082900D901BE012A00D976 -:104C500001BE846901231D008D40AC4313408B408D -:104C60002343836130BD000030B50300082900D91B -:104C700001BE032A00D901BE49000748046880200C -:104C8000205CC018046803231D008D40AC43134012 -:104C90008B402343036030BDD45F0108F8B5CE4696 -:104CA000474680B507000E001400002800D1B1E08F -:104CB000002A00D1B0E0072900D901BE2368012BEA -:104CC00000D901BE63680F221900914303D1012B63 -:104CD00001D0092B00D101BE237A1F22934300D0BB -:104CE00001BEE368032B00D901BE2369012B00D963 -:104CF00001BE6369012B00D901BE236A012B00D9D3 -:104D000001BE636A012B00D901BEA36A012B00D941 -:104D100001BEE36A032B00D901BE236B072B00D928 -:104D200001BEE369032B00D901BEA369012B00D9A1 -:104D300001BE01252B00B3407000103003229146C4 -:104D4000110081400B439C46344B984683234146D7 -:104D50000968C95CC9190B68624693439C46A369FC -:104D60002B40B340624613439C46E2694B461340D6 -:104D70001A008240634613430B60626831003800BA -:104D8000FFF726FF227A31003800FFF7ADFEE26818 -:104D900031003800FFF768FF226931003800FFF763 -:104DA00051FF626931003800FFF732FF43461A684D -:104DB0008423D25CBA1810687B3398469843236AE0 -:104DC0001D40636A5B009C46022361460B401D4305 -:104DD000A36A9B009C46042361460B402B43E16A77 -:104DE000C90018250D402B43216B4D014146294038 -:104DF0000B43B100FE25AD0029408B4003431360F7 -:104E0000226831003800FFF7D5FE0020C0BCB9464B -:104E1000B046F8BD0248F9E70148F7E7D45F01085A -:104E200001005A00084B1A68BC23D3581B181B6892 -:104E3000002B07DA0B0C00D001BE0904090C4160FD -:104E4000002070470148FCE7D45F010801008A0098 -:104E50000368002B08DAC2600B0C00D001BE090405 -:104E6000090C8160002070470048FCE701008A00BF -:104E700000290BD0074B1A68BC23D3581B181B689A -:104E8000002B05DAC3680B600020704701BEF1E714 -:104E90000148FAE7D45F010801008A00034B1B6850 -:104EA000002B00D07047014B1860FBE7046001083D -:104EB00070B5040023480068002840D021480568E8 -:104EC0002C2060432818FF2425001D4005601E0A81 -:104ED000344044601B0C83601B4B1C683323E35C31 -:104EE0009D4200D301BE184B1C68BA23E35A6B43A2 -:104EF000256AAC466344036143683425645DA3427C -:104F000000D301BE104C2468246A80335B01E4188E -:104F1000446183681D0C00D001BE1D0C00D001BE91 -:104F20001B041D0C2B43A360C2610162002383613B -:104F3000049B002B02D000229B5E838170BD01BECA -:104F4000BCE7C04604600108D45F0108F0B58FB02B -:104F5000041E44D06368032B00D901BEE36A002B12 -:104F60003FD0236B002B3ED007AA1300210061C95C -:104F700061C321C921C302AE230014333100A1CB88 -:104F8000A1C121CB21C10821535E0CAD2B80174B51 -:104F90001B681B8F079989B25B186B80089B0D9368 -:104FA0000B9B0A980095A26AE16AFFF781FF069BB6 -:104FB0000598002200920021FFF77AFF216B28005C -:104FC00003F078F80022AB5E002B06DB1F221340B3 -:104FD0001E3A9A401300064A13600FB0F0BD01BE9E -:104FE000B8E701BEBDE701BEBEE7C046D45F010819 -:104FF00000E100E0F0B504000800002A2DD01C49B3 -:10500000096800292BD01A4909682C256C430C1912 -:105010004543491901263500486885402D046068DC -:1050200086402769002F1CD0886900281BD13F6863 -:10503000002F1ADA17683F043F0C17603D431560D4 -:105040002569EA6001228A614B622369320C00D033 -:1050500001BE3604360C9E60F0BD01BECFE701BE36 -:10506000D1E70448F8E70448F6E70348F4E7C04608 -:105070000460010804028A0007028A0070B582B049 -:1050800004000023019300282BD02369002B2AD091 -:105090006369002B29D0236A002B28D06369DD685F -:1050A0002A0C0BD012041A601B682069204B1A6866 -:1050B000BC23D3581B181B68002B1ADB2D042A0CA9 -:1050C000002D0AD063691A601B68636A002B2AD01E -:1050D0009847002363620023A36163691B6802B0E1 -:1050E00070BD01BED1E701BED2E701BED3E701BE6C -:1050F000D4E701A9FFF7BCFE00280ED10198026891 -:10510000160CFF231340E2699A4207D99B00226ADA -:10511000D358002B02D0984700E0002631002069C8 -:10512000FFF780FECAE7A36A002BD4D09847D2E7E6 -:10513000D45F010810B50200064B1B68002B07D096 -:10514000044B18682C235343C018FFF797FF10BD7A -:1051500001BEF5E70460010870B50C001D4B1A682C -:105160003323D35C834230D9002930D00B68DB066F -:1051700001D019482AE03323D35C984200D301BE02 -:10518000144B1B681D6ABA229B5A58432D18134EA4 -:1051900035602368DA080021606805F022FA0021F2 -:1051A0002800FFF73FFE306822000021FFF750FE85 -:1051B000002801D00A4809E0084B18680021FFF7D1 -:1051C00031FE002802D0064800E0034870BD0248C6 -:1051D000FCE7C046D45F010803018A0008600108AB -:1051E00001018A0010B50B00002A05D0002A1DD04D -:1051F000002B15D10E4810BD0029F7D10D4A1168BA -:1052000033228A5C904200D301BE0A4A11680A6ABE -:10521000BA24095B4843121807490A601800EAE7F4 -:1052200006490B604A60FFF797FFE4E70048E2E7B2 -:1052300003018A00D45F01080860010830070008F4 -:10524000F0B5C64600B50C00194B1B68DE68336824 -:1052500083422BD947091F23184001258540002987 -:1052600018D000239846124B18680368002B17DAF1 -:105270007368BF00DF193B681D420FD0AB433B6032 -:1052800000250021FFF7CEFD002C0BD0280080BCAC -:10529000B846F0BDFBF781F98046E4E7054DF0E73D -:1052A000054DF1E74046FBF77CF9EFE7034DEDE7ED -:1052B00008600108020188000301880004018A00D7 -:1052C0000A4B1B68DB681A6882420BD941091F220E -:1052D00010401E3A8240586889000B581A4203D089 -:1052E000034800E0034870470348FCE708600108F2 -:1052F0000101880004018A0000018800074B1B6837 -:105300009B6CC340DB0700D401BE044B1B681B69C8 -:1053100010308002C3580F2018407047D45F010836 -:1053200003681B050CD5802282239B00C358DB0534 -:10533000DB0D934206D090239B00C15001207047A3 -:105340004022F1E70020FAE7F0B5002800D16CE137 -:10535000002900D16BE10B78022B00D901BE4B7BF9 -:10536000023BDBB2062B00D901BE8B7B002B04D0A5 -:10537000022B02D0032B00D001BE2123CB5C012BDA -:1053800000D901BE2823CB5C012B00D901BE0B78CC -:10539000012B07D98B7F002B09D04B68013B062BD3 -:1053A00005D903E04B68083B082B00D901BE8B6888 -:1053B000053B042B00D901BE4B69FF2B00D901BE70 -:1053C0008B69FF2B00D901BE8B7C002B06D00B789C -:1053D000002B02D18B68092B74D001BE964B4C6B0D -:1053E0001C4200D001BE954BCC6B1C4200D001BECC -:1053F0000B78022B6AD04B685D1E0B7F002B6AD0A6 -:1054000080235B028C68082C67D880242401234306 -:105410000F242C4023438024A404234303600C6BFB -:1054200003681B055BD580239C4200D301BE8C6BB7 -:1054300003681B0555D580239C4200D301BE4C6AEE -:1054400003681B054FD580239C4200D301BE0B7817 -:105450001B06C024A404234003644B7F002B44D0CC -:1054600040238C7C002C42D08024E40023430C7C1D -:10547000002C3ED08024640023434C7C002C3AD086 -:105480008024A4002343CC6A013C2404F0252D038E -:105490002C4023434D7B013D07242C4023438D7B2F -:1054A0002D0130242C40234383640B7B002B24D01C -:1054B00080246400CB7B002B21D10B78022B46D0BB -:1054C00000231EE08B7B002B88D086E78B7F002B90 -:1054D00091D1002591E7002394E7002497E740232A -:1054E000A2E74023A8E74023AEE70023B9E7002462 -:1054F000BCE70024C0E70024C4E70024DAE78023E7 -:105500009B001C438B685D1E0F231D402C43C0264F -:10551000B6008451FF244D692C408D692D04FF276E -:105520003F043D402C43C425AD004451CC6A85590D -:105530002B4003339C4201D3102C00D901BECB7FFA -:10554000002B07D00B78012B5FD0002503E08023D0 -:105550009B00D6E700254C7B013C072323402B43CF -:105560008D7B2D0130242C40234343640B7B002B87 -:105570004ED080256D008B685C1E0F2323402B438B -:105580000C78012C46D0002423438024A40003512E -:10559000FF230C6B2340C124A40003512023CB5CC8 -:1055A000002B3AD080239B0421240C5D012C36D0A3 -:1055B0000024234328240C5D012C33D000242343F2 -:1055C000FF244D6A25402B4303658B6B1C408123D0 -:1055D0009B00C4501A4B4C6B23401A4C03511A4B7E -:1055E000CC6B2340194C0351002A22D00023536076 -:1055F00013609360D3601362D3625363897F303347 -:10560000D154134B93630020F0BD80256D00A2E7B9 -:105610000025B0E780246402B6E70023C4E78024B5 -:105620006404C6E780246402C9E70A48ECE7094835 -:10563000EAE70020E8E7C04692F4FFFF8CF8FFFF9E -:105640006D0B0000C80F000073070000880F0000FA -:10565000EFCDAB000160AA00114B03600F3B036468 -:10566000002383640822FF32C021890042500431A4 -:1056700043500C31435043641139FF394250FD32DD -:1056800083500365074A8350074A8350074A835073 -:10569000074A8350074A8350074A83507047C046E1 -:1056A0000F000003C80E0000880E0000C80F0000A5 -:1056B000880F0000080F0000480F000003685B001F -:1056C0005B080360002904D000234B600B600B6271 -:1056D000CB627047F0B5C64600B58C680A68842373 -:1056E000C3580F252B40073DED1A2300AC4226D9A5 -:1056F0002B0024E055782D0216783543D6783606EF -:1057000097783F043E4335439827C55155792D027C -:1057100016793543A846D679360695792D042E4359 -:1057200045463543C551D218E41A8423C3580F2582 -:105730002B40073DED1A2300AC4200D92B00002B73 -:1057400000D183E0082BD5D0012B24D0022B26D00A -:10575000032B2BD0042B33D0052B3ED0062B4CD063 -:10576000072B5DD053781B0215782B43D5782D0677 -:105770009678360435432B439826835153791B0280 -:1057800015792B43D5792D0697793F043D432B435B -:1057900083510823C7E7167890254651C3E755780B -:1057A0002D021678354394268551BCE755782D0295 -:1057B0001678354394268551967890254651B2E760 -:1057C00055782D0216783543D678360697783F04FB -:1057D0003E43354398268551A5E755782D02167826 -:1057E0003543D678360697783F043E4335439826AE -:1057F000855116799025465195E755782D021678F2 -:105800003543D678360697783F043E43354398268D -:10581000855155792D02167935439426855182E7B5 -:1058200055782D0216783543D678360697783F049A -:105830003E4335439826855155792D0216793543D7 -:10584000942685519679902546516CE70A608C60C4 -:10585000002C0CD1F924E400035901229343035195 -:105860008A61CB69002B02D0CB690120984780BCAC -:10587000B846F0BDF8B50E004C69CA68C423C358D9 -:105880000F21194023008C421CD90B001AE0D825A7 -:10589000415911700F0A57700F0C9770090ED17093 -:1058A00045591571290A5171290C91712D0ED57127 -:1058B000D218E41AC423C3580F251D402300AC425C -:1058C00000D92B00002B6DD0082BE0D0012B1ED06F -:1058D000022B20D0032B24D0042B2BD0052B33D02C -:1058E000062B3ED0072B4BD0D821435813701D0AEE -:1058F00055701D0C95701B0ED37043581371190A07 -:105900005171190C91711B0ED3710823D0E7D0216E -:1059100041581170CCE7D42141581170090A5170D7 -:10592000C6E7D42141581170090A5170D02141585D -:105930009170BDE7D821415811700D0A55700D0CBA -:105940009570090ED170B3E7D821415811700D0A36 -:1059500055700D0C9570090ED170D0214158117100 -:10596000A6E7D821415811700D0A55700D0C95709D -:10597000090ED170D42141581171090A517197E76C -:10598000D821415811700D0A55700D0C9570090EF3 -:10599000D170D42141581171090A5171D021415857 -:1059A000917185E7F2607461002C0DD1F922D2006B -:1059B000835802218B4383500323B361336A002B46 -:1059C00002D0336A032098477461F8BD10B50028EF -:1059D00032D0002932D0002B32D05A62F922D200C4 -:1059E00083580324A34383500B78012B00D901BEB5 -:1059F0000B7A032B00D901BE4B68072B00D901BEDF -:105A00000B7B012B00D901BE01230A6813408A6871 -:105A10001203C024A401224013434A681204E02464 -:105A2000E40222401343CA681206802149040A4056 -:105A300013430360002010BD0248FCE70148FAE769 -:105A40000048F8E70400B2004B1EDBB2012B04D97A -:105A5000042902D0082900D001BE032A00D901BEC2 -:105A6000042920D008D801290DD002291AD1882371 -:105A70001B019C4660440AE0082913D198231B01AE -:105A80009C46604403E080231B019C466044002840 -:105A900008D0036806490B401204C02189020A405D -:105AA0001A430260704790231B019C466044EEE756 -:105AB000FFFFFCFFF8B5DE4657464E464546E0B5CB -:105AC000070008009A460AAB40CB1B789B460CABFC -:105AD0001B78111FC9B2FA2900D801BE59460439F2 -:105AE000C9B2FA2900D801BE591EC9B2012904D988 -:105AF000042B02D0082B00D001BE002E02D051464C -:105B000000291CD0002E02D05946FF2919D01B02B3 -:105B1000F02109010B4099460E9B5D6A1104C022D9 -:105B2000920211404B4619430143002E0BD10D9BAD -:105B3000DA07120C11433965002400200CE001BE85 -:105B4000E0E701BEE3E70022F4E703433B650134ED -:105B5000E4B2002D1FD128002100B44225D2164BFB -:105B6000984222D07B6C0422100018401A42F0D1D7 -:105B700053465B5C4A46134398465A461204C02378 -:105B80009B021A40434613430131B142DDD30D9AC3 -:105B9000D007000CD9E7012002F008FB013D002DE1 -:105BA00001D00020D8E70448D6E7F0BCBB46B24697 -:105BB000A946A046F8BDC0460200B20070B58AB042 -:105BC0000500181FC0B2FA2800D801BE002A34D040 -:105BD000686C042634000440064231D11B04C02006 -:105BE00080020340501E0004000C03438020C002CA -:105BF00003432B65002925D00E9B5E6A009102921B -:105C00000023079302330693200006E0012002F0F0 -:105C1000CDFA013E002E0ED02000069B022B0DD1A6 -:105C2000094B98420AD069462800FFF753FD002E21 -:105C3000ECD13000F1E70448EFE704480AB070BD4A -:105C40000348FBE72000F9E70200B2000400B200BD -:105C50000100B200F0B50400069D181FC0B2FA287A -:105C600000D801BE002A21D0666C042738003040DD -:105C700037421DD11B04C026B6023340561E3604DF -:105C8000360C3343802636033343236500290ED078 -:105C9000E9602A616A61059B2B620423AB61F922EA -:105CA000D200A35802210B43A35000E00148F0BDED -:105CB0000148FCE70400B2000100B20070B58AB0F0 -:105CC0000500181FC0B2FA2800D801BE002A34D03F -:105CD000686C042634000440064231D11B04C02005 -:105CE00080020340501E0004000C03438020000388 -:105CF00003432B65002925D00E9B5E6A0391059214 -:105D00000023089304330693200006E0012002F0EC -:105D10004DFA013E002E0ED02000069B042B0DD123 -:105D2000094B98420AD069462800FFF7A3FD002ED0 -:105D3000ECD13000F1E70448EFE704480AB070BD49 -:105D40000348FBE72000F9E70200B2000400B200BC -:105D50000100B20010B5030000290DD0426C0424EC -:105D600020001040144209D101390904090CC02255 -:105D700012031143196510BD0148FCE70148FAE719 -:105D80000400B2000100B20000230B604B608B6086 -:105D9000CB600B614B618B61026880231B06134350 -:105DA0000360704770B58D69AA682B6AFF26CC68BE -:105DB000B44384600C696442B443C4602D68013DFF -:105DC00003242C404969002901D080214900214346 -:105DD0000162002A33D01468611C67D0FF21214082 -:105DE00014792404C025AD022C40214380242406CC -:105DF0002143016451790904C024A4022140416473 -:105E00009468611C54D0FF212140147B2404C025D8 -:105E1000AD022C4021438024240621438164116972 -:105E2000002905D001391F240C4080210906214397 -:105E3000C164127D1204C02189020A400265002B50 -:105E400033D019684A1C35D0FF220A401979090459 -:105E5000C024A40221400A43802109060A430266A5 -:105E60005A791204C02189020A40426699684A1C84 -:105E700022D0FF220A40197B0904C024A402214039 -:105E80000A43802109060A4382661A69002A05D05E -:105E9000013A1F211140802212060A43C2661B7D6F -:105EA0001B04C02292021340036770BD0021A0E7CB -:105EB0000021B3E70022D2E70022E5E770B5050034 -:105EC00008220026002000E008328B790133DB0035 -:105ED000934216D3FF232B408C5CA342F4D12C0AAF -:105EE000FF2323408C18E479A342EDD18B185B7813 -:105EF000B342E9D38C18A478012CE5D11E00100020 -:105F0000E2E770BD70B50C0015001E00FFF7D6FF6C -:105F100000280BD021180B79AB704B796B708B7903 -:105F20002B70CB789B003360002070BD0048FCE7ED -:105F30008000B2008278520803231340012B07D05F -:105F4000022B07D0002B01D0002070470320FCE774 -:105F50000420FAE70420F8E70200407900021379F0 -:105F60001843D3791B069279120413431843002B6C -:105F700002DB0130C0087047033880231B0618433A -:105F8000F9E7437A0B6000230B7102334B71037AFC -:105F90005B0908D1013B8B60027A1F2313400B6120 -:105FA00002230B757047FF238B60FD3B0B73F3E7F8 -:105FB000C37A0B6000230B714B71837A5B0908D1A4 -:105FC000013B8B60827A1F2313400B6102230B7508 -:105FD0007047FF238B6000230B73F3E7C37B0B60D9 -:105FE00000230B7101334B71837B5B0908D1013BAB -:105FF0008B60827B1F2313400B6101230B7570475D -:10600000FF238B60FE3B0B73F3E7437B0B600023A6 -:106010000B714B71037B5B0908D1013B8B60027BE9 -:106020001F2313400B6101230B757047FF238B6007 -:1060300000230B73F3E703230B6000230B714B71F9 -:10604000012252428A600B610B75704710B50B003C -:106050001100012B0DD0032B09D00123002B12D0EE -:1060600083789A0607D45B0609D4FF2010BD00236D -:10607000F4E70023F2E7FFF784FF0520F6E7FFF7D8 -:1060800097FF0420F2E78378DA0605D4DB0707D40C -:10609000FFF7D1FF0120E9E7FFF7A0FF0320E5E7C5 -:1060A000FFF7B3FF0220E1E70068052907D8890060 -:1060B0000D4B5B589F46830601D5EC231360704758 -:1060C000C306FCD56C231360F9E70307F7D5BC239F -:1060D0001360F4E74307F2D53C231360EFE783072F -:1060E000EDD50C231360EAE740F200102823C35CCF -:1060F0001B09012098407047F0B5C64600B54F6AAD -:106100001B38430898460F263E400021002411E02A -:10611000012800D11024701C013363434D00AC46AC -:106120008C446546AD00AC46944443435B006046F6 -:1061300083600131032917D8CB005B1A3800D8409F -:106140000509430A032018401F232B40022809D0C9 -:1061500003D80028DCD10124DDE70328DBD1FA24B1 -:10616000A400D8E78024D6E7434658004044850081 -:106170000C3D5219906880BCB846F0BD10B5446A19 -:10618000816A4A0F032313400A0E1F2111400F2278 -:106190002240022B11D00BD8002B11D0012B11D192 -:1061A00080204000531C013148435843400010BD3B -:1061B000032B09D1FA200002F4E7FA200001F1E7ED -:1061C0001020EFE70020EDE70020EBE7836A190AD3 -:1061D0001F2001400F221A409B0406D408230132DD -:1061E000481C58435043400070474023F7E70623BC -:1061F00003600023037170470423036000230371CD -:10620000704702230360002303714371012252424D -:1062100082600373036103757047122303600023D8 -:10622000037143710122524282600373036103755B -:1062300070473423036000230371437101225242EB -:106240008260037303610233037570473E2303606A -:10625000002202713C3B437101214942816003737A -:1062600002610375704710B50368042922D009D86C -:106270000139C9B2022904D85B062BD51000FFF7FB -:10628000CCFF10BD0529FCD1D90507D4190609D4C6 -:106290005B060BD51000FFF7C0FFF2E71000FFF719 -:1062A000D5FFEEE71000FFF7C4FFEAE71000FFF7A5 -:1062B000A8FFE6E7190605D45B0607D51000FFF72F -:1062C000ACFFDEE71000FFF7B4FFDAE71000FFF7DE -:1062D00098FFD6E71000FFF794FFD2E7052303608D -:1062E0000023037170470000C36A002B10D0036BBA -:1062F000002B0FD00023026B13713A33CA5C1209D2 -:10630000333B1340052B0ED89B00154AD3589F46AC -:1063100001BEECE701BEEDE701235B42C363026B04 -:106320001360C26A136070470223C363036B0122C8 -:106330001A60C36A34321A60F5E74023C363036B03 -:1063400001221A60C36A04321A60ECE78023C36337 -:10635000036B3E221A60C36A01321A60E3E7C0464B -:1063600058F2001060230360002303717047F0B5FA -:1063700005000368042B07D01D200B5CFF2B2BD1DD -:10638000222828D80230F8E74369012040421860EB -:106390004B785B080F261E400023042B07D80124EE -:1063A0009C4030002040844201D00133F5E7032BAC -:1063B0001FD81F1D0020032807D8061D44002418DD -:1063C000A4008E5D16550130F5E76A69C95D11605C -:1063D00058001D3005E00020002802D06B690A5CDF -:1063E0001A60002806D000236A6913716A69537124 -:1063F00003E000206B69FF221A71F0BD70B5002226 -:1064000000240FE023001C33C65C53009B189B0044 -:10641000CB180125B5405D6025001D35455D1D701B -:1064200002340132032AEDD970BD10B5013B9C182E -:106430000855000A002BF9D110BD10B50400002347 -:10644000002003E00002E25C104301338B42F9D3E9 -:1064500010BD000030B587B004001D004B062AD4E3 -:106460001648CB0725D58B0710D5D368002B0DD048 -:106470001A7919780A9B0493012303930295FE333A -:106480000193002300932000FFF714FB0B4B98426D -:1064900001D000280DD10A9B049301230393029598 -:1064A000FE330193002300930022B7212000FFF761 -:1064B00001FB07B030BD0020D3E7C0468000B2002A -:1064C00030B587B004000800150019000C9B049338 -:1064D00000230393029001930B9B00930A9B0022DD -:1064E0002000FFF7E7FA002801D007B030BD0C9B71 -:1064F00000930023012229002000FFF7DFFBF4E7CF -:10650000F0B5DE4657464E464546E0B589B00590A3 -:106510000D0090469B4612AB1B789A4600230693CB -:106520005D4E002400273000139B99462DE0032088 -:1065300000E00420002108E00020FBE72218521AA6 -:10654000AA18D67806AA565401318842F6D84A4687 -:106550000292019006AA0092172202A98C46624478 -:1065600051460598FFF7ACFF00280BD17F00FBB226 -:10657000172202A98C4662441778049A17407A1EA3 -:1065800097411F430834444531D82B5D9B0716D4EF -:10659000631CEB5CE21CAA5C0492172202A98C46E5 -:1065A0006244002111702A1992789209012ABED002 -:1065B000022ABED0002ABFD05A461068BAE70600A9 -:1065C000002E16D0002E5CD12B199B780133DBB244 -:1065D00004935A46D364012B5BD93700B24600239B -:1065E00005961E00A8462500149B994617E02B4EE1 -:1065F000E6E742462B195B78BB42E3D02B199B7828 -:1066000002339B00E418A242F4D2244EDAE7E3609E -:106610005168380002F012FC60600136F6B2049B4B -:106620009E422DD2BA440435434658195B5D0F2172 -:10663000194001220023114207D15200D2B2013386 -:10664000DBB2042BF7D9154A059207683F0A0137D8 -:106650003F02B2005946096D8C58524622605A00DA -:10666000D3189B004A46D2184946CB5CA360936876 -:1066700023615368BB42CAD9E76001236360CCE75A -:10668000059E300009B0F0BCBB46B246A946A04604 -:10669000F0BD014EF5E7C0460600B2000700B200AB -:1066A000F0B587B006000D0010000E9C0A7909783D -:1066B00004940027039702936B79019303230093BB -:1066C00003003000FFF7F6F9002801D007B0F0BD55 -:1066D00029693000FFF73EFB0028F7D12B7D01949C -:1066E000002200920C9A0D993000FFF7B3FA061EB3 -:1066F000ECD1656A06E0012001F058FD013D002D56 -:106700000AD03000A369032BE0D0044B9842DDD0BF -:10671000002DF0D12800F5E70048F3E70200B200B1 -:1067200010B5002134E00B001033DB0100221A50B9 -:10673000CB01C318184C1C192260184C1C1922607C -:10674000822424011C192260842424011C19226043 -:10675000134C1C192260134C1C192260124C1C197A -:106760002260852424011C192260862424011C191E -:1067700022600E4C1C1922600D4C1C1922600D4C1D -:106780001C19226087242401A44663441A60013145 -:106790000329C8D910BDC046080800000C08000035 -:1067A00044080000480800004C080000640800008D -:1067B000680800006C08000010B586B00B001400DB -:1067C0008A69D16800290ED00A79097804940124D5 -:1067D00003941B780293FF23019300230093FFF798 -:1067E00069F906B010BD0148FBE7C0468000B20061 -:1067F00030B587B004000800150019000A9B049307 -:106800000023039302780292FF2201920093002258 -:106810002000FFF74FF9002801D007B030BD0A9BD8 -:1068200000930023012229002000FFF747FAF4E734 -:1068300010B584B00F236B4401241C708C69A36ACB -:10684000002B0DD01B7800920F226A44FFF7D0FF77 -:10685000002805D1A36B0F226A4411780B401370F6 -:106860000F236B441878431E9841C0B204B010BD8A -:10687000F0B5002808D085696B6893421DD92E6D4C -:10688000002E03D0002004E001BEF4E70C4813E022 -:106890000130EB6C83420ED98300F458E3686768DB -:1068A0007B432768BC466344BA42F1D39A42EFD295 -:1068B0000C60002000E00248F0BD0248FCE7C04642 -:1068C0000600B2000400B200F0B58BB006900C00D8 -:1068D00015000793002928D0002D30D0A6697769CC -:1068E0000023099331682800FFF7A7FD020009A9DA -:1068F0002000FFF7BDFF002F1BD03A79FF2A1AD0E6 -:10690000104B984219D0002811D1099B197A079B86 -:106910000493012303932378029301923368009335 -:106920002B000698FFF7C6F80AE001BED4E73978D5 -:10693000EDE7054804E0044802E0034800E00148B0 -:106940000BB0F0BD0400B2008000B200F0B5DE462E -:1069500057464E464546E0B5C9B005000C00160046 -:106960009946002913D02EAAAE4B19881180997828 -:1069700091702DAA19881180997891702CAA198884 -:1069800011809B789370636B9846002305E001BEED -:10699000E9E72FA90022CA540133632BF9D94A46EB -:1069A00031002800FFF750F84346002B13D0529BCC -:1069B00002932FAB01933823009333002EAA414654 -:1069C0002800FFF76DFE071E06D12FAB9B79062B23 -:1069D00002D9954F07E0944F002F04D12FAB1B78BD -:1069E000532B08D0904F380049B0F0BCBB46B2469C -:1069F000A946A046F0BD2FAB5B78462B01D08A4F4D -:106A0000F1E72FAB9B78442B01D0874FEBE72FABFF -:106A1000DB78502B01D0844FE5E72FAB1B79052B9A -:106A200000D8FCE02FAB5B79012B01D07E4FDAE779 -:106A3000049704AB2DAA2FA97C48FFF763FA0597AA -:106A400005AB2CAA2FA97A48FFF75CFA794B98423C -:106A500000D1A0E000230693FF2006AB2EAA2FA9A9 -:106A60000002FFF74FFA071EBDD1A368002B00D12B -:106A700095E0E368002B00D193E02369002B00D15F -:106A800091E06369002B00D18FE0E369002B00D116 -:106A90008DE0236A002B00D18BE0A36A002B00D18C -:106AA00089E0529B02932FAB9A460193069B009379 -:106AB00033002EAA41462800FFF7F2FD070020A967 -:106AC0005046FFF79BFC5046FFF734FA20605046D3 -:106AD000FFF742FA60605046FFF708FB6062E0682B -:106AE000FFF785FB2069FFF787FB0123A363A06AFB -:106AF000FFF7F4FB51462000FFF7F6FBE069FFF7D4 -:106B000031FC5046FFF73AFB60645046FFF75EFBEE -:106B1000A064A3689B461A0049465046FFF796FAC0 -:106B200081462368042B48D0206AFFF76AFB20AA1D -:106B30002FA92000FFF71BFC002809D0431E2FA916 -:106B4000CA5C01239340A36120AAFFF7D5FA206411 -:106B5000236D002B00D146E7529B02932FAB01938C -:106B6000059B009333002CAA41462800FFF798FDAF -:106B7000071E00D037E720AB0293529B019300968B -:106B80002300059A2FA92800FFF7BAFC2A4B984248 -:106B900041D0070027E70023E36423655AE701BEDD -:106BA00067E701BE69E701BE6BE701BE6DE701BEA5 -:106BB0006FE701BE71E701BE73E752463833D15C1F -:106BC000529B0093330022002800FFF743FC071E6E -:106BD00003D0002F0FD00120B0E7529B029307ABE8 -:106BE0000193049B009333002DAA41462800FFF730 -:106BF00057FD0700EDE75A46494607A8FFF754FA44 -:106C0000226A494607A8FFF72EFB20AA07A9200001 -:106C1000FFF7ADFB90E70023E3642365E3E6024F53 -:106C2000E1E6C04670F200100500B20084FF0000EB -:106C300081FF00008000B2000600B200F0B5DE4621 -:106C400057464E464546E0B583B0061E904600D1F5 -:106C5000ACE0002900D1B1E04F68002F00D1AFE0D7 -:106C6000002A00D1AEE00B689946002B03D0002526 -:106C700000239A465DE0544899E001BE70E0524816 -:106C800007E0082B04D198231B019B46B3440CE07A -:106C90004D485346002B00D189E0B2200004184330 -:106CA00085E080231B019B46B3445B46002B00D14B -:106CB0007AE01B68454A1340227A1204C0218902F7 -:106CC0000A4013435A4613606368042210001840B8 -:106CD0001A4257D1A3691B68013B032B00D901BE9F -:106CE000002825D163689B0722D52169E06802F05E -:106CF0002BF9002900D001BE236980225202934261 -:106D000002D35A1E1A4200D001BE21005846FFF796 -:106D100049F80223FF3362681340227A1204C0212B -:106D200089020A4013438022120613435A46136015 -:106D30000135A94536D9AB00FC58002CF8D0227893 -:106D4000531EDBB2012B04D9042A02D0082A00D03A -:106D500001BE237A032B00D901BEA369002B8CD07E -:106D60002378042B09D08CD8012B9AD0022B86D102 -:106D700088231B019B46B34497E790231B019B4646 -:106D8000B34492E7237A2278A1694046009030000C -:106D9000FFF7DCFD00289DD00823AB4052461A4384 -:106DA000924697E7002074E7074872E7064803B069 -:106DB000F0BCBB46B246A946A046F0BD0248F6E785 -:106DC0000148F4E70048F2E70400B200FFFFFCFFCF -:106DD000F0B5D6464F464646C0B507008846140073 -:106DE00099469608194B9A4203D8002E08D10126DD -:106DF00006E0174E04E0A41B00281CD0002C1AD07B -:106E0000FA218900300002F019F88246FA2189003F -:106E1000300002F099F88DB2504601F0D1F9280007 -:106E200001F0D2F94A4641463800FFF701FDB4426D -:106E3000E1D80024E0E7002805D10020E0BCBA46F4 -:106E4000B146A846F0BD0348F8E7C04603093D0037 -:106E500040420F000200B200F0B5DE4657464E46F3 -:106E60004546E0B589B082460F0090469946129C8F -:106E7000139B9B460023079300290BD04B46002B06 -:106E80000AD0BA69956843461B195268934205D8DF -:106E90002D4817E001BEF1E701BEF2E72A4809B02C -:106EA000F0BCBB46B246A946A046F0BD002802D1C0 -:106EB000296900293AD100283CD00028EFD1A41B31 -:106EC000B044B144002CEAD0260080235B029C42EF -:106ED00000D91E00BB691B68002207A94046FFF7C6 -:106EE000A4FABB692A7929785846049000200390B7 -:106EF00038780290687901901B68009307AB504680 -:106F0000FEF7D8FD0028D1D1A9684B1CCED02A7B32 -:106F1000C9B25B4604930023039338780290FF20A4 -:106F2000019000935046FEF7C5FDBFE75046FEF7BF -:106F300011FFC0E72B7D5A46009232004946504669 -:106F4000FEF7BCFEB9E7C0460400B200F0B5DE466D -:106F500057464E464546E0B589B082460F001600BA -:106F60009846129D00230793002910D04346002B1A -:106F70000FD0BA69536A9946136A9B4673195268CF -:106F8000934208D83F483B004F46994618E001BE5F -:106F9000ECE701BEEDE73B4809B0F0BCBB46B246AA -:106FA000A946A046F0BD2C00139A49465046FFF76B -:106FB00003FC00280FD00028EED1A04436192D1B69 -:106FC000002DE9D03900300001F0BEFF6B18BB4244 -:106FD000E9D37C1AE8E74B469B691B68002207A9A6 -:106FE0003000FFF722FA4B469B695A461279594600 -:106FF0000978139804900020039048460078029086 -:107000005846407901901B68009307AB5046FEF745 -:1070100051FD002803D15B4699684B1C12D1002812 -:1070200003D15B46196900291DD100281FD0002813 -:10703000C1D14B469B699A6C139B49465046FFF75A -:10704000C7FEB8E75B461A7BC9B2139B04930023C3 -:107050000393484600780290FF2001900093504629 -:10706000FEF728FDDBE75046FEF774FEDDE75B46E2 -:107070001B7D139A0092220041465046FEF79EFD6A -:10708000D5E7C0460400B200F0B5DE4657464E468E -:107090004546E0B587B007000E0015000093109A32 -:1070A0009046EB18013B01930023059304930029BC -:1070B00048D0B3699B469B699A465B461B6C02931A -:1070C0005B465B68019A93423ED80023994603933E -:1070D000504C504B9C4200D194E04B46E81A51462C -:1070E00001F032FF002900D08BE0039B019A93420C -:1070F00044D3484B9C4200D184E0019B4A46981AF5 -:107100000130514601F020FF002943D1009B002BA4 -:1071100078D02A0004A93000FFF7AAFB041E6AD128 -:10712000049A13690293D3689A46116853685246C9 -:1071300053435B18013B9946019B4B452ED2019B63 -:1071400099462BE001BEB4E72A0004A93000FFF7FE -:107150008FFB041E0AD1049B1A689146DA68924696 -:107160005B6853434B44013B039302E00023994681 -:107170000393009B9A45ACD9264CAAE704A930009A -:10718000FFF776FB041EB4D1049B1A689146DB68B6 -:107190009A46AEE71F4C35E0002CB7D14D45B5D22D -:1071A000424631003800FFF707FB041EF4D15B466E -:1071B0001B68002205A92800FFF737F9434605AAF6 -:1071C00031003800FFF780FB041EE5D1029B5A0115 -:1071D000D21A92009C466244D200434631003800E5 -:1071E000FFF7F6FD009B534508D9554452469B1ABC -:1071F00000930400D0E7019B9946CFE70094040078 -:1072000084E7044C200007B0F0BCBB46B246A94658 -:10721000A046F0BD0400B20010B5002814D1072923 -:107220002ED8FF2A2ED81A4B186883687824005B62 -:107230001B188900C9180B68164803401206120C67 -:107240001A430A60002002E0012801D0124810BD54 -:107250000F2919D880235B029A4217D20C4B186869 -:1072600083687A24005B1B188900C9180B680B48D7 -:10727000034012020A4802401A430A600020E6E76F -:107280000548E4E70448E2E70348E0E70248DEE7B0 -:10729000D45F0108FF00FFFF01004A00FF0000FF6C -:1072A00000FFFF0030B51A4B1B6842241C5D84426E -:1072B00028D9032928D8002901D1072A0FD9012963 -:1072C00005D0022906D0032907D012481BE00F2A57 -:1072D00005D9F6E7032A02D9F5E7002A16D1752465 -:1072E0001D5DA940723CAC40214074241C5D2240CD -:1072F0009B680A43C02189008C4660448000C250CC -:10730000002000E0034830BD0248FCE70148FAE7EE -:10731000D45F010801004A00F0B5032835D80028E1 -:1073200001D107290FD9012805D0022806D003284A -:1073300007D0184828E00F2905D9F6E7032902D914 -:10734000F5E7002923D1144B1C687723E35C032263 -:1073500015009D402B007425655D7626A65D2F00E7 -:10736000B7403B437526A65DB040B240104018437D -:10737000294008438021090608438023DB00A268D6 -:10738000D050A268D3580020F0BD0248FCE7014865 -:10739000FAE7C04601004A00D45F010810B503288F -:1073A00028D8002801D107290FD9012805D00228A3 -:1073B00006D0032807D011481BE00F2905D9F6E7AE -:1073C000032902D9F5E7002916D10D4B1A68752358 -:1073D000D45CA040723BA34018407423D35C194096 -:1073E000926801438020C00501438023DB00D15017 -:1073F000002010BD0148FCE70048FAE701004A0000 -:10740000D45F0108064B1B681A6888215B58D218A4 -:10741000136804490B400002034313607047C046E1 -:10742000D45F0108FF00FFFF044B1A68136888212E -:1074300052589B181868000AC0B27047D45F010800 -:10744000012800D901BE054A136805490B40000216 -:10745000C021890008401843106070470000274091 -:10746000FFFCFFFF10B5074B984200D901BE06494B -:10747000064A8B58064C2340024C20401843885043 -:1074800010BDC046010300000000264004050000B6 -:10749000FEFCFFFF10B50449044A8B58044C2340FE -:1074A000000403438B5010BD00002640040500007B -:1074B000FFFF00FF0349044A885880231B0603434B -:1074C0008B50704700002640040500000349044A21 -:1074D0008B585B005B088B507047C046000026400D -:1074E0000405000010B50300032800D901BE054CB7 -:1074F000A021C900605803229043134018436050F4 -:1075000010BDC04600002640064B1B681A68882143 -:107510005B58D21813681B021B0A00060343136052 -:107520007047C046D45F0108044B1A68136888216D -:1075300052589B181868000E7047C046D45F010867 -:10754000064B1B681A688C215B58D21813680449D3 -:107550000B400002034313607047C046D45F01082C -:10756000FF00FFFF084B1A684023D35C834209D910 -:10757000064AE0308000815880231B060B4383506D -:10758000002070470248FCE7D45F01080000264055 -:1075900001004A0000280ED0094B1A684023D35C32 -:1075A00083420AD9074AE030800083585B005B08B9 -:1075B0008350002070470448FCE70348FAE7C046C0 -:1075C000D45F01080000264001004A0010B50B4BB3 -:1075D0001A684023D35C83420CD90F290CD8084C7D -:1075E000E030800003590F229343114019430151A9 -:1075F000002010BD0348FCE70248FAE7D45F010809 -:107600000000264001004A00064B1A684023D35C64 -:10761000834200D801BEE0308000034BC3580F20E6 -:1076200018407047D45F01080000264010B50C4B8D -:107630001A684023D35C83420DD903290DD8094C25 -:10764000E03080000359302293430901114019436F -:107650000151002010BD0448FCE70348FAE7C0468A -:10766000D45F01080000264001004A00074B1A6859 -:107670004023D35C834200D801BEE0308000044B3D -:10768000C3581B09032018407047C046D45F010847 -:1076900000002640034B1B6904201840431E9841FC -:1076A000C0B270470000274010B504000A4A1368B2 -:1076B00008210B43136003E0012000F077FD013C3B -:1076C000FFF7E8FF002801D1002CF5D1002C01D0F4 -:1076D000002010BD0148FCE70000274002004A00DE -:1076E00000207047002070470349044A88588023CF -:1076F0001B0603438B507047000026400C0500001A -:10770000084AC0235B00D3580122100018401A42D7 -:1077100006D10449044A8B585B005B088B507047C4 -:107720000248FCE7000026400C05000003004A0068 -:10773000064A074BD35801229343002800D1002268 -:1077400013430249024A8B507047C046000026404E -:107750000C050000014B18687047C0460C6001081A -:10776000084AA623DB00D25803231340032B06D07C -:10777000044AA623DB00D35801201840704702209A -:10778000FCE7C0460000264010B5FFF7E9FF0228DD -:1077900001D0002010BD014B1868FBE71060010804 -:1077A000134B1A683E23D35C83421DD9042904D9A4 -:1077B0004B1EFF3B9BB2132B18D8FF290CD91F235C -:1077C00019400C4A0300C0339B009950D030800010 -:1077D00004238350002008E007231940D0308000A4 -:1077E000044BC150002000E0034870470248FCE70A -:1077F000D45F01080000264001004A0003000C4A43 -:1078000011683E228A5C824200D801BE1A00D03242 -:1078100092000849505807221040042800D07047B1 -:10782000C0339B005B581B300340E1301843F6E740 -:10783000D45F01080000264010B52A4B1A683E2389 -:10784000D35C834200D801BEFFF7D8FF88235B00DA -:10785000984231D012D802282BD004D903280BD15A -:10786000FFF73EFF3CE0002839D0012802D1FFF7A6 -:1078700071FF35E0002033E0002031E089235B0018 -:10788000984229D01423FF33984206D1164A174B49 -:10789000D358002B1DDB002022E01223FF33984237 -:1078A00005D1FFF7F7FE002810D1002018E00020D6 -:1078B00016E0FFF769FF13E00B4A0D4BD358002B7E -:1078C00001DB00200CE08020000209E080200002A3 -:1078D00006E08020000203E0FFF704FF00E0054817 -:1078E00010BDC046D45F0108000026403C050000E2 -:1078F0000C05000000127A00024AB023DB00D058C9 -:10790000C00F704700002640034AB223DB00D35863 -:10791000012018407047C046000026400B4BB120A4 -:10792000C0001A580A491140802292050A431A5091 -:10793000B021C9005A58520052085A5005495A58A5 -:10794000520052085A5000207047C046000026409E -:10795000FFFFFFCF8C05000070B5041E00D175E05D -:10796000FFF7CAFF002800D074E08023DB02226802 -:107970009A4200D301BE23689B039B0BE279002A45 -:1079800000D165E08022520413433349B022D20073 -:107990008B50A28880239B019A4200D301BE22898A -:1079A00080239B009A4200D301BEA388DB04DB0C3A -:1079B0002289120429490A4013432749284A8B5037 -:1079C000A37A0F2B00D901BEE37A0F2B00D901BE99 -:1079D000A28980239B019A4200D301BEA27A0F2381 -:1079E0001340E17A0901FF220A401343A2891202DF -:1079F0001C490A401343A27B1207C02189050A4093 -:107A000013431549B122D2008B50A379042B00D91E -:107A100001BE228A80239B009A4200D301BE0E48F9 -:107A200011494358114A1340A2791202E025ED0092 -:107A30002A401343435043580D4A1340228A1204EC -:107A4000064C224013434350002070BD01BE87E71F -:107A5000002299E70748F8E7000026400000FF01F0 -:107A60008405000000FF1F008C050000FFF8FFFFE9 -:107A7000FFFF00FE03004A0010B5002832D01A496B -:107A8000B023DB00CB589A03920B02608022520491 -:107A900013405A1E9341C371144BCB58DA04D20CD5 -:107AA00082801B0CDB05DB0D0381B123DB00CB588F -:107AB0000F2214001C4084721C092240C2721A0A50 -:107AC000D204D20C82811B0F032213408373084B14 -:107AD000CB58190A04320A4082711B0CDB05DB0DFE -:107AE000038210BD01BECAE70000264084050000E5 -:107AF0008C05000070B505002649274A8858802368 -:107B00001B0603438B502C0003E0012000F04EFBCA -:107B1000013C204AB223DB00D3585B0701D4002C80 -:107B2000F3D11C48B121C90043581C4A1A40802394 -:107B30009B0513434350002D01D0002C0CD0154958 -:107B4000B022D200885880231B0603438B5003E0E9 -:107B5000012000F02BFB013CFFF7D6FE002801D1ED -:107B6000002CF5D1002D01D0002C0ED00949B122F6 -:107B7000D2008858C0239B0503438B50002D02D0B0 -:107B8000002C05D00025280070BDFFF7C7FEF5E7E3 -:107B9000034DF8E7000026408C050000FFFFFFCFF3 -:107BA00002004A000138074B1A683F23D35C834226 -:107BB00000D801BE8130FF308000034BC058C00F99 -:107BC0007047C046D45F01080000264070B50138F8 -:107BD0000D4B1A683F23D35C834201D80B4870BD1C -:107BE0000B4D8130FF30840063590A4A1A408023CC -:107BF0009B0513436351012000F0D8FA63595B00E1 -:107C00005B0863510020EAE7D45F010801004A00E5 -:107C100000002640FFFFFFCFF8B504000D002F4BFA -:107C20001A683F23D35C834201D22D48F8BDFFF789 -:107C3000B9FF002845D1AA78931EDBB20E2B42D89B -:107C40006B78002B41D0122B41D82F783E00E97879 -:107C5000002932D0133086423BD300292FD0382060 -:107C6000864238D8013C2879022816D07F20384037 -:107C70001B02F8267601334003431204F820400328 -:107C800002401A43C90680231B05194011432300F3 -:107C90008133FF339B00134A995012498134FF34DA -:107CA000A4006358104A13402A791207C0208005A7 -:107CB0000240134363500020B8E71620CBE7702042 -:107CC000CEE70A48B2E70648B0E70548AEE7044801 -:107CD000ACE70348AAE70248A8E7C046D45F01081A -:107CE00001004A0000002640FFFFFFCF03004A00CA -:107CF0000138114B1A683F23D35C83421AD9813073 -:107D0000FF3080000D4BC3587F221A400A70180ABA -:107D10001F2210404870180C02408A708022120501 -:107D20001A40501E8241CA701B0F032213400B7170 -:107D3000002070470248FCE7D45F0108000026409D -:107D400001004A0070B50D00461E294B1A683F23FA -:107D5000D35CB34249D9274933008133FF339B00B9 -:107D600058588022120602435A502C0003E001208A -:107D700000F01CFA013C33009133FF339B001D4A95 -:107D80009B58DB0701D4002CF1D1002D01D0002C31 -:107D900017D033008133FF339B00164A9A58120FD5 -:107DA00003231340022B01D0002070BD114A8136FD -:107DB000FF36B600B158C0239B050B43B3500020DB -:107DC000F3E70C4C8136FF36B60033590A4A1A40A5 -:107DD00080239B0513433351012000F0E7F9335909 -:107DE0005B005B0833510548DFE70548DDE7C04627 -:107DF000D45F010800002640FFFFFFCF02004A00C9 -:107E000001004A00F0B587B01422002101A802F059 -:107E1000E8FB01A8FFF730FEFFF76EFD002807D052 -:107E200001AB9B7B022B01D0012302E0002300E089 -:107E3000002301AA019E94882000D279002A1FD035 -:107E40000225002B1ED000281DD00020FFF7F4FCD7 -:107E500032000023002101F087F906000F002A00FC -:107E600000232000002101F07FF902000B00CC0765 -:107E70004008204349088019794101F055F902E092 -:107E80000125DEE7002007B0F0BD0000F0B585B0A9 -:107E900004002E4B1B683F229A5C002A53D0002816 -:107EA00052D03E229B5C834200D801BE274B1A6809 -:107EB0003F23D35CA34201D2002045E005220021EC -:107EC00002A802F08EFB02A92000FFF711FF20009C -:107ED000FFF768FE002807D002AB1B79022B01D008 -:107EE000012302E0002300E0002302AA167857785D -:107EF00038009578002B24D0002F25D0002D01D1FB -:107F0000280021E02000FFF797FC32000023002129 -:107F100001F02AF9009001912A0000233800002185 -:107F200001F022F902000B00CC0740082043490869 -:107F3000009C019D24184D412000290001F0F4F817 -:107F400002E0002000E0002005B0F0BDD45F010891 -:107F500010B504000D4B1A683E23D35C834200D851 -:107F600001BE002C09D0094B1A683F23D35CA34201 -:107F700008D22000FFF760FC10BDFFF743FF002888 -:107F8000FAD1F6E72000FFF781FFF8E7D45F010898 -:107F900070B50600FFF76AFB05000124844030003D -:107FA000FFF732FBFFF7D4FF64082018E84070BDEC -:107FB00010B50020FFF7ECFF0400FFF7B5FA411CF5 -:107FC0004808001900F03AFF10BD10B5FFF7F0FFA8 -:107FD0000400FFF729FA411C4808001900F02EFFA1 -:107FE00010BD000030B5194B1B682C229A5C1F2A6B -:107FF00015D884080722250095432A1E22D1033272 -:108000001040C000FC3282401B682033A4001B19C2 -:108010001C688140614011406140196012E03C22BF -:108020009A5E0BB29A420ED007230340074A1268A9 -:10803000126880200006184380239B019C466144FF -:108040008900885030BD01BEEEE7C046D45F01080C -:1080500010B50A4B1B682C229A5C1F2A0AD91A6891 -:1080600080239B019C46614489008B585B005B0820 -:108070008B5010BD998FFFF7B5FFFAE7D45F010869 -:10808000094B9A68094B9A4204D010308000084B83 -:10809000C0587047002905D01030044A8300985812 -:1080A0009950F6E701BEF7E700ED00E00000000898 -:1080B00000000010F0B5C64600B582B0041E019164 -:1080C0004FD04368032B00D901BE0023E05E002897 -:1080D00025DA254E0023E25E6168002A24DB93083E -:1080E000224DC0339B005859804603273A40D200A6 -:1080F000FF208446070097404046B84307008901A7 -:1081000060460840904038435851194B9A68194BC3 -:108110009A4220D0300002B080BCB846F0BD6188E1 -:10812000FFF760FF0026D5E70F231340083B9B08AD -:1081300006339B000E48844663445F680320024078 -:10814000D200FC3005009540AF43890108409040C3 -:1081500038435860D9E70023E05E0199FFF790FFAC -:10816000D8E7014ED6E7C0460100560000E100E026 -:1081700000ED00E00000000810B5040006E0084B28 -:108180001868F8F701FA074B9C46644480231B02E9 -:108190009C42F4D8044B18686043F8F7F5F910BD19 -:1081A0008C0000080080FFFF9000000810B5034B12 -:1081B0001B785843F8F7E8F910BDC0469400000852 -:1081C00010B5FFF7D9FF10BD10B5FFF7EFFF10BDD9 -:1081D000054B802212069A649B6C002B01DB002069 -:1081E00070470248FCE7C0460000274003004600F5 -:1081F0000D4B8022120198585B68FF221A4202D070 -:108200008023DB021843084A084BD3581B0402D0D2 -:1082100080235B021843044A044BD3581B0C02D042 -:1082200080239B021843704700002640040800008A -:10823000FEE7000010B50A4B0268DA6142681A6274 -:1082400082685A62C2689A620269DA6242691A6393 -:1082500082695A63C2699A63FFF7EAFF10BDC0469C -:1082600038070008F0B5C64600B5002833D01923FA -:108270008B429B415B42314C22681668AC27D25B33 -:10828000B61832680325AA432B401A433260266889 -:108290003268F65B92191768294E374017602768D5 -:1082A0003A689046AE229446BF5A3A004244176854 -:1082B000AF433B431360226813686446125B9B180C -:1082C0001A6832401A60002807D010291DD92129C8 -:1082D00027D801221AE06423CAE7184B1B685522ED -:1082E0009A5C8A421FD256229A5C8A421DD2572239 -:1082F0009A5C8A421BD258229A5C8A4219D259222D -:108300009B5C8B4217D3553A00E000220B4B1B6855 -:1083100059680B680F20834313430B6080BCB84639 -:10832000F0BD0222F2E70022F0E70122EEE702228E -:10833000ECE70322EAE70522E8E7C046D45F01083C -:10834000FFFCFFFFB0235B055B78002B04D0B0235C -:108350005B055878C0B270472120FCE7B0235B056D -:108360009B899BB2002B04D0B0235B05988980B217 -:10837000704780204000FBE770B5FFF7EFFF8023D8 -:108380005B0098421AD0B0204005174BC358174ADB -:108390001340174C21680A689C25495952181168E6 -:1083A000C025AD0029400B43136022681368A0214B -:1083B00052589B180F4A82581A6070BD0C4B1A68AD -:1083C00011689C20125889180A680F24A2439A3811 -:1083D00002430A601B681A68A0215B58D218136810 -:1083E000A34303431360E8E748180000FFFCFFFFC6 -:1083F000D45F01084418000070B5FFF7AFFF802379 -:108400005B0098421AD0B0204005134BC358134A62 -:108410001340134C21680A689C2549595218116869 -:10842000C025AD0029400B43136022681368A021CA -:1084300052589B180B4A82581A6070BD084B1A6834 -:1084400013689C2152589B181A68074911408022D2 -:10845000D2010A431A60F0E750180000FFFCFFFF4A -:10846000D45F01084C180000FF8FFFFF10B5FFF725 -:1084700075FF80235B00984212D0B02252050F4B4B -:10848000D3580F4A13400F4A11680A689C200958B4 -:1084900052181168C020800001400B43136010BDCA -:1084A000084B1A6813689C2152589B181A68064991 -:1084B0001140C022D2010A431A60F0E71C180000E4 -:1084C000FFFCFFFFD45F0108FF8FFFFF70B5FFF7D0 -:1084D00045FF80235B0098421BD0B0204005184B1D -:1084E000C358184A1340184C21680A689C254959FA -:1084F00052181168C025AD0029400B431360226853 -:108500001368A02152589B18C122520182581A6048 -:1085100070BD0D4B1A6811689C20125889180A68A2 -:108520000F24A243993802430A601B681A68A021ED -:108530005B58D2181368A34303431360E8E7C046AF -:1085400024180000FFFCFFFFD45F010870B5204B2A -:108550001A6813689C2152589B181C68C02000019F -:108560000440FFF7FBFE80235B0098421FD01849B0 -:10857000086803689C2280581B181868154D28400D -:1085800018600868036880581B181D68C0263601EB -:108590003000A04305431D6009680B688A589B188A -:1085A00018683040001B431E9841C0B270BD0020C7 -:1085B000FCF7A4FE0400FFF7C5FE222803D8002C18 -:1085C00003D10120F2E70120F0E70020EEE7C046EA -:1085D000D45F0108FFF3FFFF70B584B006000D0003 -:1085E000022804D9042802D0032800D001BE6B1E43 -:1085F000DBB2012B04D9042D02D0082D00D001BE1E -:10860000B300294A9C58042D1FD0012D1FD0022DE4 -:1086100033D026006469002CFBD1002034E064696B -:10862000002C18D0214B984213D0A3682B42F6D1CE -:10863000E3681A6802925B6801930393290002A819 -:10864000236898471A4B1C60E9E70020E8E7002000 -:10865000E6E7012DE9D1012D01D004B070BD134B27 -:10866000984204D0B600134B0022F250F5E7B60052 -:108670000F4B1A680F4BF250EFE70D4B1E68002EA0 -:10868000CBD03669C9E73669002EE6D0B3682B42F5 -:10869000F9D1F3681A6802925B6801930393290089 -:1086A00002A833689847EEE754600108FF004200D3 -:1086B000506001083C600108F0B5C64600B50700EF -:1086C000012800D901BEFFF73DFE85B2FFF746FE47 -:1086D00006000020FCF712FE041E17D180235B0069 -:1086E0009E4201D02A4C12E0222D42D8294B1B6811 -:1086F000586829494358294A134098463A06802326 -:108700005B041A4043461343435000E0204C80234F -:108710005B009E422FD080235B009E4225D01D4BE4 -:108720001A683323D35C002B00D101BE194B1B68A0 -:108730001D6A80235B009E4220D0002F24D0184A5F -:1087400001212800FCF784FB00280ED1114B1A6888 -:10875000BC23D3585B191B68002BF7DBEB681B0E9F -:108760001B06A0221206934210D0200080BCB846FF -:10877000F0BD074CCBE7222DD1D8CCE7002F01D09C -:10878000084ADDE7084ADBE7084AD9E70400ECE7D6 -:1087900004004200D45F010818F00000FFFFFFFE54 -:1087A0000300000C01010030010000300100000C4A -:1087B00000283DD01F4B1B6888229A5819688C46A8 -:1087C0006244126802628C229A5819688C4662448C -:1087D0001268426246229A5C002A28D0E0229968F8 -:1087E0008A58D20623D5DA68F223DB01D358036016 -:1087F000104B1B68F022D201D9688A5842600E4A99 -:10880000D9688A5882600D4AD9688A58C2600C4A71 -:10881000D9688A5802610B4AD9688A5842610A4A63 -:10882000D9688A588261DA68084BD358C3617047A7 -:1088300001BEBFE7D45F010804780000087800009B -:108840000C78000010780000147800001878000000 -:1088500010B500283BD01F4B19680A6888240959B5 -:108860005218016A116019680A68043409595218CB -:10887000416A11601B6846229A5C002A26D0E022D9 -:1088800099688A58D20621D5F022D201D968446865 -:108890008C50114AD96884688C50104AD968C468D1 -:1088A0008C500F4AD96804698C500E4AD9684469C3 -:1088B0008C500D4AD96884698C500C4AD968C469B7 -:1088C0008C50DA680168F223DB01D15010BD01BE83 -:1088D000C1E7C046D45F01080478000008780000B2 -:1088E0000C78000010780000147800001878000060 -:1088F000F0B5C64600B50700FFF724FD0500012FBF -:1089000000D901BE7E4B5B68002B00D187E00121BE -:108910000120FFF761FE041E72D1F7F73EFE06004C -:10892000774B5B68002B03D004210120FFF754FE36 -:10893000744B1A68136ABA21515ACA00521A9B180A -:108940001A68002AF4DADB68DA0000D569E08020D2 -:10895000800518436B4B1B68BA215D5AEA00521B15 -:108960001D6AAC466244D060585AC200121A186A96 -:1089700084466244002050601A6A595ACB005B1A40 -:10898000D3185B68FFF7EAFC80235B00984200D1B4 -:108990007FE05C4B1A683323D35C002B00D101BE0F -:1089A000584B1A68116ABC23D3585B181B68002BFC -:1089B00000DB72E0544C534B1A68136ABA21515AC7 -:1089C000CA00521A9B181A68002AF4DADD68EB0014 -:1089D00000D581E04D4B1D404A4B1B68BA21585AC7 -:1089E000C200121A186A84466244D5601A6A595A3B -:1089F000CB005B1AD31800225A603000F7F7D1FD84 -:108A0000002C00D06DE03E4B5B68002B03D00821AA -:108A10000120FFF7E1FD200080BCB846F0BD002436 -:108A20007BE71B0F1B0798463948FFF7C1FE212D36 -:108A300018D0344D2B68196888229B58C9180B68C8 -:108A400034480340783213430B6029680B688C2547 -:108A500049595B18196801400A431A602C4B424679 -:108A6000134374E7274D2B68196888229B58C9184F -:108A70000B68284803409022120113430B602968B9 -:108A80000B688C2549595B18196801400A431A6024 -:108A9000E4E7380005F000FA8DE73323D35C012BBF -:108AA00000D801BE174B1968BA23CA5A0B6A9C46F4 -:108AB0006244BC23CB589B181B68002B0ADB164A68 -:108AC000136904210B431361012F01D030BF72E7FA -:108AD00020BF70E70C4C6EE728010009FFF7B8FED5 -:108AE00078E7074B5B68002B03D002210120FFF7DA -:108AF00073FD054B9C4200D18DE7084C8BE7C046C7 -:108B000054600108D45F010805004200FFFFFFDF49 -:108B100014600108FF00FFFF00ED00E0FF004200CD -:108B2000074A084BD3581F200340B0214905E822CB -:108B3000D200885CC01A431E9841C0B27047C0463C -:108B4000000026401CFF0000044B186880231B0413 -:108B5000184043425841C0B27047C046000026400A -:108B600010B5FFF7F1FF002810D01C4A13681C490C -:108B70000B4013600820FFF719FB6423174A1268A3 -:108B8000002A09DB002B07D0013BF7E7134A1368E3 -:108B900014490B401360EDE7002B01D1124810BDC2 -:108BA0000E4A136811490B4013600120FFF7FEFACB -:108BB000FFF7CAFF002801D10020F0E7FFF7B0FF60 -:108BC000012801D00020EAE7B0225205084BD15815 -:108BD000024A084BD1500020E1E7C0460000264081 -:108BE000FFFFFBACFFFFFBAD02004200FFFFFFFBFE -:108BF00010180000307F000010B5FFF7A5FF002817 -:108C000008D0054B054A10681840C01A4342584125 -:108C1000C0B210BD024BF5E700000453000026402F -:108C200000000452F8B50400012800D901BEFFF786 -:108C30008DFC002802D12D4D2800F8BDF7F7ADFCC2 -:108C40000600002C14D12A4A2A4B0021D150B02210 -:108C50005205E823DB00D75CFFB20120FFF72CFDB3 -:108C6000051E02D0002D2AD11DE0FFF785FBF9E794 -:108C7000FFF7C2FF002826D01D4A1E4B5021D150BD -:108C8000B02252051C4BD75CFFB219491B4A8B58C6 -:108C90001F208343143803438B500838FFF786FAAC -:108CA000FFF7AAFB00251248144943581F2293439B -:108CB0003A4013434350002C0DD1FFF7D7FB30004F -:108CC000F7F76FFCB8E7B02252050D4BD158084AB0 -:108CD000084BD150D4E70720FFF768FAFFF7F6FBFF -:108CE0000020FFF7E9FC0500E9E7C0460300420069 -:108CF00000002640307F0000410700001CFF0000FC -:108D000010180000084B5A6C120AFF2313403A2B2C -:108D100000D0704704494B6C044A1A40E8239B0179 -:108D200013434B64F5E7C04600002740FFC5FFDF53 -:108D300004494B6C044A1A40E8239B0113434B64DB -:108D40007047C04600002740FF00FFFF042810D0F6 -:108D500000060B4B1A681368A42152589B18C022B6 -:108D6000920410401860074A1368A0398B431360BF -:108D70007047044A136804210B431360F8E7C046A8 -:108D8000D45F010810E000E0044AC0235B00D05823 -:108D9000800F431E9841C0B27047C0460000264075 -:108DA0000749C02252008B589B009B088020C005B9 -:108DB00003438B50885880231B0603438B50704716 -:108DC0000000264010B5040080235B02984200D3C7 -:108DD00001BEFFF7D9FF002809D1054AC4235B0073 -:108DE000D058000C00042404240C0443D45010BDBB -:108DF0000000264010B504000F2800D901BEFFF77F -:108E0000C3FF00280BD10649C42252008B580548E5 -:108E100003402404F020000304401C438C5010BD88 -:108E200000002640FFFFF0FF034AE023DB000121A2 -:108E3000D150D3587047C046000026400022430856 -:108E40008B4274D303098B425FD3030A8B4244D312 -:108E5000030B8B4228D3030C8B420DD3FF22090254 -:108E600012BA030C8B4202D31212090265D0030B13 -:108E70008B4219D300E0090AC30B8B4201D3CB0309 -:108E8000C01A5241830B8B4201D38B03C01A52414B -:108E9000430B8B4201D34B03C01A5241030B8B424D -:108EA00001D30B03C01A5241C30A8B4201D3CB0238 -:108EB000C01A5241830A8B4201D38B02C01A52411D -:108EC000430A8B4201D34B02C01A5241030A8B4220 -:108ED00001D30B02C01A5241CDD2C3098B4201D338 -:108EE000CB01C01A524183098B4201D38B01C01AB6 -:108EF000524143098B4201D34B01C01A524103092D -:108F00008B4201D30B01C01A5241C3088B4201D3DB -:108F1000CB00C01A524183088B4201D38B00C01A88 -:108F2000524143088B4201D34B00C01A5241411AAF -:108F300000D20146524110467047FFE701B50020BC -:108F400000F0F0F802BDC0460029F7D076E7704780 -:108F500003460B437FD4002243088B4274D303099A -:108F60008B425FD3030A8B4244D3030B8B4228D33B -:108F7000030C8B420DD3FF22090212BA030C8B4261 -:108F800002D31212090265D0030B8B4219D300E001 -:108F9000090AC30B8B4201D3CB03C01A5241830B86 -:108FA0008B4201D38B03C01A5241430B8B4201D336 -:108FB0004B03C01A5241030B8B4201D30B03C01A5F -:108FC0005241C30A8B4201D3CB02C01A5241830AD9 -:108FD0008B4201D38B02C01A5241430A8B4201D308 -:108FE0004B02C01A5241030A8B4201D30B02C01A32 -:108FF0005241CDD2C3098B4201D3CB01C01A524199 -:1090000083098B4201D38B01C01A524143098B4221 -:1090100001D34B01C01A524103098B4201D30B010A -:10902000C01A5241C3088B4201D3CB00C01A52412F -:1090300083088B4201D38B00C01A524143088B42F4 -:1090400001D34B00C01A5241411A00D2014652418D -:10905000104670475DE0CA0F00D04942031000D3AC -:109060004042534000229C4603098B422DD3030A01 -:109070008B4212D3FC22890112BA030A8B420CD311 -:10908000890192118B4208D3890192118B4204D33A -:1090900089013AD0921100E08909C3098B4201D3BA -:1090A000CB01C01A524183098B4201D38B01C01AF4 -:1090B000524143098B4201D34B01C01A524103096B -:1090C0008B4201D30B01C01A5241C3088B4201D31A -:1090D000CB00C01A524183088B4201D38B00C01AC7 -:1090E0005241D9D243088B4201D34B00C01A52419E -:1090F000411A00D20146634652415B10104601D32B -:109100004042002B00D54942704763465B1000D3B4 -:10911000404201B5002000F005F802BD0029F8D05A -:1091200016E770477047C046002B11D1002A0FD1B7 -:10913000002900D1002802D00021C943080007B44B -:10914000024802A14018029003BDC046D9FFFFFFAC -:1091500003B4684601B5029800F052F8019B9E46A0 -:1091600002B00CBC7047C046F0B5CE46474680B54D -:10917000070099463B0C9C4613041B0C1D000E0077 -:1091800061460004140C000C45434B4360436143AB -:10919000C0182C0C20188C46834203D980235B0214 -:1091A0009846C444494679437243030C63442D04F2 -:1091B0002D0CC918000440198918C0BCB946B04626 -:1091C000F0BDC04670B500220C4B04000D0001F04C -:1091D00005F8002804D12000290000F065FF70BDCB -:1091E000064B00222000290000F0CCFB00F05CFFC1 -:1091F00080231B069C466044F1E7C0460000E04126 -:10920000F0B557464E464546DE46E0B504000D0033 -:109210009246994683B08B4230D82DD0494650466D -:1092200001F004F829000600200000F0FFFF331AC7 -:109230009846203B9B4633D45A4653469340424679 -:109240001F00534693401E00AF423AD8AF4200D1B0 -:1092500078E05B46A41BBD41002B00DA75E00022DC -:1092600000230092019301235A4693400193012366 -:1092700042469340009328E08242CFD90022002347 -:10928000009201930C9B002B01D01C605D60009844 -:10929000019903B0F0BCBB46B246A946A046F0BD5A -:1092A000424620239B1A5246DA40414613004A4662 -:1092B0008A40170042461F43534693401E00AF4268 -:1092C000C4D900220023009201934346002BD9D039 -:1092D000FB0772081A4346467B080EE0AB4201D1F9 -:1092E000A2420CD8A41A9D41012024196D410021ED -:1092F000013E24184D41002E06D0AB42EED9013E6E -:1093000024196D41002EF8D1009801995B4600198F -:109310006941002B24DB2B005A464446D3402A00E7 -:10932000E2401C005B461500002B2ADB26009E4015 -:10933000330026004746BE403200801A9941009013 -:1093400001919FE7A342BCD883E742462023002136 -:109350009B1A0022009101920122DA40019286E7D5 -:10936000424620239B1A2A0046469A402300F34097 -:10937000444613432A00E2401C005B461500002BC4 -:10938000D4DA42462F002023260097409B1ADE4065 -:109390003B003343CDE7C046F0B557464E46454601 -:1093A000DE46E0B5814605000C03480092461F00EA -:1093B00085B0240B400DCE0F002800D156E1D44BD0 -:1093C000984200D172E16B0FE4001C4380231B0420 -:1093D00023439846CF4BED009B4600239946834498 -:1093E00000933C037B005046240B5B0DFF0F002BCA -:1093F00000D11FE1C64A934200D162E1C549420F44 -:109400008C46E40059461443802263441204CB1A6C -:1094100014439B46C200002033007B409A464B46D3 -:109420000F2B27D8BC499B00CB589F46B246009BC8 -:10943000022B16D0032B00D18EE2012B00D0D9E0F5 -:1094400000230024002552461B052343D207134363 -:109450002800190005B0F0BCBB46B246A946A0469C -:10946000F0BD00240025AA4BEDE7BA46A046150042 -:109470000090DCE7444500D2C7E100D1C2E10123FE -:109480005B429C462E0040460025E3442302140E16 -:109490001C431B0C994623041F0C120249460092E0 -:1094A0000197FFF751FD02007A430B04310C80460F -:1094B00019438A4207D901235B429C460919E044BB -:1094C0008C4200D807E2881A4946FFF73DFD09049F -:1094D0008C4631046646019A090C4243030031432D -:1094E0008A4204D90919013B8C4200D8EDE1881A5F -:1094F000424612041A4390464146009B0E041B0C40 -:109500001F000293009B360C1B04190C0B007343C5 -:10951000120C7E43039151437A431F0CBC467618CC -:109520006644B14203D9802149028C466244310C21 -:109530008A1831041E04360C8E19904202D312D1BF -:10954000B54210D24346591E009B9C4665441F00FD -:109550009D429B415B421B19C018844200D2A0E18E -:1095600000D19BE18846AE1BB542AD41801A6D42E9 -:10957000401B844200D1D5E14946FFF7E5FC019A42 -:109580000B044243310C050019438A4200D96CE1B7 -:10959000881A4946FFF7D8FC019A36044243090469 -:1095A000360C03000E43B24200D953E10398B61AB9 -:1095B00002002D041D43029F2B041B0C5A437B43C6 -:1095C0009C46290C4843130C8444634479439842D5 -:1095D00003D98020400284466144180C12041B0405 -:1095E000120C41189B188E4200D2FFE000D1FAE025 -:1095F00001231D43494A5A44002A00DCAAE06B07B4 -:1096000000D03DE1ED084346DB0106D54246444B20 -:109610001A4090468022D2005A44424B9A4200DDC2 -:109620001FE743465B071D43434652055C02240B7C -:10963000530D08E75246224300D17BE0002C00D1B5 -:10964000FAE0200000F0D4FD02000B3A1D230100D7 -:109650009B1A52460839DA408C40144352468A40DD -:10966000314B58449B4683440020D5E64B46234368 -:10967000984644D0002C00D1CEE0200000F0B8FD88 -:10968000010002000B391D235B1A49461000D94026 -:10969000083884400B004D462343984685402348B4 -:1096A000831A9B460023994600939AE64B46234330 -:1096B00098461DD108239946063B00258346009312 -:1096C0008FE65246224309D1022349461943184BDB -:1096D00089469C4600240220E3449DE603234A4633 -:1096E0001A43134B91469C4652460320E34493E6AB -:1096F0000C239946093BA0468346009371E6042358 -:10970000994600239B4601330025009369E6C04635 -:10971000FF07000001FCFFFF74F20010FF030000D0 -:10972000FFFFFFFEFE070000F30300000DFCFFFF3C -:1097300001F8FFFF4946012319438946002401200F -:109740006AE6002380249A4600258A4B24037AE6A1 -:1097500001256D4201239B1A382B00DD70E61F2B7B -:1097600000DCBFE01F2149428A1A4146D1400A006D -:10977000202B04D04146804B5B4499400D436B1E27 -:109780009D4107232A431D0000241540134200D1A8 -:10979000D4E00F2100231140042900D1CBE0111D9A -:1097A0009142924152429B180A00190200D4C2E031 -:1097B00001230024002546E6802341461B0319426D -:1097C00008D01C4206D11C432403BA461500694B3D -:1097D000240B38E68024434624031C432403B2466A -:1097E000644B240B2FE6002B00D103E7A619681E5B -:1097F000A64200D28DE08E4200D2A3E000D1B3E0B9 -:109800000500F5E6AA4200D939E64346DE075808C6 -:109810006B081E43ED0739E6484600F0E9FC0100FD -:109820000200153120321C2900DC2CE74B46083899 -:1098300083400025984632E700F0DAFC03001A0066 -:10984000153220301C2A00DC00E75446083B002279 -:109850009C4005E73619013BB44200D9A6E6B24266 -:1098600000D8A3E6831E3619A0E60919013D8C42F3 -:1098700000D98DE68A4200D88AE6851E091987E656 -:109880000F232B40042B00D1BCE605235B42AB42E7 -:109890009B4104355B42ED089844B4E6AF4200D9E1 -:1098A00060E6824204D800D05CE6AE4200D859E6B9 -:1098B00002235B429C46009BE0449C4665449D42DB -:1098C0009B415B421B19C0184DE68A4200D80EE648 -:1098D000831E09190BE68A4200D8F4E5831E9846D8 -:1098E0000919F0E52549280059448D4042468A402F -:1098F000691E8D414146D840D94002432A430B009E -:10990000510700D151E70F211140042900D046E74B -:109910004BE705008E4200D06AE6009A934200D0E1 -:1099200066E667E6164A5A44002A00DC10E701237F -:109930000025984467E65D075B021C0BD2080023F4 -:10994000154380E50098023D42008242BF417F42BC -:109950003C1936190092DDE78024434624031C435A -:109960002403044B240B6EE5009A9A42EAD30500C7 -:10997000D3E7C046FF0700003E0400001E040000BD -:10998000FF030000F8B557464E464546DE46E0B5B3 -:109990001E0017004A000B03520D5B0A9046420F4F -:1099A0001A43CD0FCD4C3103C300944670007A0F9B -:1099B000490AFF009A46B946400DF60F1143A042EE -:1099C00000D1B1E001225640B346B54200D188E053 -:1099D0004246121A002A00DCAEE0002800D1C1E0A5 -:1099E000BE48804500D151E1802000040143382A5F -:1099F00000DD7BE11F2A00DDEEE120203E00801A21 -:109A00000C00D640D140874062468440521A781EEE -:109A10008741944634432743DC1BA3429B41624663 -:109A20005B42D31A99464B461B0200D418E14B46C1 -:109A30005802430A99464B46002B00D137E148466D -:109A400000F0D6FB010008392023220048465B1AAB -:109A5000DA4088408C4043461043884500DD36E1BB -:109A6000C91A4B1C1F2B00DDEAE020222600D21A67 -:109A700001009440DE40D84000239140621E944192 -:109A80008146984631430C43630709D00F23234096 -:109A9000042B05D0231DA342A4416442A1441C0011 -:109AA0004B461B0200D4DEE041468C4B013199420B -:109AB00000D1E7E04B468A48E40803401800490516 -:109AC0005B07400223434A0D040B1205ED072243B6 -:109AD0002A4318001100F0BCBB46B246A946A04676 -:109AE000F8BD4246121A002A52DD002800D19CE03F -:109AF000A04500D1CAE0802000040143382A00DDDF -:109B000049E11F2A00DC97E110000E002038C64012 -:109B1000202A04D04020821A91400F43B9464C4677 -:109B2000621E944134433AE10A003A4328D0B346D6 -:109B3000B5422BD06B4A4244002A5DD0424644468F -:109B4000821A002C00D0F5E065461D4300D19CE14F -:109B5000551E012A00D1FBE1604CA24200D1BDE1BB -:109B60002A00F0E00800384300D1C3E0501E012A6B -:109B700000D1A8E1594CA24200D187E0020036E7AB -:109B800001225640B346B54200D021E7554A42442F -:109B9000002A00D1B5E042464446821A002C00D18A -:109BA00038E14E4EB04200D1DEE1802664463604F4 -:109BB0003443A446382A00DD96E11F2A00DD24E262 -:109BC0002026B41AA24664465646B440A1461C005C -:109BD0004E46D440264334005646B3405E1EB34141 -:109BE0001C436346D340C918E419BC42BF417F42BD -:109BF000B94680468944D8E040463B4C013020427B -:109C000000D0B4E04046002800D044E1604618434C -:109C100000D190E10800384300D0AAE16146DB089A -:109C200049070B436146CC0827E00800384361D060 -:109C3000501E012A00D139E1A24227D002005DE77F -:109C400002001F39CA401100202B03D04022D31A32 -:109C500098400443631E9C410023994698460C4358 -:109C6000630700D012E74B464A46E4085B072343EC -:109C7000D408424619498A420ED024035205240BC7 -:109C8000520D22E70A00002400231EE7DB0862468B -:109C9000520713436246D4081A00224300D1FCE164 -:109CA00080221203144324030C4A240B0DE72000E6 -:109CB00000F09EFA010018311F2900DCC4E60838C4 -:109CC0008440434620000024884500DCC8E6044A5E -:109CD0005B1A104098468146D6E6C046FF07000052 -:109CE000FFFF7FFF01F8FFFFFE0700000F437A1E12 -:109CF000974191E66146DB0849070B436146CC0872 -:109D0000B8E74046D34C0130204200D0A2E04046A4 -:109D1000002800D001E16046184300D15EE1080050 -:109D2000384300D05FE16146DB0849070B436146D9 -:109D3000CC08A2E7C84DA84200D1CFE080256446F8 -:109D40002D042C43A446382A56DC1F2A00DDD1E01E -:109D500020251E00AD1A6446AB40AC40D6405D1EC7 -:109D6000AB41344323436446D440091B49E0604679 -:109D7000DC1B461AA34280414042814630004E46D9 -:109D8000801B8146000276D44B46234300D052E626 -:109D90000024002571E739430C00621E9441E41849 -:109DA0009C429B415B42634499464B461B0200D454 -:109DB00056E701239C46A84BE044984538D04B46D3 -:109DC000A648012203401800630814401C43C3073F -:109DD0001C434308994657E610000E002038C64041 -:109DE000202A04D04020821A91400F43B9464F46A2 -:109DF0007A1E974137430FE662461A4313005A1EF4 -:109E00009341FC1AA742BF417F42CB1B99465D4656 -:109E1000804608E666461E4300D1BEE0561E012A73 -:109E200000D109E18C4CA24200D119E13200C1E617 -:109E300042460024002348E620200C00801A3E0001 -:109E400087408440D640781E8741D14034433C430C -:109E50008C44A4E7804A904200D1E9E0DF199F4298 -:109E60009B4161445B42C918CC077F084B08994667 -:109E700080463C43F4E6FC1AA742BF4163467F425A -:109E8000C91ACB1B99465D46D5E5FF084B075D46D1 -:109E90003B43CC08EEE662461A4300D082E00B005A -:109EA0003B431BD1802400252403F9E6DC199C42A6 -:109EB0009B41614489465B4299444B461B0244D412 -:109EC00001239846CCE6DC1B6246A3429B41511A13 -:109ED0005B42CB1A994601239846A4E5FF084B073D -:109EE0005D463B43CC08D7E662461A431400631E26 -:109EF0009C4179E615006446203DEC40A046202AAE -:109F000005D040256446AA1A944023439A465446F5 -:109F1000631E9C414346234373E762461A4323D0A2 -:109F20000A003A4300D0A0E06246DB085207134320 -:109F30006246D408B0E60B003B4300D128E7FF0897 -:109F40004B075D463B43CC0897E60223984636E72D -:109F5000FC1AA742BF4163467F42C91ACB1B9946F0 -:109F600001235D4698465EE54B07FF083B43CC085E -:109F700092E6DC1B6046A342B641401A7642801B43 -:109F80008146000260D5FC1AA742BF4163467F426A -:109F9000C91ACB1B99465D4676E5FF084B073B4344 -:109FA000CC0867E60A00DB083A4300D16FE6624658 -:109FB000520713436246D40880221203144207D08A -:109FC000C808104204D15D460400FB0849070B4352 -:109FD0005A0FDB00DB08520713435DE64B07FF080F -:109FE0003B43CC0849E6DC199C429B4161448946CD -:109FF0005B4299444B461B0200D431E64A46174B5C -:10A000001A400123914698462AE616006446203EEF -:10A01000F440A046202A05D040266446B21A944057 -:10A0200023439A465446631E9C4143461C43DBE54A -:10A0300002000024002348E5DC19BC42BF41614412 -:10A0400089467F42B94438E74B46234300D19FE617 -:10A0500006E6C046FE070000FF070000FFFF7FFF87 -:10A06000FF084B073B43CC0816E66246DB08520765 -:10A0700013436246D40880221203144207D0C80852 -:10A08000104204D15D460400FB0849070B435A0FF8 -:10A09000DB005207DB081343FEE50023014A1C00E6 -:10A0A00013E5C046FF0700000A0030B5134C53000B -:10A0B00009030500090B00205B0DD20FA34204DD4C -:10A0C0000F48834202DD0F4BD01830BD8020400383 -:10A0D00001430D48C01A1F2808DD0C48C31AD94097 -:10A0E0000B005842002AF0D11800EEE7084CC5409A -:10A0F000A446634499400B002B43F2E7FE030000A3 -:10A100001D040000FFFFFF7F330400001304000064 -:10A11000EDFBFFFF70B5002816D0C317C5185D40D2 -:10A12000C40F280000F064F8114A121A0A2816DC3D -:10A1300003002E0015339E400B23181AC54052050C -:10A140002D032D0B530D03E00024002300250026D2 -:10A150001B052B43E40723433000190070BD0B3867 -:10A16000854052052D0300262D0B530DF0E7C04608 -:10A170001E0400008446100062468C4619006346A7 -:10A1800000E0C0461FB500F005F9002801D4002109 -:10A19000C8421FBD10B500F055F84042013010BD57 -:10A1A00010B500F0F7F8002801DB002010BD0120F9 -:10A1B00010BDC04610B500F0EDF8002801DD00200C -:10A1C00010BD012010BDC04610B500F07DF800287C -:10A1D00001DC002010BD012010BDC04610B500F00C -:10A1E00073F8002801DA002010BD012010BDC04620 -:10A1F0001C2101231B04984201D3000C10391B0AB7 -:10A20000984201D3000A08391B09984201D300097A -:10A21000043902A2105C40187047C04604030202D1 -:10A2200001010101000000000000000010B500293C -:10A2300003D1FFF7DDFF203002E00800FFF7D8FF71 -:10A2400010BDC046F0B54E464546DE4657469046E0 -:10A25000E0B517001A03120B0500844619480E03D7 -:10A260004C0091465A00DB0F9B46360B640DC90F1C -:10A27000520D844219D0824210D0012094420ED156 -:10A280004E450CD10120C44509D1594517D0002CA9 -:10A2900005D130002843431E984100E00120F0BC66 -:10A2A000BB46B246A946A046F0BD330001202B4371 -:10A2B000F5D1A242F3D14B463B43F0D1E2E7002077 -:10A2C000EDE7C046FF070000F0B54746CE46040064 -:10A2D000180016001B031B0B2D4D4A00994680B534 -:10A2E00043000F03A446B0463F0B520DC90F5B0D50 -:10A2F000C00FAA4221D0AB4213D0002A22D13C4346 -:10A30000002B02D14D462E4322D0002C10D081428A -:10A3100022D00220013908400138C0BCB946B046FD -:10A32000F0BD4D462E4329D1002AF0D13C43EED159 -:10A330000028F2D101204042EFE73D0025431DD126 -:10A340009342EED0002BE2D14C462643DFD1E0E72A -:10A350000020002CE1D0DCE79A420ADCE8DB4F4524 -:10A36000D7D80ED000204F45D7D20029E2D0080020 -:10A37000D3E74342584140000138CEE70220404233 -:10A38000CBE7C445C5D80020C445C6D2EDE7C046DA -:10A39000FF070000F0B54746CE460400180016003F -:10A3A0001B031B0B2C4D4A00994680B543000F033D -:10A3B000A446B0463F0B520DC90F5B0DC00FAA4219 -:10A3C0000DD0AB4210D0002A27D13C43002B11D135 -:10A3D0004D462E430ED10020002C15D00EE03D003E -:10A3E000254310D1934218D14D462E430BD1002A5C -:10A3F00002D13C43002C0BD0814214D00220013901 -:10A400000840013800E00220C0BCB946B046F0BDAB -:10A410000028F9D101204042F6E7002BECD14C4650 -:10A420002643E9D1EAE79A4204DD4342584140001D -:10A430000138E9E79A42EBDB4F45DFD806D0002030 -:10A440004F45E1D20029E5D00800DDE7C445D5D865 -:10A450000020C445D8D2F5E7FF07000030B514004E -:10A460001A00094B05001B6885B0D868074B002C03 -:10A4700001D1074B1C00019300912B000549029468 -:10A4800000F00AF801F07CF8EC010008B4F20010CA -:10A49000EFF20010C1F200100EB403B5010003ABDF -:10A4A000044804CB0068019300F0DAF902B008BC5C -:10A4B00003B01847EC010008F7B553430500170037 -:10A4C000089C01910093002804D08369002B01D1DE -:10A4D00002F030F8274B9C4225D16C68636EDB0795 -:10A4E00005D4A3899B0502D4A06D00F057F8A38979 -:10A4F0001B0722D52369002B1FD00026009B9E42FC -:10A5000022D0019B995DA368013BA360002B04DA74 -:10A51000A269934226DB0A2924D023685A1C2260B0 -:10A5200019700136EAE7144B9C4201D1AC68D5E7BB -:10A53000124B9C42D2D1EC68D0E72100280000F0F9 -:10A54000A7FF0026B042D8D0636EDB0705D4A389ED -:10A550009B0502D4A06D00F022F839003000FEF710 -:10A560006DFCFEBD2200280000F03CFF431CD8D14A -:10A57000EAE7C046F0F4001010F50010D0F4001027 -:10A5800007B5009313000A00010002480068FFF7B6 -:10A5900093FF0EBDEC01000870477047704770478D -:10A5A00010B5034B0100186800F0BCF810BDC046A0 -:10A5B000EC01000830B500240139A24201D100208D -:10A5C00005E0035D01340D5DAB42F6D0581B30BD94 -:10A5D000002310B59A4200D110BDCC5CC4540133A5 -:10A5E000F8E703008218934200D1704719700133D5 -:10A5F000F9E770B5130C0D0C1ED1002B0CD189B2EC -:10A6000094B24C43210000F08DF8051E1BD02200AF -:10A610000021FFF7E6FF16E01D1C0B1C92B289B269 -:10A620009CB25143ABB263430C0C1C19220C07D1F2 -:10A63000240489B20C43E5E7002B01D1131CEDE79C -:10A640000C2300250360280070BD000070B50500D4 -:10A65000002910D00C1F2368002B00DAE418280012 -:10A6600002F096F81D4A1368002B05D16360146050 -:10A67000280002F095F870BDA34208D9216860183F -:10A680008342F3D118685B6841182160EEE71A0035 -:10A690005B68002B01D0A342F9D911685018A04281 -:10A6A0000BD120680918501811608342E0D1186856 -:10A6B0005B68411811605360DAE7A04202D90C23AD -:10A6C0002B60D5E721686018834203D118685B6866 -:10A6D0004118216063605460CAE7C0466C6001089D -:10A6E00070B50F4E0D0031680400002902D100F052 -:10A6F0005FFE30602900200000F05AFE431C0AD0A3 -:10A700000323C51C9D43A84207D0291A200000F04E -:10A710004FFE431C01D101256D42280070BDC0468B -:10A7200070600108F7B50322CB1C93430833060081 -:10A730001F000C2B32D20C27B94231D8300002F066 -:10A7400027F8324D2B681C00002C2ED13900300028 -:10A75000FFF7C6FF0400431C1ED12C682500002D06 -:10A760004AD123682900E3183000019300F020FE4D -:10A77000019B834243D123680337FF1A03239F437E -:10A7800008370C2F00D20C2739003000FFF7A8FF44 -:10A79000431C34D02368DF19276013E0002BCBDA89 -:10A7A0000C23002533602800FEBD2268D11B20D475 -:10A7B0000B2917D9E2192760A34211D12A606368D7 -:10A7C000116053603000250001F0EAFF07220B35CD -:10A7D000231D9543EA1A9D42E5D05B1BA350E2E797 -:10A7E0005A60ECE76268A34201D12A60EAE75A6046 -:10A7F000E8E723006468A7E72C006D68AFE70C2347 -:10A800003000336001F0CCFFCDE7C0466C6001083A -:10A81000936810B5013B9360002B04DA9469A3425E -:10A8200007DB0A2905D01368581C1060197008004E -:10A8300010BD00F0D7FD0100F9E7F8B506000F00E4 -:10A840001400D518AC4201D1002007E021783A006D -:10A850003000FFF7DDFF0134431CF3D1F8BD0000E9 -:10A86000F0B5A1B006000C001F000392002804D030 -:10A870008369002B01D101F05DFE8E4B9C421CD1FF -:10A880007468636EDB0705D4A3899B0502D4A06DB1 -:10A89000FFF784FEA3891B0702D52369002B1DD176 -:10A8A0002100300000F0F4FD002817D0636EDB07B4 -:10A8B0000DD50120404221B0F0BD7F4B9C4201D11B -:10A8C000B468DEE77D4B9C42DBD1F468D9E7A3890D -:10A8D0009B05EED4A06DFFF762FEEAE7002308AD0A -:10A8E0006B6120336B761033AB760797039F3B7811 -:10A8F000002B01D0252B4ED1039BFB1A0593039B04 -:10A900009F420DD0059B21003000039AFFF795FF71 -:10A91000431C00D1B5E06A69059B944663446B61B2 -:10A920003B78002B00D1ACE001227B1C0393002379 -:10A9300052426A6004A9543252182B60EB60AB603B -:10A940001370AB65039B052219785D4801F014FF75 -:10A95000039B5F1C002820D12A68D30604D553230B -:10A9600004A95B1820211970130704D5532304A9E7 -:10A970005B182B211970039B1B782A2B16D0002102 -:10A98000EB68039F3A78781C303A8446092A4FD9FD -:10A99000002911D117E00137A9E7494B2A68C01AED -:10A9A0000123834013432B600397CBE7079B191DBB -:10A9B0001B680791002B01DB0B9304E05B42EB600B -:10A9C000022313432B603B782E2B0AD17B782A2B52 -:10A9D00037D1079B02371A1D1B680792002B2DDB0E -:10A9E000099303223978374801F0C6FE002807D0C2 -:10A9F000344B2A68C01A40238340134301372B602D -:10AA000039787B1C062230480393297601F0B4FE86 -:10AA1000002845D02D4B002B27D10722079B073359 -:10AA20009343083307936B69049A9B186B615DE746 -:10AA30000A214B4367469B180939A3E701235B4270 -:10AA4000CEE700231A0001376B603978781C303963 -:10AA50008446092903D9002BC3D00992C1E70A23F0 -:10AA60005A4367465218093BEFE707AB00932200B1 -:10AA700029003000164B00F0D7F80490049B0133F6 -:10AA8000D1D1636EDB0705D4A3899B0502D4A06DE9 -:10AA9000FFF785FDA3895B0600D50AE70D980AE755 -:10AAA00007AB0093220029003000094B00F06EFB39 -:10AAB000E3E7C046F0F4001010F50010D0F40010E9 -:10AAC000F4F20010FAF20010FEF2001029AC0010AF -:10AAD0003BA80010F0B51E00002314008BB09E426E -:10AAE00004DA8021090673181E002D23129A149F80 -:10AAF0001370202303229F43462F07D03B00453B82 -:10AB000059424B411099013ACB18109309AB049369 -:10AB100008AB0393139B00920293109B22000193B6 -:10AB2000330000F0BFFD0500472F02D1119BDB076A -:10AB300028D5109BEB180793462F14D12B78302B78 -:10AB40000CD10022002320003100FFF723FB002856 -:10AB500004D10123109A9B1A139A1360139B079A2E -:10AB60001B68D31807930022002320003100FFF751 -:10AB700011FB002801D0079B09933022099B0799FC -:10AB80008B4206D32800099B159A5B1B13600BB000 -:10AB9000F0BD591C09911A70F0E7F0B5831C87B01D -:10ABA000039305000C002B230270002901DA4C42AC -:10ABB00002336B70092C31DD0A2704ABDE1D200047 -:10ABC00039000196FEF7AAFA013E303120003170BB -:10ABD00039000294FEF7BCF9029B0400632BEEDC03 -:10ABE000019B30349A1E13000399147004A8073097 -:10ABF00098420ED804AB073300209A4204D804AB25 -:10AC00000930C018019BC01A039B1818401B07B0DD -:10AC1000F0BD1878013308700131E7E73023E418FC -:10AC2000AB70281DEC70F1E7F0B595B00C000992FF -:10AC30001E001A9D070001F01DFD036818000C930B -:10AC400000F0C8FB00231293237E07220A93236897 -:10AC50000E900D930D992B68C90547D59B1893430A -:10AC60001A0008322A601A685B68A264E364012251 -:10AC7000A36CE56C0B936B005B080F930B98A74BD1 -:10AC80000F99524203F076F8002831D10122A34BEC -:10AC90000B980F995242FFF78DFA002828D1002215 -:10ACA000002329000B98FFF77BFA002803D023002C -:10ACB0002D2243331A700A9B994D472B00D9994D89 -:10ACC00003230D9A236101339A43002322600B93DF -:10ACD000099B21003800009613AA00F0E7F9431CF5 -:10ACE00000D0A2E00120404215B0F0BD0733B6E726 -:10ACF0000B9A2B001000290003F03CF800280BD021 -:10AD0000002D03DA23002D2243331A700A9B864D4F -:10AD1000472BD5D9854DD3E720220A996368914303 -:10AD20000F915A1C49D10733636080230D9ADB00D1 -:10AD300013430022069212AA05920A9A08A90492C5 -:10AD400011AA03922322236001936368521802928E -:10AD5000009338002B000B9AFFF7BCFE0F9B0500F9 -:10AD60001199472B08D1CB1C02DB6368994248DD5F -:10AD70000A9B023BDBB20A930A9B652B24D8200076 -:10AD80001A00013950301191FFF707FF129A0B900A -:10AD900013182361012A02DC2268D20701D501338E -:10ADA0002361232308AA9B181B78002B00D18FE76F -:10ADB00023002D2243331A708AE70F9A472AB4D111 -:10ADC000002BB2D10133AFE70A9B662B1BD163681E -:10ADD00000290DDD2161002B02D12268D20702D5A6 -:10ADE000013359182161119BA36500230B93D8E708 -:10ADF000002B03D101222168114200D09A1C22614C -:10AE0000F1E767230A93119B129A934206DB2268AB -:10AE10002361D207E7D501332361E4E70121002B49 -:10AE200001DC4918C91A5218E9E72268530507D40A -:10AE300023692A0038000999B047431C28D151E7FB -:10AE40000A9B652B00D8E1E0A06CE16C0022002396 -:10AE5000FFF7A0F9002831D001233800344A0999BE -:10AE6000B047431C00D13DE7119B129A934202DB8D -:10AE70002368DB070CD538000E9B0C9A0999B04764 -:10AE80000025431C00D12DE7129B013BAB420ADC9D -:10AE900023689B0700D506E1139BE068984200DB1E -:10AEA00022E7180020E722000123380009991A320E -:10AEB000B047431C00D115E70135E5E7119B002B96 -:10AEC00038DC012338001A4A0999B047431C00D1E5 -:10AED00008E7119B129A134302D12368DB07D7D5E9 -:10AEE0000E9B38000C9A0999B047431C00D1F9E633 -:10AEF00000230A93119B0A9A5B42934201DC129B46 -:10AF000097E722000123380009991A32B047431C01 -:10AF100000D1E7E60A9B0133EBE7C046FFFFEF7F76 -:10AF200005F3001009F300100DF3001011F30010E9 -:10AF300015F30010129AA36D0A929A4200DD0A934B -:10AF40000A9B002B3CDC00230D930A9BDB43DB17A1 -:10AF50000F93A36D0F9A0B930A9B13400B9AD31A6E -:10AF60000D9A934234DC119B129A93423DDB236885 -:10AF7000DB073AD4129A0B9B1199D31A521A0A92F0 -:10AF80009A4200DD0A930A9B002B36DC0A9B0025BF -:10AF9000DB43DB170B93119A129B0B999B1A0A9AAE -:10AFA0000A409B1AAB4200DC72E722000123380002 -:10AFB00009991A32B047431C00D193E60135EAE7FC -:10AFC0000A9B2A0038000999B047431CBBD189E687 -:10AFD00022000123380009991A32B047431C00D1DE -:10AFE00080E60D9B01330D93B3E70E9B38000C9A5E -:10AFF0000999B047431CBDD174E60B9B3800EA1891 -:10B0000009990A9BB047431CC0D16BE6129B012BE8 -:10B0100002DC01231A4234D001232A0038000999A6 -:10B02000B047431C00D15DE60E9B38000C9A09998D -:10B03000B047431C00D155E6A06CE16C0022002310 -:10B04000FFF7A8F800281AD1129B6A1C013B3800B0 -:10B050000999B047431C0ED144E622000123380071 -:10B0600009991A32B047431C00D13BE60135129BC7 -:10B07000013BAB42F1DC22000B9B5032DAE60025AB -:10B08000F5E72A00E3E72200012338000999193285 -:10B09000B047431C00D125E60135E368139A9B1A9B -:10B0A000AB42F0DCF8E60025F7E7C046F7B515003F -:10B0B00001938A680B690C000090934200DA130038 -:10B0C00022002B6043321278002A01D001332B601A -:10B0D00023689B0602D52B6802332B602268062367 -:10B0E00017001F401A4227D0230043331B785A1EF3 -:10B0F00093412268920630D4220001990098089E5C -:10B100004332B047431C25D0062320682A68E168F3 -:10B1100000250340042B03D18D1AEB43DB171D40A0 -:10B12000A3682269934201DD9B1AED180027BD42F6 -:10B1300020D1002010E00137E3682A689B1ABB4247 -:10B14000D2DD2200012301990098089E1932B047F0 -:10B15000431CF0D101204042FEBD3020E1184331B4 -:10B16000087021005A1C45310978A2184332023375 -:10B170001170C1E72200012301990098089E1A323C -:10B18000B047431CE6D00137D1E70000F0B58BB0E3 -:10B1900006920A0043320793059004920A7E0C003F -:10B1A000109B782A07D8622A09D8002A00D1C1E06A -:10B1B000582A00D18CE026004236327022E010007E -:10B1C00063381528F7D802F023F816001F00F6FFA1 -:10B1D000F6FFF6FFF6FF1F00F6FFF6FFF6FFF6FF9D -:10B1E000A80036009A00F6FFF6FFB900F6FF360019 -:10B1F000F6FFF6FF9E0026001A684236111D196000 -:10B20000136833700123A7E0086819680A1D050652 -:10B210000BD50D681A60002D03DA2D23049A6D42B8 -:10B220001370614B0A2703931BE00D681A604106F7 -:10B23000F1D52DB2EFE70D681968081D18602E06CC -:10B2400001D50D6803E06D06FBD50D68ADB2564B18 -:10B25000082703936F2A00D00237230000224333CC -:10B260001A706368A360002B03DB042221689143FA -:10B270002160002D02D1049E002B0CD0049E2800DA -:10B280003900FDF761FE039B013E5B5C33702B00D0 -:10B2900005009F42F3D9082F09D12368DB0706D5A3 -:10B2A00063682269934202DC3023013E3370049BC1 -:10B2B0009B1B2361079B210000930598069B09AA0D -:10B2C000FFF7F4FE431C4CD1012040420BB0F0BD0F -:10B2D00045310A70344A03921A68216820CA1A60FC -:10B2E000080616D5CB0702D5202319432160102765 -:10B2F000002DB2D1202322689A432260ADE720229C -:10B3000009680A4322602200782145321170274AD9 -:10B31000E1E74806E6D5ADB2E4E71A680D68101D0E -:10B320004969186013682E0601D5196002E06D06A0 -:10B33000FBD519800023049E2361BBE71A68111D09 -:10B340001960166800213000626801F015FA0028C3 -:10B3500001D0801B6060636823610023049A13702E -:10B36000A8E72369320006990598079DA847431C62 -:10B37000AAD023689B0715D4099BE0689842A5DAF8 -:10B380001800A3E72200012306990598079E1932A9 -:10B39000B047431C98D00135E368099A9B1AAB4229 -:10B3A000F0DCE9E70025F7E717F3001028F30010B9 -:10B3B000002370B5064D040008002B6002F04EFD1E -:10B3C000431C03D12B68002B00D0236070BDC04606 -:10B3D000746001080023C25C0133002AFBD1581EAF -:10B3E00070470000F8B505000E001400002804D0D6 -:10B3F0008369002B01D101F09DF8224B9C422ED194 -:10B400006C68A369A360A3891B0732D52369002B4D -:10B410002FD023682269F7B2981A6369F6B2834283 -:10B4200005DC2100280000F0E3FF002827D1A368F5 -:10B430000130013BA36023685A1C22601F706369BE -:10B44000834204D0A389DB0707D50A2E05D121004A -:10B45000280000F0CDFF002811D13000F8BD0A4BC4 -:10B460009C4201D1AC68CCE7084B9C42C9D1EC6846 -:10B47000C7E72100280000F00BF80028C9D00126FA -:10B480007642EAE7F0F4001010F50010D0F4001056 -:10B49000374B70B51D6806000C00002D05D0AB6958 -:10B4A000002B02D1280001F045F8324B9C420FD10D -:10B4B0006C680C23E25E93B211072DD4D90611D427 -:10B4C00009230120336037331343A381404270BD09 -:10B4D000294B9C4201D1AC68EBE7284B9C42E8D158 -:10B4E000EC68E6E75B0713D5616B002908D0230001 -:10B4F0004433994202D03000FFF7A8F80023636379 -:10B500002422A3899343A3810023636023692360DA -:10B510000823A2891343A3812369002B0BD1A02107 -:10B520008022A389890092000B40934203D021001E -:10B53000300001F0CBF80C22A35E01201A0099B272 -:10B54000024003420FD00022A26062695242A2610F -:10B55000002022698242BAD10A06B8D5402213439C -:10B56000A3810138B3E7880700D46269A260EFE7DE -:10B57000EC010008F0F4001010F50010D0F40010F9 -:10B58000062010B501F0DAFC012002F075FCF0B5E0 -:10B5900006000B69326987B0002003919A4265DB8F -:10B5A000013B9C0000930B00143305931B1904937B -:10B5B0003300143302931C19049B27681B6838005E -:10B5C0005D1C29000193FDF739FC0190AF4224D3A3 -:10B5D0000025AC460298059F08CF019A99B25143C5 -:10B5E0001B0C534349190A0C9B18026889B292B28A -:10B5F0006244521A01681D0C090C9BB2CB1A11143B -:10B600005B18191492B21B041A43049B8C4604C0A5 -:10B61000BB42E1D22368002B30D03000039901F007 -:10B620004BFB002821DB30000024019B03990133F0 -:10B63000019314301431036820C99AB21419AAB2C4 -:10B64000A21A1B0C2D0C14145B1B1B191C1492B298 -:10B650001B04134308C0049B8B42ECD2009B029A4C -:10B660009B00D3181A68002A15D0019807B0F0BDC6 -:10B670002368002B06D1009B013B0093029B043CF6 -:10B68000A342F5D3009B3361C7E71A68002A06D1AD -:10B69000009A013A0092029A043B9A42F5D3009B29 -:10B6A0003361E2E7F0B59DB002920393029B039CE5 -:10B6B00008930994446A0700259D002C0ED11020A0 -:10B6C000FEF76EFF021E786204D1EA21C74BC8481C -:10B6D000FEF7C4FE446084600460C4607B6A19683D -:10B6E00000290AD05A68012393404A608B603800D1 -:10B6F00001F0A2F800227B6A1A60039B002B20DA7B -:10B7000001232B60039B5B005B080993099DB94BE8 -:10B71000B84A2B40934217D1B74B249A28031360A1 -:10B72000029B000B184301D100F0BFFDB348269BDC -:10B730000690002B02D0B24B269A136006981DB0DB -:10B74000F0BD00232B60E1E7089B099C1293139442 -:10B750001298139900220023FEF71CFD041E09D045 -:10B760000123249A1360A74B0693269B002BE5D058 -:10B77000A54BE1E71AAB01931BAB00933800129A7B -:10B78000139B01F04DFB6E000590760D00D17CE01F -:10B7900012981399139B9D4A1B031B0B1A4311000C -:10B7A0009B4B1894F61800229A4BFEF7EBF89A4A36 -:10B7B0009A4B02F073F89A4A9A4B01F033FD040059 -:10B7C00030000D00FEF7A6FC974A984B02F066F891 -:10B7D00002000B002000290001F024FD04000D00F0 -:10B7E000FEF762FC00220290002320002900FEF7F1 -:10B7F000D7FC00280BD00298FEF78CFC2B0022000F -:10B80000FEF7C8FC43425841029B1B1A02930123D6 -:10B810001693029B162B0FD812981399DA00844BBB -:10B820009B181A685B68FEF7BBFC002849D0029B96 -:10B83000013B0293002316931A9B9E1B00230A933D -:10B840003300013B0D9304D501239B1B0A93002376 -:10B850000D93029B002B36DB029A0D9B94466344AA -:10B860000D93002315920E93229B0124092B64D87B -:10B87000052B02DD0024043B2293229B981E032803 -:10B8800064D801F0BBFC293836581A9B1B9A9E18C5 -:10B89000684BF218202A0FDD40239B1A9D40664B0F -:10B8A0000298F318D840284302F082FA0123634C2F -:10B8B000013E0919189376E7202302989B1A9840B5 -:10B8C000F2E71690B8E70A9B029A9B1A0A93534232 -:10B8D0000E9300231593C7E700230F93239B0C932C -:10B8E0000793002B13DC01231A000C930793239278 -:10B8F0000DE00123F1E70023239A0F939446029B66 -:10B9000063440C9301330793002B00DC01230022D6 -:10B91000786A426004321500143541689D4219D995 -:10B92000380000F045FF0690002817D1D52102000D -:10B93000434B4900CBE60123DEE700230F9422931B -:10B94000013B0C93079300221333D0E701230F939D -:10B95000023BF6E7013141605200DCE77B6A069A60 -:10B960001A60079B0E2B00D9EBE0002C00D1E8E019 -:10B97000029B002B68DD1A000F212D4B0A40D200DC -:10B980009B181D685E68029B1C1102231093029B8A -:10B99000DB050BD52B4B0C401A6A5B6A1298139986 -:10B9A000FDF7FAFC0323089009911093254B14939B -:10B9B000002C08D1089809992A003300FDF7ECFC07 -:10B9C000089009915CE001231C420BD0109B2800D9 -:10B9D00001331093149B31001A685B6801F05EFF1D -:10B9E00005000E00149B64100833E0E747F40010D4 -:10B9F0005EF400100000F07F0F27000043F40010F9 -:10BA000046F4001015F3001016F300100000F03F8C -:10BA100001FCFFFF0000F83F61436F63A787D23F3F -:10BA2000B3C8608B288AC63FFB799F501344D33F2D -:10BA3000C8F500103204000012040000000010FEDF -:10BA4000BCF40010A0F5001002231093029B002B01 -:10BA500016D0129813995C420F23B64A2340DB009C -:10BA6000D3181A685B6801F019FF012600230890BB -:10BA70000991B14D2411002C00D094E0002B9FD1EE -:10BA8000169B002B00D19BE0089C099D0022200002 -:10BA90002900AA4BFEF784FB002800D190E0079B09 -:10BAA000002B00D18CE00C9B002B46DD029B00227A -:10BAB000200029005E1EA24B01F0F0FE109B0890B2 -:10BAC0000991013310930C9B1098089C099D1493C5 -:10BAD000FEF720FB22002B0001F0E0FE0022994B34 -:10BAE00001F0A0FB10901191109A119B08920993FC -:10BAF000954A119B9446634417930993149B002B1A -:10BB000061D1002220002900904BFDF73BFF089AED -:10BB1000179B04000D00FEF757FB002800D0AFE292 -:10BB20008B481199844661440B0020002900089A33 -:10BB3000FEF736FB002800D09FE2129B139C08936F -:10BB400009941B9B002B00DA72E1029A0E2A00DD99 -:10BB50006EE1784BD2009B185C681B680A930B94CB -:10BB6000239B002B00DBF7E0079B002B00DDF3E0BD -:10BB700000D082E20A980B990022744B01F08EFEED -:10BB8000089A099BFEF72AFB079E3500002800D083 -:10BB900059E2069B069A0133089331231370029BE6 -:10BBA0000133029354E2344207D0109B01331093C7 -:10BBB0002A686B6801F072FE3300641008355AE79A -:10BBC000029E079B80E7149B0F995A1E594BD20087 -:10BBD0009B181A685B68002951D000205D49FDF769 -:10BBE000DBFB089A099BFDF7CDFE069A069B94465F -:10BBF0001793149B1090119163441993290020000E -:10BC0000FEF752FA1490FEF785FA02000B002000AE -:10BC10002900FDF7B7FE179B179A01330893149B71 -:10BC2000040030331370109A119B0D00FEF7B8FA20 -:10BC3000002875D122002B0000204049FDF7A2FE0C -:10BC4000109A119BFEF7ACFA002800D0D2E0199BA5 -:10BC5000089A934200D170E7109811990022384B4E -:10BC600001F01CFE364B109011910022200029009B -:10BC700001F014FE089B04000D001793BEE708981E -:10BC8000099901F00BFE069A069B94460893149BB3 -:10BC9000109011916344199329002000FEF704FAD3 -:10BCA0001790FEF737FA02000B0020002900FDF77D -:10BCB00069FE179B089A303313701300199A0133E9 -:10BCC00004000D00089393422CD110981199069A04 -:10BCD000149B94466344002208931E4B01F0A2FA81 -:10BCE00002000B0020002900FEF76EFA002800D0A9 -:10BCF00080E0109A119B00201649FDF743FE0200D8 -:10BD00000B0020002900FEF74BFA002800D114E7B1 -:10BD1000089B1A00013A08921278302AF8D008934A -:10BD2000029655E00022064B01F0B8FD04000D001C -:10BD3000B2E7C046C8F50010A0F500100000F03FC3 -:10BD40000000244000001C400000C0FC0000144023 -:10BD50000000C07C0000E03F079B069E013B9B1952 -:10BD60000C93089C099D0A9A0B9B20002900FDF763 -:10BD700013FBFEF799F90790FEF7CCF90A9A0B9B93 -:10BD800001F08CFD02000B0020002900FDF7FAFDF8 -:10BD90003300079A013630321A700C9A08969A428C -:10BDA00039D102000B0001F03DFA0A9A0B9B040006 -:10BDB0000D00FEF709FA00281BD10A9A0B9B200000 -:10BDC0002900FEF7E7F9002802D0079BDB0710D413 -:10BDD0003800059900F030FD0023089A029813708E -:10BDE000249B01301860269B002B00D1A6E41A602A -:10BDF000A4E4029E089B0893013B1A78392A06D1D5 -:10BE0000069A9A42F7D13022069901360A701A78BA -:10BE100001321A7084E70022AA4B01F03FFD002294 -:10BE2000002304000D00FEF7B5F900289BD0CFE7F2 -:10BE30000F9D0E9E0A9C002D12D0229A012A66DCCC -:10BE4000189A002A5DD0A04A9B180A9A0121D2189C -:10BE50000A920D9A3800D3180D9300F09DFD05004D -:10BE6000002C0EDD0D9B002B0BDD0D9A2300944260 -:10BE700000DD13000A9AE41AD21A0A920D9AD31A14 -:10BE80000D930E9B002B1FD00F9B002B54D0002E28 -:10BE900011DD29003200380000F044FE059A01004F -:10BEA0000500380000F08EFD05991490380000F070 -:10BEB000C3FC149B05930E9B9A1BB34204D038001D -:10BEC000059900F02FFE05900121380000F064FD77 -:10BED000159B0600002B31DD1A000100380000F030 -:10BEE00021FE229B0600012B2DDD00230E933369DA -:10BEF00003339B00F318586800F006FD2023181A3E -:10BF000039E036231A9A0E9E0A9C9B1A9DE7079BDE -:10BF10005E1E0E9BB34207DB9E1B079B0A9C002BF9 -:10BF200093DAE41A002390E70E9B159AF31AD318BC -:10BF30000E9615930026F0E70E9AC0E700230E93A5 -:10BF4000229B012B13DC00230E93089B002B0ED1A8 -:10BF5000099B1B030BD15D4B099A134207D00A9B27 -:10BF600001330A930D9B01330D9301230E93159B0F -:10BF70000120002BBBD10D9B1F221818030013407A -:10BF8000104246D00132D21A042A3FDD1C22D31AB5 -:10BF90000A9AE418D2180A920D9AD3180D930A9BA4 -:10BFA000002B05DD1A003800059900F017FE0590FA -:10BFB0000D9B002B05DD31001A00380000F00EFE4D -:10BFC0000600169B002B26D03100059800F074FE69 -:10BFD000002820DA029B0A22013B0293380000234A -:10BFE000059900F04DFC0F9B0590002B00D166E1F8 -:10BFF000002329000A22380000F042FC0C9B0500B7 -:10C00000002B47DC229B022B0DDC43E0042AC6D028 -:10C0100013001C33BCE7079B002B35DC229B022B53 -:10C0200032DD079B0C930C9B002B0CD131000522B9 -:10C03000380000F025FC06000100059800F03CFEE9 -:10C04000002800DDA5E5239BDB430293069B0893B4 -:10C0500000243100380000F0EFFB002D00D1B7E6DE -:10C06000002C05D0AC4203D02100380000F0E4FBE6 -:10C070002900380000F0E0FBAAE600263500E2E7E0 -:10C080000296149E350084E50F9B002B00D1CEE074 -:10C09000079B0C93002C05DD29002200380000F0DE -:10C0A0009DFD05000E9B2800002B22D038006968FA -:10C0B00000F07EFB041E0FD10200054B0549FFF77F -:10C0C00006FBC04600002440330400000000F07F5F -:10C0D000BCF40010EA02000029002B690C319A1C04 -:10C0E00092000C30FEF774FA01222100380000F0B3 -:10C0F00075FD069B0C9A0A93013B9B1801222C00AC -:10C1000005001493089B13400F9331000598FFF727 -:10C110003EFA0300210030330D900598079300F09C -:10C12000CBFD2A000E903100380000F0E1FDC3681D -:10C130000890109301230C93109B002B04D1010055 -:10C14000059800F0B9FD0C903800089900F074FBD8 -:10C150000A9B0C9A01330893229B13430F9A1343B3 -:10C160000CD1079B392B26D00E9B002B02DD0D9B9B -:10C17000313307930A9B079A1A706AE70E9B002BCC -:10C1800004DB229A13430F9A13431FD10C9B002BFD -:10C19000F0DD05990122380000F020FD3100059006 -:10C1A00000F08AFD002803DCE4D1079BDB07E1D522 -:10C1B000079B392BDBD139230A9A1370089B08930C -:10C1C000013B1A78392A68D00132D5E70C9B002B45 -:10C1D00007DD079B392BEED0079B0A9A01331370BA -:10C1E00037E70A9B079A1A70149B0A9A93423ED02B -:10C1F00000230A220599380000F042FB0023059035 -:10C200000A2221003800AC4206D100F039FB0400BC -:10C210000500089B0A9378E700F032FB2900040030 -:10C2200000230A22380000F02BFB0500F1E7079BF2 -:10C230000C93002431000598FFF7A9F9069B3030D4 -:10C2400018550C9B01340790A34207DD00230A22F6 -:10C250003800059900F014FB0590EBE70C9B0120DA -:10C26000002B00DD18000024069B1B18089305997D -:10C270000122380000F0B2FC3100059000F01CFDF6 -:10C2800000289BDC02D1079BDB0797D4089B08930F -:10C29000013B1A78302AFAD0DBE6069A9A428ED110 -:10C2A000029B01330293312399E7094B269A0693A7 -:10C2B000084B002A01D0FFF73FFAFFF73FFA0C9B2B -:10C2C000002BB6DC229B022B00DDACE6B1E7C046BA -:10C2D0003AF4001042F40010F7B58B8905000C0009 -:10C2E0001A075FD44A68002A04DC0A6C002A01DCC1 -:10C2F0000020FEBDE76A002FFAD0002280212E68C0 -:10C300002A601A0049010A400B4234D0606DA389AB -:10C310005B0706D56368C01A636B002B01D0236CE2 -:10C32000C01A0200216A00232800E76AB847A189E1 -:10C33000431C06D12B681D2B31D82C4ADA40D30779 -:10C340002DD50023636023692360CB0405D5431CEE -:10C3500002D12B68002B00D16065616B2E60002933 -:10C36000C6D023004433994202D02800FEF76EF96C -:10C3700000206063BDE701232800216AB847431C01 -:10C38000C5D12B68002BC2D01D2B01D0162B01D19B -:10C390002E60ADE74023A2891343A381A9E7402380 -:10C3A0000B43FAE70F69002FA2D00A680F60D21B77 -:10C3B000019200229B0700D14A69A260019B002BD9 -:10C3C00000DC95E73A002800019B216AA66AB04785 -:10C3D000002806DC40230120A28940421343A381A8 -:10C3E00087E7019B3F181B1A0193E7E701004020F4 -:10C3F0000B6970B505000C00002B02D10025280048 -:10C4000070BD002804D08369002B01D100F092F8A0 -:10C41000144B9C421BD16C680C22A35E002BEDD008 -:10C42000626ED20704D49B0502D4A06DFEF7B6F865 -:10C4300028002100FFF750FF636E0500DB07DED404 -:10C44000A3899B05DBD4A06DFEF7A9F8D7E7064BBF -:10C450009C4201D1AC68DFE7044B9C42DCD1EC6824 -:10C46000DAE7C046F0F4001010F50010D0F4001028 -:10C47000002310B50400036043608360818143663C -:10C480001900C28103614361836108225C30FEF7B9 -:10C49000A8F8054B24626362044BA362044BE36279 -:10C4A000044B236310BDC0467DCF0010A5CF001004 -:10C4B000DDCF001009D0001010B5024900F0BAF825 -:10C4C00010BDC0467DD0001070B568254A1E55438A -:10C4D0000E0029007431FEF725F9041E08D0002152 -:10C4E0002A00016046600C30A0606832FEF779F8DF -:10C4F000200070BD10B50248FEF750F810BDC046D0 -:10C500006960010810B50248FEF749F810BDC04641 -:10C510006960010810B50248FEF740F810BDC0463A -:10C520006A60010810B50248FEF739F810BDC04630 -:10C530006A60010813B50400FFF7ECFFA369002B44 -:10C5400002D0FFF7EFFF13BDA364E3642365134B31 -:10C55000134A1B68A2620193A34201D10123A36184 -:10C56000200000F01FF86060200000F01BF8A060C1 -:10C57000200000F017F800220421E0606068FFF757 -:10C5800077FF01220921A068FFF772FF0222122122 -:10C59000E068FFF76DFF0123A361D2E7F0F200101E -:10C5A000B9C40010F8B50700FFF7A4FF1F4B1868C7 -:10C5B0008369002B01D1FFF7BDFF3E004836B46808 -:10C5C0007368013B04D53368002B22D03668F6E748 -:10C5D0000C22A55E002D1AD12000154B5830E360C7 -:10C5E0006566FDF7D9FFFFF78DFF200008222900BF -:10C5F0002560A560656025616561A5615C30FDF71A -:10C60000F0FF6563A563A564E5642000F8BD6834A8 -:10C61000D7E704213800FFF757FF041E3060D5D15B -:10C62000FFF770FF0C233B60EFE7C046F0F200100D -:10C630000100FFFFF7B50400060000270191483410 -:10C640006368A5680093009B013B009304D52468B0 -:10C65000002CF5D13800FEBDAB89012B08D90E2284 -:10C66000AB5E013304D029003000019B984707439B -:10C670006835E8E7004870474003000870B50E00D1 -:10C680001D000E23C95E140096B0002908DA0C22A2 -:10C69000B35E00222A601B0611D48023DB000FE06A -:10C6A0006A4600F05FFD0028F1DBF02301991B02D0 -:10C6B0001940054BC9184B4259412960EDE7402309 -:10C6C0000020236016B070BD00E0FFFFF7B5022622 -:10C6D0008B8905000C00334206D0230047332360CA -:10C6E000236101236361F7BD6A4601ABFFF7C6FF13 -:10C6F000009907002800FEF715F8002808D10C2241 -:10C70000A35E9A05EFD4032293431E43A681E4E778 -:10C710000F4BAB628023A28920601343A381009B4F -:10C7200020616361019B002B0DD028000E23E15E88 -:10C7300000F02AFD002806D00322A38993431A00A3 -:10C7400001231343A381A0890743A781CBE7C046F8 -:10C75000B9C4001082B0002900D101A9101E06D072 -:10C76000002B06D013780B601078431E984102B05E -:10C77000704702204042FAE7C9B28218904201D1C4 -:10C780000020704703788B42FBD00130F6E70000B1 -:10C7900010B50248FDF702FF10BDC04668600108F1 -:10C7A00010B50248FDF7FBFE10BDC04668600108E9 -:10C7B00070B5456A06000C00002D0ED11020FDF763 -:10C7C000EFFE021E706204D16621194B1948FDF775 -:10C7D00045FE456085600560C560756AEB68002BA5 -:10C7E00013D0736AA200DB689B181868002818D160 -:10C7F00001210D00A5406A1D30009200FDF7F9FEF1 -:10C8000000280CD0446085600DE021220421300016 -:10C81000FDF7EFFE736AE860DB68002BE1D10020D2 -:10C8200070BD02681A6000230361C360F8E7C04668 -:10C8300047F400103AF5001070B5466A05000C0088 -:10C84000002E0ED11020FDF7ABFE021E686204D14F -:10C850008A21094B0948FDF701FE466086600660A3 -:10C86000C660002C07D06B6A6268DB6892009B1878 -:10C870001A6822601C6070BD47F400103AF5001081 -:10C88000F7B50E0001900C001D0000200F69143652 -:10C890003368013099B251431B0C534349190D0CB5 -:10C8A0005B191D0C89B21B045B1808C68742EFDCBC -:10C8B000002D22D0A368BB4219DC63680198591C83 -:10C8C000FFF776FF061E05D10200B5210C4B0D487F -:10C8D000FDF7C4FD210023690C319A1C92000C3035 -:10C8E000FDF776FE21000198FFF7A6FF34003B1DFF -:10C8F0009B00E3185D607B1C23612000FEBDC046E9 -:10C90000BCF400103AF500100300020C0020824233 -:10C9100001D11B0410301A0E01D108301B021A0F6E -:10C9200001D104301B019A0F01D102309B00002B72 -:10C9300003DB01305B0000D4202070470368020055 -:10C940000721180008400B420DD0063900200B4289 -:10C9500005D10230034203D0CB400800136070477A -:10C960009B081360FBE799B2002901D110201B0C32 -:10C97000D9B2002901D108301B0A190701D10430AE -:10C980001B09990701D102309B08D907E9D401306E -:10C990005B08E6D12020E2E710B50C000121FFF78B -:10C9A00007FF002806D1A0210200044B04484900DB -:10C9B000FDF754FD01234461036110BDBCF4001078 -:10C9C0003AF50010F0B50B69140012690D0089B03A -:10C9D000934201DA25000C002F6926696968BB19AA -:10C9E0000293AB68BA19934200DA0131FFF7E0FE17 -:10C9F0000190002806D15E210200484B4848FF31D3 -:10CA0000FDF72CFD019B002214339C46BB199B00B3 -:10CA100063440393634603998B422CD32B0022007B -:10CA20001433BF0014320693B600DB190493931934 -:10CA30000793042305932B00049915330092994220 -:10CA400005D34B1B153B9B0801339B000593079BAC -:10CA5000009A9A4211D3029B002B06DD039B043BF4 -:10CA600003931B680093002B53D0019B029A18007C -:10CA70001A6109B0F0BD04C3CDE7009B1B6898B2F2 -:10CA800000281BD067460024069E02CE3A688BB26F -:10CA9000434392B29B181B190C0C44433A68110C87 -:10CAA00061181C0C09190C0C9BB209040B4308C734 -:10CAB000049BB342E9D86346059A9C50009B1B68CF -:10CAC0001E0C20D063462C00604600271B681434DF -:10CAD00022689BB291B271430268120C8918CF1977 -:10CAE00039040B43036002CC4368090C71439BB2C9 -:10CAF0003F0CCB18049ADB191F0C0430A242E7D874 -:10CB0000624605995350009B0433009304239C44D0 -:10CB10009DE7029B013B02939DE7C046BCF40010D9 -:10CB20003AF50010F7B50323150007000E001A4070 -:10CB30001D4208D02549013A920052580023310085 -:10CB4000FFF79EFE0600AD103DD07C6A002C0FD191 -:10CB50001020FDF725FD021E786205D1D7211C4B60 -:10CB60001C484900FDF77AFC446084600460C4609E -:10CB70007B6A9C680193002C08D138001649FFF7A6 -:10CB80000BFF019B040098600023036001231D42FA -:10CB90000AD0310022003800FFF714FF3100019065 -:10CBA0003800FFF749FE019E6D100CD02068002868 -:10CBB00007D1220021003800FFF704FF0023206086 -:10CBC00003600400E2E73000FEBDC04690F60010AE -:10CBD00047F400103AF5001071020000F0B50C00A7 -:10CBE00017002369551187B0EB18029301330193A5 -:10CBF0004968A3680490019A934210DB0498FFF7F8 -:10CC0000D7FD0023020006001900143298420CD10F -:10CC1000DA210200264B2748FF31FDF71FFC0131C6 -:10CC20005B00E8E7980011500133AB42FADBEB43BD -:10CC3000DB171D401F2123003800AD005519226964 -:10CC400014339200084084469A180F422AD00131CA -:10CC5000091A05910021039567461868B8400143F9 -:10CC6000039802C002CB03900598C1409A42F3D8C2 -:10CC7000200015300423824204D3131B153B9B086C -:10CC800001339B00E950002902D0029B023301933B -:10CC9000019B0498013B21003361FFF7CDFD30007B -:10CCA00007B0F0BD02CB02C59A42FBD8F0E7C04600 -:10CCB000BCF400103AF5001002690B6930B50400AD -:10CCC000D01A9A420DD19B0014341431E218C918BD -:10CCD000043A043915680B689D4203D001209D4237 -:10CCE00003D330BD9442F3D3FBE74042F9E70000A1 -:10CCF000F0B50E0007001100300087B01400FFF7F8 -:10CD0000DBFF051E10D101003800FFF751FD021EA8 -:10CD100004D1404B40494148FDF7A0FB0123456148 -:10CD20000361100007B0F0BD01230193002804DB6C -:10CD3000230034001E000023019338006168FFF7D0 -:10CD400037FD021E03D19021324B8900E3E7019B9E -:10CD50000027C360206914340194019B84001B19CF -:10CD60003400029333691434990063180393130059 -:10CD700014339C460593019B0493049B02CC20CB67 -:10CD80000493ABB2DF198BB2FB1A090C2D0C6D1A90 -:10CD900019146D1861462F149BB22D042B4308C142 -:10CDA000039B8C46A342E8D83100039C1531042331 -:10CDB0008C4204D3A31B153B9B0801339B000199B4 -:10CDC000CC1805992600CB189C4602998E4210D3A8 -:10CDD000029EE11E00258E4204D3310003310C1B5C -:10CDE000A408A5005B19043B196800290FD0106145 -:10CDF00097E702CE8DB2ED190F0C291479180F1494 -:10CE0000ADB209040D43614620C18C46DDE701380F -:10CE1000E9E7C046BCF40010320200003AF5001009 -:10CE2000F7B5012114001E00089FFFF7C1FC051E85 -:10CE300005D10200264B27492748FDF70FFB330396 -:10CE400076001B0B760D24D10193002C27D0684669 -:10CE50000094FFF773FD009C00281ED0019B202149 -:10CE60001A00091A8A40C34022436A610193019C57 -:10CE7000AC61631E9C4101342C61002E18D0174B0D -:10CE8000F61835233618181A099B3E6018602800DA -:10CE9000FEBD802252031343D6E76C61E7E701A889 -:10CEA000FFF74CFD0124019B2C616B612030E4E70E -:10CEB0000B4BC0180B4B3860E3189B00EB185869FC -:10CEC000FFF722FD6401099B241A1C60DFE7C046BE -:10CED000BCF400100A0300003AF50010CDFBFFFF80 -:10CEE000CEFBFFFFFFFFFF3F70B504000D001F29C1 -:10CEF00004D9162303600120404270BD436C002B0F -:10CF000004D08A009B181A68002A08D1200000F07B -:10CF100031F82A000100200000F01AF8EDE70020A7 -:10CF2000012AEAD0511C03D1162301302360E4E723 -:10CF3000002428001C6090472000DEE710B5034B5A -:10CF400001001868FFF7D0FF10BDC046EC010008D3 -:10CF5000002370B5064D0400080011002B6000F09E -:10CF60006DFF431C03D12B68002B00D0236070BDE4 -:10CF70007460010810B500F051FF10BD70B50C00D1 -:10CF80000E25495F00F026F9002803DB636D1B18AE -:10CF9000636570BDA389024A1340A381F9E7C046C7 -:10CFA000FFEFFFFFF8B51F008B8905000C0016008E -:10CFB000DB0505D50E23C95E0022022300F0F6F83A -:10CFC000A389054A28001340A38132000E23E15EA5 -:10CFD0003B0000F02DF8F8BDFFEFFFFF70B50C002F -:10CFE0000E25495F00F0E2F8A389421C03D1054AEF -:10CFF0001340A38170BD802252011343A381606559 -:10D00000F8E7C046FFEFFFFF10B50E23C95E00F042 -:10D0100023F810BD0300081E05D0FF2A04D98A2278 -:10D0200001201A604042704701200A70FBE70000AF -:10D0300070B50400080011001A000023054D2B6094 -:10D04000F6F7B6FA431C03D12B68002B00D02360FF -:10D0500070BDC04674600108002370B5064D040021 -:10D0600008002B6000F0CAFE431C03D12B68002B84 -:10D0700000D0236070BDC0467460010870B5050023 -:10D080000C1E02D10026300070BD002804D0836938 -:10D09000002B01D1FFF74EFA2F4B9C4217D16C6841 -:10D0A000636EDB0705D4A3899B0502D4A06DFDF751 -:10D0B00075FA0C22A35E002B13D1626E01331600A9 -:10D0C0001E401A42DED1A06DFDF769FADBE7234B63 -:10D0D0009C4201D1AC68E3E7214B9C42E0D1EC6873 -:10D0E000DEE721002800FFF7F7F8236B0600002B8E -:10D0F00006D02800216A9847002801DA01267642E6 -:10D10000A3891B0603D528002169FDF79FFA616BEF -:10D11000002908D023004433994202D02800FDF7AB -:10D1200095FA00236363A16C002904D02800FDF761 -:10D130008DFA0023A364FFF7DDF90023A381636E5A -:10D14000DB0702D4A06DFDF72AFAA06DFDF725FAE2 -:10D15000FFF7D8F997E7C046F0F4001010F500107B -:10D16000D0F40010002370B5064D04000800110033 -:10D170002B6000F04BFE431C03D12B68002B00D02A -:10D18000236070BD74600108002370B5064D040073 -:10D1900008002B6000F04AFE431C03D12B68002BD3 -:10D1A00000D0236070BDC0467460010870B50400F3 -:10D1B000080011001A000023054D2B6000F046FE08 -:10D1C000431C03D12B68002B00D0236070BDC046E8 -:10D1D0007460010870B50400080011001A000023F3 -:10D1E000054D2B60F6F704FA431C03D12B68002B86 -:10D1F00000D0236070BDC0467460010802B471465F -:10D2000049084900095C49008E4402BC7047C04689 -:10D2100003B47146490840004900095E49008E4444 -:10D2200003BC7047F0B54F464646D6460D00040095 -:10D23000C0B51F0011002803620F400A10437A0096 -:10D24000520DE3003C039146640AFA0F4F0F6E0043 -:10D2500027439246B846760DED0FC900954200D19E -:10D2600099E04C46341BA446002C00DC7CE04A4686 -:10D27000002A00D1B8E0C54A964200D11CE18022C4 -:10D280003C0012041443A0466246382A00DD61E1E6 -:10D290001F2A00DDCCE164462022121B4446944044 -:10D2A0000F00A14664469140E7404C464A1E91411A -:10D2B0003C43424621436446E240801A5C1AA34242 -:10D2C0009B415F42C71B3B0200D4D0E07F027F0A34 -:10D2D000002F00D1FFE03800FCF78AFF0100083979 -:10D2E000202322005B1A8F40DA408C401743B14262 -:10D2F00000DAFFE0891B4B1C1F2B00DDA8E0202279 -:10D300003900D21A200094409140D840621E9441C6 -:10D31000DF40002601430C43630709D00F2323405D -:10D32000042B05D0231DA342A44164423F191C00D5 -:10D330003B0200D49EE0954B01369E4200D1B7E0FF -:10D34000934AE40817407B0771057F0223433F0B94 -:10D350004A0D12053A43ED072A4318001100E0BCBC -:10D36000BA46B146A846F0BD002C4BD04C46A41B93 -:10D37000A446002E00D023E104001C4300D1AFE1FD -:10D380006246541E012A00D115E2804DAC4500D101 -:10D39000C8E1A4461BE14A46B21A9446002A00DCC2 -:10D3A000ACE04A46002A43D0784A964200D1AFE129 -:10D3B00080223C0012041443A0466246382A67DCEF -:10D3C0001F2A00DC5FE14746203AD7406246202A08 -:10D3D00005D064464022121B4446944021434A1E15 -:10D3E00091410C003C4357E03A000A4300D105E16B -:10D3F0002200013A012C00D182E1644CA4455BD0AB -:10D40000944641E7634C771C274200D0C4E00400F7 -:10D410001C43002E00D069E1002C00D1BFE144463E -:10D420000C4300D0D0E14207DB081343C00829E0D9 -:10D430003A000A4300D170E162466446013A012C89 -:10D4400000D1E0E0514CA44500D161E19446B4E73D -:10D450003A001F39CA401100202B03D04022D31AB2 -:10D460009F403C43631E9C41002700260C436307FA -:10D4700000D053E7B446E4087B072343F808434A47 -:10D4800094451DD06246070352053F0B520D60E7DD -:10D4900044460C43621E9441E4189C429B415F4207 -:10D4A0003F183B02E3D5394B01369E4200D0B5E030 -:10D4B0003200002700234CE74207DB081343C00873 -:10D4C0001A00024300D1E1E180273F0307433F03F5 -:10D4D0002E4A3F0B3DE72000FCF78AFE0100183181 -:10D4E0001F2900DCFCE60838844027000024B142F4 -:10D4F00000DBFFE6264A761A17400DE7002A2FD0F8 -:10D500004A46921B9446002E00D1ADE01F4A914539 -:10D5100000D10FE18022120410436246382A00DD58 -:10D520000FE11F2A00DD80E1644620221E00121B4D -:10D530006746040093409440FE405A1E9341F840D1 -:10D5400034431C43804464188C42BF417F424E46A2 -:10D550004744A6E742460A4311004A1E9141ADE600 -:10D560000C4C721C224200D0A1E002001A43002E93 -:10D5700000D0FAE0002A00D145E13A000A4300D089 -:10D5800046E14207DB081343C0087BE7FF070000C2 -:10D59000FFFF7FFFFE07000047465C1AC21BA34245 -:10D5A000BF417F42B94617004A46BF1A3A0200D52A -:10D5B0008DE023003B4300D08AE60020002561E790 -:10D5C000B44CA14500D1ADE080242404204364463E -:10D5D000382C3DDC62461F2C00DDB7E020251E0004 -:10D5E0002D1B0400AB40AC40D640D04042465D1EEF -:10D5F000AB413443121A904623432CE04207DB0828 -:10D600001343C0083BE75C189C429B4140445B428B -:10D61000C71801263B0200D429E702269E4A630868 -:10D620001740012214401C43FB071C437F0873E68C -:10D630004446203AD4406246202A05D0674640221C -:10D64000D21B4746974039434A1E9141214335E654 -:10D650000343581E8341CC1AA142BF4143467F4237 -:10D6600055464E46DF1B2EE602001A4300D1BDE0B0 -:10D6700062466446013A012C00D1E5E0854CA445A0 -:10D6800058D0944649E764462022121B44469440F1 -:10D690000F00A14664469140E7404C464A1E914126 -:10D6A0003C4342460C436146CA408018F4E6794C3C -:10D6B000A24200D1FDE6591899429B4140445F4285 -:10D6C000C719FC07490816000C437F08CFE6CC1A9F -:10D6D000A142BF4143467F42181A5546C71BF7E592 -:10D6E000C9087B0755460B43F808C8E6002C00D054 -:10D6F00081E043460B4315D1802000250003E3E67B -:10D700005C1AA3429B41C71B5B420126FF1ADAE564 -:10D710004207DB081343C008D2E64207DB08134385 -:10D72000C008ACE643464246C9085B0755460B4372 -:10D73000D008C5E6434642465B07C9080B43D008FC -:10D74000BEE603431C00631E9C41FCE60200203C35 -:10D75000E24014006246202A03D04025AD1AA840BA -:10D760000343581E8341234375E7002AE2D03A0061 -:10D770000A43CDD04207DB0813438022C0081203BE -:10D78000104206D0FC08144203D12000CB087A07CF -:10D7900013435A0FDB005207DB08134390E643465E -:10D7A0000B4300D109E743464246C9085B0755468B -:10D7B0000B43D00866E6CC1AA14289413F1A494280 -:10D7C000554601267F1A7EE542465C1A871AA34217 -:10D7D00092415242BF1A3A023DD5CC1AA142894128 -:10D7E000434649421F1A55467F1A95E57B07C908EB -:10D7F0000B43F80843E64446DB080C4330D14207AC -:10D800001343C0085CE67B07C9080B43F80839E6F8 -:10D810005C189C429B4140445B42C7183B0200D4C9 -:10D8200025E61D4B01261F4021E60400203AD44086 -:10D830006246202A04D040226646921B9040034351 -:10D840005A1E93411C437EE65C188C428941404439 -:10D8500049424718DDE623003B4300D1ADE606E62A -:10D86000440723438024C0082403204208D04246B2 -:10D87000D608264204D155463000CB0851070B4349 -:10D880005A0FDB00DB085207134319E60023014A55 -:10D890001F005EE5FF070000FFFF7FFFF0B5574662 -:10D8A0004E464546DE46E0B598460C034B00060062 -:10D8B000924687B0240B5B0DCF0F002B00D15CE1AB -:10D8C000D94A934200D175E1420FE400144380220B -:10D8D00012041443D54AC5009446634400930023C0 -:10D8E00099469B46434642461E03D20F5B00504674 -:10D8F0009046360B5B0D00D120E1CB4A934200D11C -:10D9000062E1CA49420F8C4600996344F6008C4696 -:10D91000164380229C44120463461643C200002032 -:10D9200000930099434601318C4649467B40019360 -:10D930000F2926D8BE4B890059588F46434601937C -:10D940003400150083465B46022B16D0032B00D112 -:10D9500003E2012B00D0CDE0002200240025019B32 -:10D9600012052243DB071A432800110007B0F0BC60 -:10D97000BB46B246A946A046F0BD00240025AA4AEF -:10D98000EDE7280C2D042D0C2B00110C1204120CA9 -:10D990005343984613002F00434399464F434F4447 -:10D9A000BB4647460B003F0CBA464343DA4402935A -:10D9B000D14504D980277F02B9464B440293534690 -:10D9C0001B0C9B4653461F0443461B041B0C9846E6 -:10D9D0003B0043440493330C3604360C9846330022 -:10D9E00043439946434643432F009A464346774371 -:10D9F0005D43380C4D444519A94503D980235B028A -:10DA00009946CA443F04280C3F0C2D04ED19270CFD -:10DA10002404240C0300200050437A4391463A002A -:10DA200053440593030C9A464A4361434944514485 -:10DA3000AB44894503D980235B0299464A440004DC -:10DA40000B0C000C0904091820009946434670434A -:10DA50005C437E435F43030C9846A41944444A4404 -:10DA60000397A64204D980235B0298464744039754 -:10DA70002304029E9A46059B5E449846AE42AD4101 -:10DA800076188E4289410004000C504440446D4297 -:10DA90004719B846934649428946C344D9449842F7 -:10DAA0008041A845AD4193459241894589416D42E8 -:10DAB00040422843240C524249420A43039B001926 -:10DAC0008018C7184B46DC0D049B75021D436A1E67 -:10DAD00095414B46F60D7F0235435A023C431543B0 -:10DAE000FB0100D41CE101216A080D401543E20747 -:10DAF000154364084F496144002900DCB0E06B071E -:10DB000009D00F222A40042A05D02A1DAA42AD417D -:10DB10006D4264191500E30104D58021464AC9000D -:10DB200014406144454A914200DD26E76207ED0852 -:10DB3000640249051543240B4A0D10E7524632434F -:10DB400000D17FE0002E00D1DCE03000FCF750FB7C -:10DB500002000B3A1D2301009B1A52460839DA4095 -:10DB60008E40164352468A40009B3549181A0300DE -:10DB70008C46634400200093D3E6250005434AD039 -:10DB8000002C00D1B0E02000FCF732FB01000200C5 -:10DB90000B391D2310005B1A310035000838844012 -:10DBA000D94085400C432648831A009300239946A8 -:10DBB0009B4697E60500254326D1082200930223C1 -:10DBC000002491469B468DE65246009B324310D17D -:10DBD000154900268C4663444946009302231943A5 -:10DBE000894602209DE65B460197022B00D0ADE6F8 -:10DBF000C3E60D4A0320944663444A460093032338 -:10DC00001A43914652468CE60C22009303230500EA -:10DC100091469B4666E60423994600230093013310 -:10DC200000249B465EE6C046FF07000001FCFFFFA4 -:10DC30009CF60010FF030000FFFFFFFEFE07000040 -:10DC40000DFCFFFF494601231943894600260120A8 -:10DC500067E6002380240025434A019324037EE6DF -:10DC60000120401A382800DD76E61F285BDD1F22E0 -:10DC700023005242511ACB401900202803D03B4ABE -:10DC80006244944025436A1E95412A000A430721B5 -:10DC90000D000024154011425BD00F2100241140DB -:10DCA000042953D0111D914292415242A4180A00F6 -:10DCB00023024BD501220024002550E680231B03BC -:10DCC0001C4209D01E4207D133431C0343461500B2 -:10DCD000240B254A019342E68022120314432403B5 -:10DCE000214A240B01973AE6FCF782FA0100020070 -:10DCF000153120321C2900DC4BE7340008380025A0 -:10DD0000844050E7FCF774FA03001A001532203003 -:10DD10001C2A00DC1EE75646083B00229E4023E7F3 -:10DD2000009B9C46E6E61249220061442E008D408D -:10DD30008A40C640691E8D4132432A43C44053077E -:10DD4000B6D00F2111400429ACD1B1E765076402B8 -:10DD5000240BD2081543002201E68022120314434B -:10DD60002403014A240BFAE5FF0700003E040000EB -:10DD70001E04000070B505000C481C0316005B0073 -:10DD80000A034900120B490D240B5B0D814208D098 -:10DD9000064A0020934203D120003043431E98419D -:10DDA00070BD01202A43FBD1F2E7C046FF07000007 -:10DDB00010B5041E10D0FCF71BFA0F4B1B1A0A28D3 -:10DDC00011DC0B222100121AD14015300A035B0529 -:10DDD0008440120B5B0D01E0002300221B0513435E -:10DDE0002000190010BD22000B3882405B05120391 -:10DDF0000024120B5B0DF1E71E04000058220120E5 -:10DE0000014B40421A60704774600108582201209B -:10DE1000014B40421A60704774600108582201208B -:10DE2000014B40421A607047746001085822024B4F -:10DE300000201A607047C046746001085822012013 -:10DE4000014B40421A60704774600108582201205B -:10DE5000014B40421A60704774600108044A030095 -:10DE60001068002802D0C318136070470148FAE711 -:10DE70007860010880600108FEE7C046F8B5C0463A -:10DE8000F8BC08BC9E467047F8B5C046F8BC08BC54 -:10DE90009E4670470000000001B40248844601BC61 -:10DEA000604700BF0906000801B40248844601BC6F -:10DEB000604700BFA5040008000000000800000043 -:10DEC0000800000000020000000000000000000048 -:10DED0000000000000000000000000000000000042 -:10DEE000000000000B0000003F00000000000000E8 -:10DEF0003F00000000000000010000000B000000D7 -:10DF00001D000000000000000000000000000000F4 -:10DF10000000000001000000000000000000000000 -:10DF200000000000000000000000000001000000F0 -:10DF30000A0000001D0000000000000000000000BA -:10DF400000000000000000000100000000000000D0 -:10DF500000000000000000000000000000000000C1 -:10DF600001000000060000001D000000000000008D -:10DF700000000000000000000000000001000000A0 -:10DF80000000000000000000000000000000000091 -:10DF90000000000001000000080000001200000066 -:10DFA0000000000000000000000000000000000071 -:10DFB0000100000000000000000000000000000060 -:10DFC000000000000000000001000000060000004A -:10DFD000120000000000000000000000000000002F -:10DFE0000000000001000000000000000000000030 -:10DFF0000000000000000000000000000100000020 -:10E000000000000000000000000000000000000010 -:10E0100000000000000000000100000000000000FF -:10E0200000000000000000000000000000000000F0 -:10E0300001000000000000000000000000000000DF -:10E0400000000000000000000000000001000000CF -:10E0500000000000000000000000000000000000C0 -:10E0600000000000010000000300000000000000AC -:10E0700000000018000000040000000058E100103B -:10E080006000000000000000FFFFFFFF0000000034 -:10E090000000000000000000DC00000000000000A4 -:10E0A000FFFFFFFF00000000000000000000000074 -:10E0B0003400000000000000FFFFFFFF020000002E -:10E0C0000000000002000000EC0000000002000060 -:10E0D0000100000002000000040000000200000037 -:10E0E0003500000000000000FFFFFFFF00000000FF -:10E0F000000000000000000005000000000000001B -:10E10000FFFFFFFF00000000000000000000000013 -:10E110000400000000000000FFFFFFFF00000000FF -:10E1200000000000000000000600000000000000E9 -:10E13000FFFFFFFF000000000000000000000000E3 -:10E140000100000000000000FFFFFFFF00000000D2 -:10E1500000000000000000000400000000000004B7 -:10E16000C8E0001028E1001010E1001098E0001055 -:10E170000000040080E00010B0E000100002000089 -:10E18000F8E00010E0E0001040E1001000000000A6 -:10E190000100000002000000280A0000E00407005F -:10E1A0001405000000000000000000000100000055 -:10E1B000BCE10010020000001400000064E0001048 -:10E1C000F4010000140004010A000905080003001E -:10E1D0006301000024010200000000005B494E467C -:10E1E0005D205374617274696E6720557365722087 -:10E1F0004170706C69636174696F6E206F6E20434B -:10E200004D342E20506C6561736520776169742EE2 -:10E210002E2E0A0D000000005B494E465D201B5B60 -:10E22000324A1B5B3B480A0D000000005B494E462A -:10E230005D204D4355626F6F7420426F6F746C6F39 -:10E240006164657220537461727465640A0D000024 -:10E250005B494E465D2045787465726E616C204D59 -:10E26000656D6F727920696E697469616C697A6530 -:10E2700064207573696E6720534644500A0D000090 -:10E280005B4552525D2045787465726E616C204D1D -:10E29000656D6F727920696E697469616C697A6104 -:10E2A00074696F6E207573696E6720534644502001 -:10E2B0004641494C45443A203078253032780A0DA1 -:10E2C000000000005B494E465D2055736572204199 -:10E2D00070706C69636174696F6E2076616C6964DB -:10E2E00061746564207375636365737366756C6CC4 -:10E2F000790A0D005B494E465D204D4355626F6FB4 -:10E300007420426F6F746C6F6164657220666F7504 -:10E310006E64206E6F20626F6F7461626C6520693D -:10E320006D6167650A0D0000030000000100000038 -:10E330000100000000000000050360000400000070 -:10E340000100000000000000010000000604600061 -:10E3500008000000F0080008A905001028696D6198 -:10E3600067655F6E756D29203C203078460000009F -:10E370002E2E2F6D74625F7368617265642F6D63FA -:10E3800075626F6F742F76312E372E302D63797052 -:10E39000726573732F626F6F742F626F6F74757411 -:10E3A000696C2F7372632F626F6F747574696C5F21 -:10E3B0006D6973632E63000028737761705F7479F1 -:10E3C000706529203C2030784600000062616400BE -:10E3D000676F6F6400000000756E73657400000065 -:10E3E00074657374000000007065726D00000000B9 -:10E3F0004255473B2063616E2774206861707065E9 -:10E400006E0000007265766572740000626F6F7452 -:10E410005F737761705F747970655F6D756C746937 -:10E420003A205072696D61727920696D616765008B -:10E430005B494E465D2025733A206D616769633DF7 -:10E4400025732C20737761705F747970653D307827 -:10E4500025782C20636F70795F646F6E653D30782E -:10E4600025782C20696D6167655F6F6B3D3078257D -:10E47000780A0D00626F6F745F737761705F7479F3 -:10E4800070655F6D756C74693A205365636F6E6477 -:10E4900061727920696D6167650000005B494E46D5 -:10E4A0005D205377617020747970653A2025730A76 -:10E4B0000D0000005B494E465D205377617020746B -:10E4C0007970653A206E6F6E650A0D00626F6F7429 -:10E4D0005F77726974655F737761705F696E666F8D -:10E4E0000000000077C295F360D2EF7F3552500FE5 -:10E4F0002CB679800401040304020401040104031E -:10E500000103030401040000000000006FC75E1057 -:10E51000DE8EBD20B149E330BC1D7B41D3DA2551ED -:10E520006293C6610D549871783BF68217FCA892ED -:10E53000A6B54BA2C97215B2C4268DC3ABE1D3D325 -:10E540001AA830E3756F6EF37365636F6E64617262 -:10E55000790000007072696D617279005B455252FA -:10E560005D20496D61676520696E207468652025AE -:10E570007320736C6F74206973206E6F74207661E2 -:10E580006C6964210A0D00007263203D3D2030005B -:10E590002E2E2F6D74625F7368617265642F6D63D8 -:10E5A00075626F6F742F76312E372E302D63797030 -:10E5B000726573732F626F6F742F626F6F747574EF -:10E5C000696C2F7372632F6C6F616465722E6300C8 -:10E5D0005B4552525D2070616E6963210A0D000037 -:10E5E000300000005B57524E5D204661696C6564E7 -:10E5F0002072656164696E6720736563746F7273FE -:10E600003B20424F4F545F4D41585F494D475F5348 -:10E610004543544F52533D2564202D20746F6F2085 -:10E62000736D616C6C3F0A0D000000005B57524E29 -:10E630005D204661696C65642072656164696E671E -:10E6400020696D61676520686561646572733B2050 -:10E65000496D6167653D25750A0D00005B57524E97 -:10E660005D204661696C65642072656164696E67EE -:10E6700020626F6F74207374617475733B20496DF1 -:10E680006167653D25750A0D000000005B4552522B -:10E690005D2062616420696D616765206D616769F5 -:10E6A00063203078256C783B20496D6167653D2596 -:10E6B000750A0D00626F6F745F706572666F726DC0 -:10E6C0005F75706461746500626F6F745F7377610A -:10E6D000705F696D61676500626F6F745F636F6D16 -:10E6E000706C6574655F7061727469616C5F73777B -:10E6F00061700000626F6F745F7072657061726547 -:10E700005F696D6167655F666F725F757064617484 -:10E7100065000000636F6E746578745F626F6F747C -:10E720005F676F002E2E2F6D74625F736861726574 -:10E73000642F6D6375626F6F742F76312E372E30B4 -:10E740002D637970726573732F626F6F742F626FB0 -:10E750006F747574696C2F7372632F737761705F58 -:10E760007374617475732E63000000005B45525230 -:10E770005D20446574656374656420696E636F6EC3 -:10E7800073697374656E7420737461747573210A90 -:10E790000D0000005B57524E5D2043616E6E6F743A -:10E7A00020757067726164653A206E6F7420612015 -:10E7B000636F6D70617469626C6520616D6F756EF9 -:10E7C00074206F6620736563746F72730A0D0000A6 -:10E7D0005B57524E5D2043616E6E6F74207570679B -:10E7E000726164653A206D6F726520736563746F42 -:10E7F0007273207468616E20616C6C6F7765640A57 -:10E800000D0000005B57524E5D2043616E6E6F74C9 -:10E8100020757067726164653A206E6F7420736151 -:10E820006D6520736563746F72206C61796F7574A8 -:10E830000A0D0000737761705F7374617475735FA4 -:10E84000736F757263653A205072696D61727920D9 -:10E85000696D6167650000005B494E465D20426F4F -:10E860006F7420736F757263653A207072696D61A1 -:10E87000727920736C6F740A0D0000005B494E467C -:10E880005D20426F6F7420736F757263653A206EFE -:10E890006F6E650A0D00000066697875705F7265BD -:10E8A000766572743A205365636F6E646172792085 -:10E8B000696D616765000000626F6F745F737761F7 -:10E8C000705F736563746F7273000000626F6F74C2 -:10E8D0005F6D6F76655F736563746F725F757000EF -:10E8E000737761705F72756E0000000066697875FD -:10E8F000705F7265766572740000000073776170F6 -:10E900005F7374617475735F736F75726365000014 -:10E91000737761705F726561645F7374617475733E -:10E920005F627974657300005B494E465D204572F5 -:10E930006173696E6720747261696C65723B2066F1 -:10E94000615F69643D25640A0D0000002E2E2F6D65 -:10E9500074625F7368617265642F6D6375626F6F57 -:10E96000742F76312E372E302D6379707265737364 -:10E970002F626F6F742F626F6F747574696C2F7371 -:10E9800072632F737761705F7374617475735F6DF9 -:10E990006973632E63000000737761705F72656155 -:10E9A000645F737461747573000000007377617045 -:10E9B0005F7374617475735F696E69740000000041 -:10E9C000737761705F65726173655F747261696CA2 -:10E9D00065725F736563746F727300002E2E2F6D06 -:10E9E00074625F7368617265642F6D6375626F6FC7 -:10E9F000742F76312E372E302D63797072657373D4 -:10EA00002F626F6F742F626F6F747574696C2F73E0 -:10EA100072632F737761705F7374617475735F7065 -:10EA20006172742E63000000286F666673202B20CD -:10EA30006C656E29203C3D20424F4F545F53574137 -:10EA4000505F5354415455535F445F53495A455F97 -:10EA500052415700696E69745F6F666673203E3D70 -:10EA600020300000737761705F7374617475735F39 -:10EA70007265747269657665000000007377617075 -:10EA80005F7374617475735F77726974655F7265C3 -:10EA9000636F726400000000737761705F7374616C -:10EAA0007475735F7570646174650000737761706D -:10EAB0005F7374617475735F726561645F726563BF -:10EAC0006F726400AFBEADDE6F6666203C2066618B -:10EAD0002D3E66615F6F6666000000002E2E2F6D72 -:10EAE00074625F7368617265642F6D6375626F6FC6 -:10EAF000742F76312E372E302D63797072657373D3 -:10EB00002F626F6F742F637970726573732F6379DF -:10EB10005F666C6173685F70616C2F63795F666CB0 -:10EB20006173685F6D61702E630000006F66662020 -:10EB30002B206C656E203C2066612D3E66615F6F08 -:10EB4000666600005B4552525D20466C617368202A -:10EB5000617265612072656164206572726F722CEA -:10EB6000207263203D2025640A0D000021286C6579 -:10EB70006E20252043595F464C4153485F53495A04 -:10EB8000454F465F524F57290000000021287772F9 -:10EB90006974655F73746172745F61646472202567 -:10EBA0002043595F464C4153485F53495A454F46AD -:10EBB0005F524F57290000006C656E203C3D206677 -:10EBC000612D3E66615F73697A6500006F6666203D -:10EBD0003C2066612D3E66615F73697A65000000C6 -:10EBE0006F6666202B206C656E203C2066612D3E92 -:10EBF00066615F6F6666202B2066612D3E66615FF1 -:10EC000073697A65000000007263203D3D2043591E -:10EC10005F464C4153485F4452565F53554343450A -:10EC20005353000066616C73650000007365637484 -:10EC30006F72735F6E203C3D202A636E740000008B -:10EC4000666C6173685F617265615F6765745F734D -:10EC50006563746F72730000666C6173685F6172E4 -:10EC600065615F6572617365645F76616C00000069 -:10EC7000666C6173685F617265615F65726173651F -:10EC800000000000666C6173685F617265615F77A8 -:10EC90007269746500000000666C6173685F617280 -:10ECA00065615F7265616400010000000E00000094 -:10ECB0001100000000000000000000000000000043 -:10ECC0000000000001000000000000000000000043 -:10ECD0000000000000000000000000000100000033 -:10ECE0000E00000011000000000000000000000005 -:10ECF0000000000000000000010000000000000013 -:10ED00000000000000000000000000000000000003 -:10ED1000010000000E0000001100000000000000D3 -:10ED200000000000000000000000000001000000E2 -:10ED300000000000000000000000000000000000D3 -:10ED400000000000010000000E00000011000000A3 -:10ED500000000000000000000000000000000000B3 -:10ED600001000000000000000000000000000000A2 -:10ED7000000000000000000001000000060000008C -:10ED80001100000000000000000000000000000072 -:10ED90000000000001000000000000000000000072 -:10EDA0000000000000000000000000000000000063 -:10EDB000010000000100000000000000010001004F -:10EDC00000010001A10FB90BD107DC05E903EE0238 -:10EDD000F5017701FB00BC007E005E003F002F00C4 -:10EDE0002000180010000C000800060004000300BA -:10EDF0000200020001000100000020400000244049 -:10EE000000000040000000000000234000003040EF -:10EE10000000314000009F400000224000001040F0 -:10EE200000009D402020202020101010101D1D806B -:10EE300017007500FF0306020600360410200000CC -:10EE40007FC0000000040000000000000019324BE9 -:10EE5000647D0000000000804000080B10000000EE -:10EE60000000FF012002001F00800004FF081018AE -:10EE7000001000140018001C4044484C50000000D2 -:10EE8000081000000800000004000000041000004A -:10EE90000012000004210000002100000016000004 -:10EEA00040114002C41300138013A01340138813B1 -:10EEB000A81320001C000000040000004000000017 -:10EEC0004400000048000000800000000001000035 -:10EED000100200008802000000040000100400007E -:10EEE00020040000400400004804000080040000EA -:10EEF0008404000090040000C0070000C407000064 -:10EF0000C8070000CC07000000400000041000000B -:10EF1000401000004410000048100000C014000021 -:10EF20000011000018020000980200000014000008 -:10EF300010140000201400004014000048140000C9 -:10EF400080140000841400009014000000010000F0 -:10EF500004010000080100000C0100000080000016 -:10EF6000AA3D0010D43D0010FE3D0010263E0010CA -:10EF7000523E0010A83E00107C3E00100123456761 -:10EF800089ABCDEFFEDCBA9876543210F0E1D2C3F3 -:10EF9000D89E05C107D57C3617DD703039590EF77C -:10EFA000310BC0FF11155868A78FF964A44FFABE42 -:10EFB00067E6096A85AE67BB72F36E3C3AF54FA50A -:10EFC0007F520E518C68059BABD9831F19CDE05B36 -:10EFD0005D9DBBCBD89E05C12A299A6207D57C3698 -:10EFE0005A01599117DD7030D8EC2F1539590EF7A9 -:10EFF00067263367310BC0FF874AB48E11155868F6 -:10F000000D2E0CDBA78FF9641D48B547A44FFABE3F -:10F0100067E6096A08C9BCF385AE67BB3BA7CA842B -:10F0200072F36E3C2BF894FE3AF54FA5F1361D5F56 -:10F030007F520E51D182E6AD8C68059B1F6C3E2B32 -:10F04000ABD9831F6BBD41FB19CDE05B79217E13EA -:10F05000C8373D8CA24D54196699E173D6D4DC892A -:10F06000AEB7FA1D829CFF3214D59D67CF9F2F58F3 -:10F07000692B6D0FA84DD47B736FE3774289C4046D -:10F08000A8859D3FC8361D6AADE61211A192D691A2 -:10F09000942131222CF72BFCA35F559FC2644CC8EE -:10F0A0006BB8932351B1536F19773896BDEA405925 -:10F0B000E23E2896E3FF8EA8251E5EBE9239865357 -:10F0C000FC99012BAAB8852CDC2DB70EA22CC5818A -:10F0D000BE400010FA400010DC4000103841001023 -:10F0E0001A41001058410010784100106745230173 -:10F0F000EFCDAB8998BADCFE10325476C3D2E1F082 -:10F10000C1059ED8367CD5073070DD17F70E59390A -:10F11000FFC00B316858151164F98FA7BEFA4FA4D0 -:10F120006A09E667BB67AE853C6EF372A54FF53A98 -:10F13000510E527F9B05688C1F83D9AB5BE0CD19C4 -:10F14000CBBB9D5DC1059ED8629A292A367CD50726 -:10F150009159015A3070DD17152FECD8F70E593937 -:10F1600067332667FFC00B318EB44A876858151184 -:10F17000DB0C2E0D64F98FA747B5481DBEFA4FA4CE -:10F180006A09E667F3BCC908BB67AE8584CAA73BBA -:10F190003C6EF372FE94F82BA54FF53A5F1D36F1E5 -:10F1A000510E527FADE682D19B05688C2B3E6C1FC1 -:10F1B0001F83D9ABFB41BD6B5BE0CD19137E217979 -:10F1C0008C3D37C819544DA273E1996689DCD4D6B9 -:10F1D0001DFAB7AE32FF9C82679DD514582F9FCF82 -:10F1E0000F6D2B697BD44DA877E36F7304C48942FC -:10F1F0003F9D85A86A1D36C81112E6AD91D692A131 -:10F2000022312194FC2BF72C9F555FA3C84C64C27C -:10F210002393B86B6F53B151963877195940EABDB3 -:10F2200096283EE2A88EFFE3BE5E1E2553863992E5 -:10F230002B0199FC2C85B8AA0EB72DDC81C52CA218 -:10F24000BE600010DE600010D4600010CA600010C4 -:10F25000C0600010B6600010186300102863001032 -:10F260003A6300104C6300102863001028630010FC -:10F27000000000007494001062940010409400108C -:10F280006A940010409400104297001040940010BF -:10F290006A9400106294001062940010429700106B -:10F2A0006A9400102C9400102C9400102C940010E0 -:10F2B000B89700102C2066756E6374696F6E3A20E3 -:10F2C00000617373657274696F6E2022257322204A -:10F2D0006661696C65643A2066696C6520222573F5 -:10F2E000222C206C696E65202564257325730A0025 -:10F2F000F0010008232D302B2000686C4C0065665F -:10F300006745464700494E4600696E66004E414ECD -:10F31000006E616E003000303132333435363738AC -:10F320003941424344454600303132333435363773 -:10F330003839616263646566000020202020202047 -:10F340002020202828282828202020202020202095 -:10F350002020202020202020202088101010101095 -:10F3600010101010101010101010040404040404E5 -:10F3700004040404101010101010104141414141C8 -:10F38000410101010101010101010101010101012D -:10F3900001010101011010101010104242424242BE -:10F3A00042020202020202020202020202020202FD -:10F3B00002020202021010101020000000000000E3 -:10F3C000000000000000000000000000000000003D -:10F3D000000000000000000000000000000000002D -:10F3E000000000000000000000000000000000001D -:10F3F000000000000000000000000000000000000D -:10F4000000000000000000000000000000000000FC -:10F4100000000000000000000000000000000000EC -:10F4200000000000000000000000000000000000DC -:10F4300000000000000000000000496E66696E696F -:10F440007479004E614E005245454E54206D616CFA -:10F450006C6F6320737563636565646564002F6812 -:10F460006F6D652F706172616C6C656C732F746F5A -:10F470006F6C636861696E2F6763632D61726D2DB8 -:10F480006E6F6E652D656162692D31302E332D32C0 -:10F490003032312E30372F7372632F6E65776C697F -:10F4A000622F6E65776C69622F6C6962632F73746B -:10F4B000646C69622F64746F612E630042616C6CCE -:10F4C0006F632073756363656564656400000000A5 -:10F4D000000000000000000000000000000000002C -:10F4E000000000000000000000000000000000001C -:10F4F000000000000000000000000000000000000C -:10F5000000000000000000000000000000000000FB -:10F5100000000000000000000000000000000000EB -:10F5200000000000000000000000000000000000DB -:10F530004300504F534958002E002F686F6D652FC0 -:10F54000706172616C6C656C732F746F6F6C636843 -:10F5500061696E2F6763632D61726D2D6E6F6E65CD -:10F560002D656162692D31302E332D323032312ECE -:10F5700030372F7372632F6E65776C69622F6E65FB -:10F58000776C69622F6C6962632F7374646C696253 -:10F590002F6D707265632E63000000000000000094 -:10F5A0000080E03779C34143176E05B5B5B893467F -:10F5B000F5F93FE9034F384D321D30F94877825A4B -:10F5C0003CBF737FDD4F1575000000000000F03F69 -:10F5D000000000000000244000000000000059402E -:10F5E0000000000000408F40000000000088C34081 -:10F5F00000000000006AF8400000000080842E41F6 -:10F6000000000000D01263410000000084D7974141 -:10F610000000000065CDCD41000000205FA0024247 -:10F62000000000E876483742000000A2941A6D42BC -:10F63000000040E59C30A2420000901EC4BCD642AF -:10F6400000003426F56B0C430080E03779C341435A -:10F6500000A0D8855734764300C84E676DC1AB43D0 -:10F66000003D9160E458E143408CB5781DAF1544EE -:10F6700050EFE2D6E41A4B4492D54D06CFF08044C9 -:10F68000F64AE1C7022DB544B49DD9794378EA44DE -:10F6900005000000190000007D00000082D9001064 -:10F6A00040D9001040D900103CD9001046D90010B4 -:10F6B00046D9001052DC00103CD9001046D9001089 -:10F6C00052DC001046D900103CD90010E6DB0010D7 -:10F6D000E6DB0010E6DB0010BCDC001000000000E0 -:08F6E000209BFF7F01000000E8 -:10F6E80000000010000000088000000008F700106B -:08F6F80080000008A0060000DC -:08F7000074070008085901001C -:10F7080000093D0000127A0000093D000000D00702 -:10F71800A00F000004000000FFFFFFFFFFFFFFFF36 -:10F72800B4000008C0000008CC000008D800000899 -:10F7380000000000007F00000000001000800100B1 -:10F74800017F00000080011000001C000280000002 -:10F758000000001800001C00077F000000801D103A -:10F768000048000001000000060000001100000031 -:10F778000000000000000000000000000000000081 -:10F788000100000000000000000000000000000070 -:10F79800000000000000000004000000000000005D -:10F7A800F05E0108545F01083C5F0108C05E010873 -:10F7B80000000000A85E0108D85E010800000000F3 -:10F7C800085F0108205F01086C5F0108BC010008A0 -:10F7D8000000000000000000000000000000000021 -:10F7E8000000000000000000000000000100000010 -:10F7F80004000000000000000000001800000000E5 -:10F8080000000000180100086C0100088005314064 -:10F8180002000000110000008005314001000000D6 -:10F8280011000000800531400000000011000000B8 -:10F838000006314004000000110000005A000000DA -:10F8480000000000FFFFFFFF0000000008000000AC -:10F85800000000000100000088010008000000000E -:10F86800000000000700A00001000000F0010008EF -:10F8780000000000F0F4001010F50010D0F40010A3 -:10F888000000000000000000000000000000000070 -:10F898000000000000000000000000000000000060 -:10F8A8000000000000000000000000000000000050 -:10F8B8000000000000000000000000000000000040 -:10F8C8000000000000000000000000000000000030 -:10F8D80043000000000000000000000000000000DD -:10F8E8000000000000000000000000000000000010 -:10F8F80043000000000000000000000000000000BD -:10F9080000000000000000000000000000000000EF -:10F91800430000000000000000000000000000009C -:10F9280000000000000000000000000000000000CF -:10F93800430000000000000000000000000000007C -:10F9480000000000000000000000000000000000AF -:10F95800430000000000000000000000000000005C -:10F96800000000000000000000000000000000008F -:10F97800430000000000000000000000000000003C -:10F98800000000000000000000000000000000006F -:10F99800430000000000000000000000000000001C -:10F9A800000000000000000000000000000000004F -:10F9B80015D0001055C700100000000039F30010E2 -:10F9C80038F50010EFF20010EFF20010EFF200101F -:10F9D800EFF20010EFF20010EFF20010EFF200105B -:10F9E800EFF20010EFF20010FFFFFFFFFFFFFFFF35 -:10F9F800FFFFFFFFFFFF000001004153434949009B -:10FA080000000000000000000000000000000000EE -:10FA18000000000000000000000041534349490075 -:10FA280000000000000000000000000000000000CE -:10FA3800000000000000000000000000A900001005 -:10FA48008100001010B50004440B002827D0144B87 -:10FA58001A68136ABA21515ACA00521A9B181B68AD -:10FA6800002BF4DA0F4B3E221A600F4B0F4A1A6034 -:10FA78000F4BA322D200062199500E4A9C509B5846 -:10FA8800074B1A68136AB431515ACA00521A9B18A4 -:10FA980000225A60064A074BD358002BFADA10BDE9 -:10FAA800D45F010804012640080126401E1F0000FB -:10FAB800000026401C05000010B54378FF2B00D03D -:10FAC80010BD00F035F9124B1A683323D35C032BB1 -:10FAD80000D801BE0E4B1A68136ABA21515A4A005F -:10FAE80052189B18DB680B4A13600B4A00211160FF -:10FAF80001310A4A11605A68094B1A6013680B43AE -:10FB080013601368DB07FCD400F03AF9D8E7C04665 -:10FB1800D45F010800600108F45F0108F85F01087C -:10FB2800FC5F0108F0B583B0009001914D4B1A6855 -:10FB38003323D35C002B00D101BE4A4B1B681F6ADC -:10FB4800BC229C58E4196C3A9B5C002B69D000F0ED -:10FB5800E7F8060003280ED000F0EAF80500424A4C -:10FB6800424BD358002B3DDB414C032E52D028008A -:10FB780000F006F96DE03B4B1A683323D35C062B83 -:10FB880000D801BE374B1968BA23CA5A53009A18CD -:10FB980052000B6A9C466244BC23CB589B181B68D6 -:10FBA800002B5BDB002000F0DBF8324B984257D08B -:10FBB800314B1A6800230021012000F0D9F8051EF6 -:10FBC80002D02B4C45E00135002000F0C9F8294B44 -:10FBD800984202D0294B9D42F5D9284B9D42BBD96A -:10FBE800234C36E0264A0121380000F0A9F8002805 -:10FBF80001D01F4CB9E70198FFF724FF009B002BA9 -:10FC080006D02368002BFCDB00F0C2F80400ACE748 -:10FC18001C4CAAE70121002000F09AF80028F9D12D -:10FC2800A5E700F085F80600154A0121380000F024 -:10FC380087F8002809D1009B002B0DD02368002BE2 -:10FC4800FCDB00F0A5F8040000E0094C300000F0EF -:10FC580097F8200003B0F0BD0A4CF7E7044CF8E72A -:10FC6800034CF6E7D45F0108000026401C0500009D -:10FC78000500520001018800F05F0108EF49020009 -:10FC8800E05F010801005000F0B5C64600B51C4B06 -:10FC98001B6859681B4A136904242343136101280C -:10FCA8002CD030BF86235B00CB58002B23D1164CB9 -:10FCB8002768164BA320C0001E58154A90461568A1 -:10FCC800144A226006241C503E2042461060124A04 -:10FCD800063098500D4A104BD358002BFADA862379 -:10FCE8005B000E4ACA50084B1F60084AA323DB007A -:10FCF800D650074B1D6080BCB846F0BD20BFD1E789 -:10FD0800D45F010800ED00E008012640000026400D -:10FD1800040126401E1F00001C050000AAAAAAAA6A -:10FD280001B40248844601BC604700BFE5060010E4 -:10FD380001B40248844601BC604700BF9B0500101F -:10FD480001B40248844601BC604700BF514E001010 -:10FD580001B40248844601BC604700BF415200100C -:10FD680001B40248844601BC604700BFC15200107C -:10FD780001B40248844601BC604700BFF54F00103B -:10FD880001B40248844601BC604700BFA3050010C7 -:10FD980001B40248844601BC604700BF55490010C1 -:10FDA800000000000000000000000000000000004B -:08FDB800000000000000000043 -:020000041600E4 -:08080000ACE100100000000053 -:107C0000FC01000020122101000000000008001605 -:107C10000000001000000000000000000000000054 -:107C20000000000000000000000000000000000054 -:107C30000000000000000000000000000000000044 -:107C40000000000000000000000000000000000034 -:107C50000000000000000000000000000000000024 -:107C60000000000000000000000000000000000014 -:107C70000000000000000000000000000000000004 -:107C800000000000000000000000000000000000F4 -:107C900000000000000000000000000000000000E4 -:107CA00000000000000000000000000000000000D4 -:107CB00000000000000000000000000000000000C4 -:107CC00000000000000000000000000000000000B4 -:107CD00000000000000000000000000000000000A4 -:107CE0000000000000000000000000000000000094 -:107CF0000000000000000000000000000000000084 -:107D00000000000000000000000000000000000073 -:107D10000000000000000000000000000000000063 -:107D20000000000000000000000000000000000053 -:107D30000000000000000000000000000000000043 -:107D40000000000000000000000000000000000033 -:107D50000000000000000000000000000000000023 -:107D60000000000000000000000000000000000013 -:107D70000000000000000000000000000000000003 -:107D800000000000000000000000000000000000F3 -:107D900000000000000000000000000000000000E3 -:107DA00000000000000000000000000000000000D3 -:107DB00000000000000000000000000000000000C3 -:107DC00000000000000000000000000000000000B3 -:107DD00000000000000000000000000000000000A3 -:107DE0000000000000000000000000000000000093 -:107DF0000000000000000000C20200000000B33BD1 -:0400000510000507DB -:00000001FF +:020000041000EA +:10000000000002081B0500100D0000007D05001017 +:1000100000000000000000000000000000000000E0 +:100020000000000000000000000000007905001042 +:1000300000000000000000007905001079050010A4 +:100040007905001079050010790500107905001078 +:100050007905001079050010790500107905001068 +:100060007905001079050010790500107905001058 +:100070007905001079050010790500107905001048 +:100080000448054B10B5834203D0044B002B00D02D +:10009000984710BD80060008800600080000000098 +:1000A00006480749091A8B10C90FC91810B549101D +:1000B00003D0044B002B00D0984710BD80060008E9 +:1000C000800600080000000010B5074C2378002BC4 +:1000D00009D1FFF7D5FF054B002B02D0044800E003 +:1000E00000BF0123237010BD24070008000000009A +:1000F000CC5F0110054B10B5002B03D00449054817 +:1001000000E000BFFFF7CCFF10BDC04600000000BC +:1001100028070008CC5F011010B5012004F0E6FAB2 +:1001200004F038F80028FBD104F03CF810BD0000C2 +:100130000FB400B583B004AA02CA0192044B1B6835 +:10014000D86812F03FFA03B008BC04B01847C046A4 +:1001500014030008F0B58DB00400002309930028B3 +:1001600000D1A7E00368002B00D1A5E0007909A920 +:1001700004F080FB002800D097E0099AA368D21809 +:1001800023681B899B1807AD07934D4F7B4008934D +:1001900001AE33002A0003CA03C34A48FFF7C8FF71 +:1001A00005AB1A0003CE03C203CB03C2089A079B18 +:1001B0005740BB424BD105994348FFF7B9FF20791F +:1001C00009A904F057FB00283FD1099AA368D21867 +:1001D00023681B89D21807AB07923948424008921E +:1001E0000AA90A001C0060CC60C203AA140060C9FE +:1001F00060C401A9C0C9C0C434490091190030CA03 +:1002000030C1089A079B5040834222D107AB05AA10 +:10021000190011CA11C10899079A294B4B409A42FB +:1002200019D1059A039B9A4217D0069A049B9A42C9 +:1002300016D0059A039B9A4203D0009A244B9A4207 +:1002400014D0009A224B9A4212D0002035E000F0E0 +:100250009FFB00F09DFB00F09BFB1E4B0093E4E72F +:10026000009AC5231B0113430093E2E700F090FBC3 +:100270001948FFF75DFF1948FFF75AFFFFF74CFFDA +:1002800005AB01AA190011CA11C10A0011CB11C195 +:100290005168079A0A4B4B409A4204D1059811F0D5 +:1002A000E3FB012009E000F073FB0D48FFF740FF7E +:1002B000002002E0002000E000200DB0F0BDC046AC +:1002C0001CA379B7503301107C330110C3A5000083 +:1002D0005A3C00000A300000A0330110C433011062 +:1002E0000834011010B5084B1968084A116018331A +:1002F0005360074810F024FD002800D010BD0548C9 +:10030000FFF716FF01BEF9E7B860010840070008D3 +:10031000800000082C34011070B592B00C2200212E +:100320000DA812F06DFD09AB624A0992624A0A9269 +:100330000BAA11CB11C211F0BFFD002802D001BEE3 +:1003400030BFFDE762B6E1235B020093FF231A0092 +:100350002821292003F0F4FE002802D001BE30BF7E +:10036000FDE75648FFF7E4FE5548FFF7E1FE0120A0 +:1003700004F064F9011E65D15248FFF7D9FE01214E +:1003800007A800F00FFB09AE4A4B09934A4B0A93AA +:100390000BAC2300320003CA03C302AD19002800CE +:1003A00002F0E2F9230006CD06C30798089900F091 +:1003B00059FB330006CC06C30A99099A424B4B40BD +:1003C0009A4246D109AB414A0992414A0A9210A980 +:1003D0000A00180030C830C205AA140060C860C402 +:1003E000200060C960C03B490491190011CA11C1C5 +:1003F0000A99099A344B4B4093422CD109AB07AA76 +:10040000190011CA11C10A99099A2F4B4B409A42FF +:1004100023D1079A059B9A4221D0089A069B9A42BB +:1004200020D0079A059B9A4203D0049A2A4B9A42FD +:100430001ED0049A284B9A421CD02848FFF778FE19 +:10044000002403E02648FFF773FE0024FFF74AFF6D +:1004500029E000F09DFA00F09BFA00F099FA214B98 +:100460000493DAE7049AC5231B0113430493D8E7E6 +:1004700000F08EFA1C48FFF75BFEFA21090100200C +:100480000BF0DCFD002808D10DA8FFF763FE041E69 +:10049000DCD11648FFF74CFED8E71548FFF748FEB9 +:1004A0000024D3E730BF002CFCD0002010F02CFE3D +:1004B000F9E7C0465555AAAA690F690F64340110BF +:1004C000783401109C3401103C5AC3A5AAAA555592 +:1004D00096F096F0C3A500005A3C00007835011054 +:1004E000CC3401100A3000000C3501103C350110ED +:1004F0005C350110000000000230800803D001309C +:100500000238FCD1C046C0467047EFF3108072B687 +:10051000704780F3108870477047FFF7FDFF72B691 +:100520000F4C104DAC4209DA21686268A368043BA5 +:1005300002DBC858D050FAE70C34F3E70A490B4AFB +:100540000020521A02DD043A8850FCDC08480949B0 +:100550000860BFF34F8F11F00BFAFFF7DDFEFEE7E7 +:10056000D85F0110F05F01102407000878690108C6 +:100570000000000808ED00E0FEE7FEE700B50420FB +:100580007146084202D0EFF3098002E0EFF30880E1 +:10059000043010F003FAFEE7F0B583B007006846B8 +:1005A000114C0094114C44603C0060C860C40024AD +:1005B00000E001349C420CD20D192E78F6B21519C8 +:1005C0002D78EDB2AE42F4D000F0A2FA380003B0BC +:1005D000F0BD9C42F8D16B46054A0092054A5A602C +:1005E0003A0003CB03C2EFE75555AAAA690F690F7A +:1005F000AAAA555596F096F043001B18D800C01AC9 +:100600004002704710B5FFF7F7FF303010BD10B54E +:10061000040002F073FE01000122200000F06DF8DA +:1006200010BD10B582B00400019102F071FE01000E +:10063000042301AA200002F073FE02B010BD0000E6 +:100640000FB400B583B004AA02CA0192044B1B6820 +:10065000D86811F0B7FF03B008BC04B01847C04613 +:100660001403000804280BD0052804D101394B1EBF +:100670009941C8B27047401A43425841C0B2F9E7A5 +:100680000120F7E700280FD0002A03D1002070478F +:1006900001301A00531E002A04D002788A42F7D093 +:1006A0000020F4E70120F2E70020F0E770B50C002D +:1006B0001500002807D004F0CDFA01002A00200020 +:1006C000FFF7E0FF70BD0020FCE710B582B00C0022 +:1006D00000230193C0B201A904F0F4F8002803D06C +:1006E0000124200002B010BD0198210002F084FE18 +:1006F0000400019804F01CF9F3E700B583B013007F +:1007000001AA1370012302F00BFE03B000BD10B567 +:10071000040002F0EFFD010001222000FFF7EDFFD1 +:1007200010BD000010B582B004000E2A12D80E29A8 +:1007300017D81201D2B26B46DA710A43DA7102F0AD +:10074000E2FD010001236A460732200002F0E8FDC5 +:1007500002B010BD064B074ADD210748490011F0E1 +:1007600099FD064B034ADD210348490011F092FD33 +:10077000B435011078370110C83501101436011056 +:1007800030B587B004000522002104A812F038FB20 +:100790000522002102A812F033FB251E0CD0012CEB +:1007A00005D1601C4000FF2807D9FF2005E0002C80 +:1007B00015D1A01C4000F6E70120C0B204A9FFF744 +:1007C00084FF002800D0A2E0002D10D0012D08D118 +:1007D000601C40000130FF280AD9FF2008E0FF20FC +:1007E000EBE7002D31D1601C40000330F3E702201D +:1007F000C0B202A9FFF769FF012828D0002800D065 +:1008000087E004AB1B78012B31D0032B2DD0424A5B +:1008100004A94B788C78CD784049414801950094E3 +:10082000FFF70EFF02AB1B78012B24D0032B20D047 +:10083000394A02A94B788C78CD783A4938480195E5 +:100840000094FFF7FDFE00241FE0FF20D0E73648AC +:100850002100FFF7F5FE02AB03221A700121597047 +:100860009A70DA7000221A71CBE7304AD0E7304A2A +:10087000CEE72E4ADDE72E4ADBE72B79042B28D082 +:1008800004AA9278934224D00134022C39D8630010 +:100890001B195B00274AD518D05C04AB1978FFF709 +:1008A000E1FE0028F0D0687802AB1978FFF7DAFE95 +:1008B0000028E9D0AB78042B03D004AAD278934265 +:1008C000E2D1EB78042BD8D002AAD2789342DBD1C4 +:1008D000D3E76B79022B07D0032B10D0042B01D068 +:1008E000154902E0154900E015491648FFF7A8FE32 +:1008F0006879831EDBB2022B07D9FF2005E012497D +:10090000F3E71248FFF79CFE012007B030BDFF203F +:10091000FBE7FF20F9E7C04628360110B836011082 +:10092000DC36011020370110683601103436011012 +:100930002C360110A03701104C3601106036011022 +:1009400044360110483701103C3601106037011061 +:1009500070B50600002915D001204042337843408D +:100960001D090F221340094C9B001B596B401809AD +:100970001A40920013595840013901360029EDD12F +:10098000C04370BD01204042FAE7C046B4370110B1 +:10099000FEE7FCE7FAE7F8E7F6E7F4E7F2E7F0E767 +:1009A000EEE7FEE7F0B587B004000D002B4B020028 +:1009B000190041C941C269460A0041CB41C208221F +:1009C00002A812F068FA0399029A254B4B409A420A +:1009D00039D1009BEA439A4237D369461F4B0A003C +:1009E00041CB41C2082202A812F055FA0399029A9B +:1009F0001B4B4B409A422AD1009BED1802AE029548 +:100A0000174F7D40039504AD08223100280012F0F5 +:100A100042FA124B1A0003CD03C2320003CB03C2C9 +:100A2000039A029B5740BB4213D102AB1A0021002C +:100A300021C921C20399029A094B4B409A420AD11B +:100A4000200007B0F0BDFFF7A3FFFFF7A1FFFFF7FE +:100A50009FFFFFF79DFFFFF79BFFC046F0000008D8 +:100A60001CA379B770B58AB06A46009051602348DC +:100A7000099003AB190030CA30C1214A60CA60C175 +:100A800002900A0011CB11C15168079A1D4B4B40CF +:100A90009A4222D107AB05AA190011CA11C10899BF +:100AA000079A184B4B409A4219D1059A039B9A42D8 +:100AB00017D0069A049B9A4216D0059A039B9A4235 +:100AC00003D0029A104B9A4214D0029B0993099AC0 +:100AD0000D4B9A4210D10AB070BDFFF759FFFFF7D6 +:100AE00057FF0A4B0293E4E7029AC5231B01134305 +:100AF0000293E2E7FFF74CFFFFF74AFFC3A50000B0 +:100B0000F00000081CA379B75A3C00000A3000002E +:100B100070B586B06946214B0A0011CB11C208227C +:100B200002A812F0B8F90399029A1D4B4B409A4261 +:100B30002CD1009B002B2BD06946184B0A0011CBFF +:100B400011C2082202A812F0A6F90399029A144BC6 +:100B50004B409A421ED1009B013B02AC0293104EC7 +:100B60007340039304AD08222100280012F093F98A +:100B70000A4B1A0003CD03C2220003CB03C2039A1F +:100B8000029B5640B34207D106B070BDFFF700FF8D +:100B9000FFF7FEFEFFF7FCFEFFF7FAFEF00000088D +:100BA0001CA379B730B589B00400302307AA04F03C +:100BB000FEF900282ED12568079BED1801AB04AA89 +:100BC0002900200004F036FA002826D1059B072BC7 +:100BD00026D106981D49072212F004F9002822D1D7 +:100BE000029B082B22D103981949082212F0FAF827 +:100BF00000281ED107AA2900200004F001FA0028CD +:100C00001AD12368079A9B18AB4218D1412A19D1EF +:100C100009B030BD01204042FAE702204042F7E728 +:100C200003204042F4E703204042F1E70420404221 +:100C3000EEE704204042EBE706204042E8E70720C9 +:100C40004042E5E708204042E2E7C046F4370110A1 +:100C5000FC370110F0B5B3B0060002911500039304 +:100C600038AB80CB1A78354CD20013590693A418B0 +:100C7000626814681C19210006A8FFF793FF00287A +:100C80000CD1202D13D004AB2D4A04922D4A05928D +:100C9000320003CB03C2300033B0F0BD04AB284AAE +:100CA0000492284A0592320003CB03C2F3E707A857 +:100CB00006F07CF8069D641B032107A808F03EF8A7 +:100CC000002826D123002A0029A907A807F0ACFB99 +:100CD000002821D129A907A807F0EEFB00281ED182 +:100CE0000097039B2022029907A806F055F8041EDE +:100CF00018D107A806F05EF8FFF70AFF002C14D001 +:100D000004AB0F4A04920F4A0592320003CB03C290 +:100D1000C1E701246442ECE701246442E9E70124CD +:100D20006442E6E701246442E3E704AB064A049226 +:100D3000064A0592320003CB03C2ACE7503E0110D5 +:100D40005555AAAA690F690FAAAA555596F096F0AB +:100D5000F0B5CE46474680B59DB014009946249F15 +:100D6000259B984601A808F053F8002101A808F037 +:100D700055F8279B002B02D0289B002B06DC2289EC +:100D8000E3689B186689F618002513E01A00279976 +:100D900001A808F037FFF2E723003A00290048468F +:100DA00003F0E8FD002811D12200390001A808F065 +:100DB00029FF2D19B54204D2741B4445ECD9444691 +:100DC000EAE7269901A808F067FF00201DB0C0BC23 +:100DD000B946B046F0BD0000F0B5A5B007000E0062 +:100DE000202926D10024144B1B68A3421CDD09A82E +:100DF00008F00EF8002109A808F010F80F4BE500E4 +:100E0000E9585B195B681A6809A808F0FBFE01A99C +:100E100009A808F041FF3200390001A811F0E2FFF3 +:100E2000002803D00134DEE701246442200025B00D +:100E3000F0BD01246442F9E74C3E0110503E011020 +:100E4000F0B5DE4657464E464546E0B5C7B004000D +:100E50008A4691469B46509B98460EADD04E0E96C4 +:100E6000D04F0F97082229003EA812F014F80E96D2 +:100E70000F97230006CD06C3549B0493539B039303 +:100E80000295529B0193519B009343465A46494613 +:100E90005046FFF75DFF051E00D096E1559B002BE5 +:100EA00004D0202210A9180011F0F5FF00230093B0 +:100EB000BD4B4246594638A803F02EF8051E00D017 +:100EC00083E101277F427CE001277F4279E001270F +:100ED0007F4276E06B460333FF331B88202B00D024 +:100EE0008DE1419918AA404603F044FD051E00D04B +:100EF0006BE101210CA8FFF755FD0EAEA84B0E9338 +:100F0000A84B73602300320003CA03C3202318AA2E +:100F100010A906A8FFF740FB06AB220003CB03C2D3 +:100F20000C980D99FFF79EFD3300220003CA03C3FE +:100F300071680E9A9D4B4B409A4200D09FE09C4BAB +:100F40000E939C4B0F9308220EA942A811F0A3FF09 +:100F50000AAE3300220003CA03C3082242A91800C4 +:100F600011F099FF944B0893082231000EA811F05C +:100F700092FF0F990E9A8D4B4B409A4200D080E021 +:100F800008220CA90EA811F086FF0F990E9A874B24 +:100F90004B409A4277D10C9A0A9B9A4275D00D9A8F +:100FA0000B9B9A4274D00C9A0A9B9A4203D0089ADF +:100FB000824B9A4272D0089A804B9A4200D004E148 +:100FC000012540AB6A460332FF3241A938A803F03D +:100FD00017F8002800DAF7E000DD7BE040AB1B8863 +:100FE000102B00D176E7012B5AD0222BE9D1002F0C +:100FF00000DA69E7724B1B68BB4200DC67E76B46AF +:101000000333FF331B88802B00D9FEE0419918AAD7 +:10101000404603F0AFFC002800D0ECE001210CA812 +:10102000FFF7C0FC5E4B0E935E4B0F933EAE082263 +:101030000EA9300011F02FFFFFB201976B4603336A +:10104000FF331B88009318AB202210A906A8FFF7D6 +:1010500001FE06AB320003CB03C20C980D99FFF7DB +:1010600001FD082231000EA811F015FF0F990E9A0C +:101070004E4B4B409A422BD101277F42A1E7FFF70D +:1010800087FCFFF785FCFFF783FC4E4B089386E750 +:10109000089AC5231B011343089384E7FFF778FCE4 +:1010A0006B460333FF331B88202B00D0AAE0419905 +:1010B00018AA404603F05EFC002800D099E06B4679 +:1010C0000333FF33197818A8FFF786FE070078E787 +:1010D000FFF75EFC6E426E41F6B2002D00D18CE04F +:1010E0000EAD2F4B0E932F4B6B6023002A0003CACB +:1010F00003C32F4B0E932F4B6B600822290044A88B +:1011000011F0C9FE08223EA90AA811F0C4FE082267 +:1011100044A90CA811F0BFFE274B099308220AA985 +:10112000280011F0B8FE69680E9A204B4B409A4295 +:1011300020D108220CA90EA811F0ADFE0F990E9A2D +:101140001A4B4B409A4217D10C9A0A9B9A4215D0DF +:101150000D9A0B9B9A4214D00C9A0A9B9A4203D088 +:10116000099A164B9A4212D0099A144B9A4210D0FF +:1011700035002AE0FFF70CFCFFF70AFC114B09933E +:10118000E6E7099AC5231B0113430993E4E7FFF738 +:10119000FFFB3EAB220003CB03C2350015E0C04687 +:1011A0005555AAAA690F690FFFFF00003C5AC3A555 +:1011B000AAAA555596F096F0C3A500005A3C000027 +:1011C0004C3E01100A3000000500002D07D00EAB88 +:1011D0000E950F4A6A400F92220003CB03C2FFF71D +:1011E00097FC200047B0F0BCBB46B246A946A046DB +:1011F000F0BD0500E9E70500E7E73500E5E7012573 +:101200006D42E4E701256D42E1E701256D42DEE72D +:101210003C5AC3A500207047036A5B780B71036AD0 +:101220005B688B600860704710B502680A4B9A4291 +:101230000FD1C2680389D843824202D8D418012052 +:1012400000E00020002805D08B68A34202D80020CF +:1012500000E0002010BDC0463DB8F3960020704766 +:1012600010B582B004000800E022120101920129A9 +:1012700008D0022911D0032912D0072913D1A26E58 +:101280006C3401E0626A283401A903F009FD0028EA +:1012900001D1019B236002B010BD226D5434F3E7ED +:1012A000E26D6034F0E70120F5E7000070B505005D +:1012B000006A03F06FFC041E08D0A86D03F06AFCFE +:1012C00000280AD0844200D3200070BD064B074A94 +:1012D0009E210748490010F0DDFF064B034AA0217C +:1012E0000348490010F0D6FF08380110043B0110F4 +:1012F000183801105C380110F0B585B005000C00FD +:10130000019200230393002003F06AFCC0B203A9FA +:1013100003F0D8FA002806D00127039803F008FB51 +:10132000380005B0F0BD2C236343EB181A89DE6842 +:1013300096190398042302AA310003F01BFB071E31 +:1013400026D12C236343ED186C8902AB1A88134B0A +:101350009A420DD0002C1DD102AB1A88104B9A4234 +:101360001AD1331902AA52889B18019A1360D4E744 +:1013700002AB59888C4201D00327CEE78919039824 +:10138000042302AA03F0F6FA0028E5D00127C4E7F7 +:101390000127C2E70327C0E70327BEE7086900006B +:1013A0000769000070B505000026002E00DD70BD45 +:1013B000A86D03F0BDFA002408E00122121B2C23C3 +:1013C0005343EB18186A03F0B3FA0134012CF4D933 +:1013D0000136EAE7F0B583B004000F000023019363 +:1013E000002003F0FDFBC0B201A903F06BFA061E5A +:1013F0001AD1019803F02EFC0500019803F098FA29 +:101400002C237B43E4180023032B05D8E25C954290 +:1014100008D10133DBB2F7E70123002B07D03000FE +:1014200003B0F0BD0023F8E701267642F7E7012676 +:101430007642F4E70FB400B583B004AA02CA019261 +:10144000044B1B68D86811F0BDF803B008BC04B0A9 +:101450001847C04614030008F8B506000D00170031 +:101460000024012C11DC2C226243B2183B00210025 +:10147000300001F03DFC002801D10134F1E7002CDF +:1014800004DD002D02D1002000E00020F8BD0000A6 +:10149000F0B5CE46474680B58DB0040091469846DB +:1014A0000AAD1F4F0A971F4E6E6003002A0003CA41 +:1014B00003C3012108A8FFF775FA0A976E6023009D +:1014C0002A0003CA03C306AE0023059304930393C3 +:1014D0000133FF330293144B0193434600934B4671 +:1014E000002200213000FFF7ABFC230006CE06C32C +:1014F00008980999FFF7B6FA2B00220003CA03C324 +:1015000069680A9A094B4B409A4207D1FFF700FBE2 +:1015100020000DB0C0BCB946B046F0BDFFF738FAA8 +:101520005555AAAA690F690FC05B01083C5AC3A5AB +:10153000F0B5D6464F464646C0B594B004000F00FD +:101540001500039300230F930DAA9B4B0D939B4B08 +:101550000E93030003CA03C32900002003F040FBDD +:10156000C0B20FA903F0AEF9002800D0B6E02C20DD +:1015700068438046B84429003800FFF72BFF002855 +:1015800000D1AEE043461B69DB0600D5A9E00DABF8 +:10159000012294460D928A4A91460E9220001A002A +:1015A00042CA42C062460D924A460E9210AA944622 +:1015B000180042C842C209AA91461000260006CE71 +:1015C00006C0614644C944C07E49079119004A4695 +:1015D00041CA41C10E990D9A7B4B4B409A4200D0B3 +:1015E00096E00DAB0BAA190041CA41C10E990D9AA4 +:1015F000754B4B409A4200D08CE00B9A099B9A4263 +:1016000000D189E00C9A0A9B9A4200D187E00B9A9C +:10161000099B9A4204D0079A6C4B9A4200D184E00D +:10162000079A6A4B9A4200D181E00F9E31004046F2 +:10163000FFF7FAFD002842D00DAB654A0D92654ACE +:101640000E9212AA9446180082C882C209AA904635 +:101650001000270006CF06C0614684C984C05949DE +:1016600008911900424681CA81C10E990D9A564BC4 +:101670004B409A4200D088E00DAB0BAA190081CAFA +:1016800081C10E990D9A504B4B409A4200D07EE09A +:101690000B9A099B9A4200D17BE00C9A0A9B9A42D2 +:1016A00000D179E00B9A099B9A4204D0089A474BE3 +:1016B0009A4200D176E0089A444B9A4217D0002D06 +:1016C00000D071E0002D00D074E043494348FFF79B +:1016D000B1FE434B220003CB03C208E0FFF718FA28 +:1016E0000AE0002D0FD13E4B220003CB03C20F981E +:1016F00003F01EF9FFF70CFA200014B0E0BCBA4664 +:10170000B146A846F0BD0F99380001F0FDFFEAE7A9 +:10171000FFF73EF9FFF73CF9324B079372E7079A60 +:10172000C5231B011343079371E7FFF731F901212B +:101730000BA8FFF737F90DAB99461F4B0D931F4BC5 +:101740004A465360230003CA03C304AB9A460F9B67 +:10175000039A0092424639005046FFF799FE230053 +:10176000524603CA03C30B980C99FFF77BF94B460B +:10177000220003CA03C34B4659680D9A124B4B40D3 +:101780009A4200D151E7FFF703F9FFF701F9FFF79C +:10179000FFF8144B089380E7089AC5231B011343F5 +:1017A00008937FE7FFF7F4F8B2680021300003F0F8 +:1017B00097F987E70C4989E75555AAAA690F690F78 +:1017C0003D5AC3A5C3A500003C5AC3A55A3C00001E +:1017D000AAAA555596F096F0683801107C38011089 +:1017E000AC3A01100A30000070380110F0B591B029 +:1017F00001900F006A4B0A936A4B0B9308220AA9C7 +:101800000CA811F048FB0020FEF7BAFF04000228E4 +:1018100006D0042804D0032802D0200011B0F0BD67 +:10182000012108A8FFF7BEF85D4B0A935D4B0B93AF +:101830000CAD08220AA9280011F02DFB02AE3B00D6 +:10184000012201993000FFF773FE2B0003CE03C382 +:1018500008980999FFF706F9082229000AA811F04B +:101860001AFB0B990A9A504B4B409A4276D14F4B38 +:101870000A934F4B0B9308220AA90EA811F00BFBF9 +:1018800008220CA906A811F006FB08220EA908A838 +:1018900011F001FB474B0493082206A90AA811F096 +:1018A000FAFA0B990A9A404B4B409A4258D10822B7 +:1018B00008A90AA811F0EFFA0B990A9A3A4B4B4083 +:1018C0009A424FD1089A069B9A424DD0099A079B9B +:1018D0009A424CD0089A069B9A4203D0049A364BFF +:1018E0009A424AD0049A344B9A4200D195E7082292 +:1018F0000CA906A811F0CFFA08AA304B11CB11C2DF +:101900002C4B0593082206A90AA811F0C4FA0B99DA +:101910000A9A254B4B409A4231D1082208A90AA8BD +:1019200011F0B9FA0B990A9A1F4B4B409A4228D1F1 +:10193000089A069B9A4226D0099A079B9A4225D07C +:10194000089A069B9A4203D0059A1B4B9A4223D0D1 +:10195000059A194B9A4221D005245EE7FFF718F843 +:10196000FFF716F8FFF714F8154B0493AEE7049A47 +:10197000C5231B0113430493ACE7FFF709F8FFF7F6 +:1019800007F8FFF705F80E4B0593D5E7059AC52331 +:101990001B0113430593D3E7FEF7FAFF01243CE74D +:1019A0005555AAAA690F690F3C5AC3A5AAAA55554D +:1019B00096F096F0C3A500005A3C0000AC3A011026 +:1019C0000A30000070B504000121FFF749FC00282F +:1019D00002D00125280070BD02212000FFF740FC45 +:1019E000002814D107212000FFF73AFC002801D07D +:1019F0000125EFE703212000FFF732FC051E01D08F +:101A00000125E7E72000FFF751FC6067E2E70925C1 +:101A1000E0E7002383718360C36001334371036097 +:101A20000371C37170474379012B01D000207047C7 +:101A30000368012B01D00020F9E70379012B01D0C5 +:101A40000020F4E70120F2E770B582B005000C0039 +:101A50000023009301930800FFF7E5FF002836D02C +:101A60002A68254B9A4218D001267642EA6A224B10 +:101A70009A421FD0019B009A934200D90093009B89 +:101A8000A360009A2100280001F0DAFA1B4B1968C4 +:101A900000292CDC300002B070BD6A46002128000D +:101AA000FFF72AFC061EE1D0154B164A16481749C7 +:101AB00010F0F0FB01AA01212800FFF71DFC061E13 +:101AC000D8D00F4B0F4A1048114910F0E3FB21000A +:101AD0000831002001F002FE061E02D1A368009327 +:101AE000CFE7074B074A08480A4910F0D3FB0A48DA +:101AF000FFF7A0FCCEE7C0463DB8F396C05C0108F6 +:101B0000A8380110D83A0110183801103405000027 +:101B10004C0500006D050000B038011070B50400E0 +:101B20000D00FFF791FF002812D1EB797022A3542A +:101B3000033BDBB2012B11D9EB79022B17D0042B1D +:101B400015D0032B13D07023E35CFF2B18D070BD8E +:101B5000104B114A1148124910F09CFB002000F074 +:101B60006FFE0028E8D07023FF22E254E4E7002053 +:101B700000F03EFE0028E6D07023FF22E254E2E7A8 +:101B80000848FFF757FC084B034A0448074910F080 +:101B900081FBC046A8380110E83A0110183801103E +:101BA000B2060000E4380110F4380110CA06000043 +:101BB000F0B5C64600B594B004000E002E4B0A9353 +:101BC0002E4B0B9308220AA90CA811F064F92000EF +:101BD000FFF7F8FE051E09D0E02129480901FFF7AB +:101BE00029FC70230122E254012D0ED00022002195 +:101BF0002000FFF731FC00280BD1200001F0E4F8B1 +:101C000000280ED170230122E25414B080BCB846E3 +:101C1000F0BD1C480021FFF70DFC70230122E254A7 +:101C2000F3E73000FFF7F5FE00230293002500E004 +:101C30000135012D2AD802AA29002000FFF75CFBFC +:101C40000028F5D12C236B43E3181F6A002FEFD037 +:101C50002C236B43E3189A6A013A636F5343029A49 +:101C60009A42E5D908482900FFF7E4FBBA68002149 +:101C7000380002F035FFDBE75555AAAA690F690F56 +:101C8000F83801104039011070390110310020007E +:101C900001F0EAFD002800D077E13000FFF7C3FE35 +:101CA00001235840C1B232002000FFF7D5FB0028C5 +:101CB00000D072E13000FFF7B6FE002800D17BE1D2 +:101CC000F379012B00D195E1012108A8FEF76AFE06 +:101CD000E14B0A93E14B0B930CAD08220AA92800B3 +:101CE00011F0D9F86F463300012221003800FFF7C8 +:101CF0001FFC2B0006CF06C308980999FEF7B2FE19 +:101D0000082229000AA811F0C6F80B990A9AD44BA8 +:101D10004B409A4200D074E1D24B0A93D24B0B93C2 +:101D200008220AA90EA811F0B6F808220CA906A8E4 +:101D300011F0B1F808220EA908A811F0ACF8CB4BAD +:101D40000393082206A90AA811F0A5F80B990A9A8C +:101D5000C34B4B409A4200D055E1082208A90AA87B +:101D600011F099F80B990A9ABD4B4B409A4200D05A +:101D70004BE1089A069B9A4200D148E1099A079BD9 +:101D80009A4200D146E1089A069B9A4204D0039AEF +:101D9000B74B9A4200D143E1039AB54B9A4200D126 +:101DA00040E170230522E2547023E35C012B00D054 +:101DB0002BE700212000FFF70DFB8046012108A83A +:101DC000FEF7F0FDA44B0A93A44B0B930CAD082235 +:101DD0000AA9280011F05FF86F46330000222100A5 +:101DE0003800FFF7A5FB2B0006CF06C3089809991A +:101DF000FEF738FE082229000AA811F04CF80B99CA +:101E00000A9A974B4B409A4200D00FE14346002B71 +:101E100044D0944B0A93944B0B9308220AA910A820 +:101E200011F039F808220CA906A811F034F808229C +:101E300010A908A811F02FF88C4B0493082206A9CA +:101E40000AA811F028F80B990A9A854B4B409A4240 +:101E500000D0EDE0082208A90AA811F01CF80B999F +:101E60000A9A7F4B4B409A4200D0E3E0089A069BC7 +:101E70009A4200D1E0E0099A079B9A4200D1DEE045 +:101E8000089A069B9A4204D0049A794B9A4200D150 +:101E9000DBE0049A764B9A4200D1B6E6E36A9846B4 +:101EA000012108A8FEF77EFD6B4B0A936B4B0B9349 +:101EB0000CAD08220AA9280010F0EDFF6F46330090 +:101EC000012221003800FFF733FB2B0006CF06C3A9 +:101ED00008980999FEF7C6FD082229000AA810F003 +:101EE000DAFF0B990A9A5E4B4B409A4200D0AEE063 +:101EF000604B984500D088E65A4B0A935A4B0B9397 +:101F000008220AA912A810F0C6FF08220CA906A8E8 +:101F100010F0C1FF082212A908A810F0BCFF534B13 +:101F20000593082206A90AA810F0B5FF0B990A9A92 +:101F30004B4B4B409A4200D08BE0082208A90AA8DC +:101F400010F0A9FF0B990A9A454B4B409A4200D0DA +:101F5000A0E0089A069B9A4200D19DE0099A079B4F +:101F60009A4200D19BE0089A069B9A4204D0059AB7 +:101F70003F4B9A4200D198E0059A3D4B9A4200D0DF +:101F800043E670230422E2543FE63B480021FFF77A +:101F900051FA70230122E25437E600212000FFF7B6 +:101FA00019FA002800D185E634480021FFF742FAEB +:101FB00070230122E25428E631002000FFF7AEFD35 +:101FC00000280AD1320000212000FFF745FA00283E +:101FD0000AD170230122E25417E6294B294AF42141 +:101FE0002948C90010F056F9254B264A26482749AA +:101FF00010F050F931002000FFF7F8FB7023E05497 +:10200000D2E6FEF7C5FCFEF7C3FCFEF7C1FC204B91 +:102010000393B3E6039AC5231B0113430393B2E66C +:10202000FEF7B6FCF2797023E254BDE6FEF7B0FC91 +:10203000FEF7AEFCFEF7ACFC154B04931BE7049ACD +:10204000C5231B01134304931AE7FEF7A1FCFEF717 +:102050009FFCFEF79DFCC0465555AAAA690F690F63 +:102060003C5AC3A5AAAA555596F096F0C3A5000000 +:102070005A3C00003DB8F396DC390110403901109C +:10208000A8380110143B011018380110A6070000F1 +:102090000A300000FEF77CFC054B05935EE7059ACD +:1020A000C5231B01134305935DE7FEF771FCC04692 +:1020B0000A30000010B502F013FD10BDF8B5DE4681 +:1020C00057464E464546E0B58946924698460A9B95 +:1020D0009B460B9E002512E0134A4346E918230055 +:1020E000484602F047FC002819D10F4A5B46E91820 +:1020F0002300504602F09AFC002812D12D19B54257 +:1021000006D2741B80239B009C42E5D91C00E3E7A8 +:102110000020F0BCBB46B246A946A046F8BD01204F +:10212000F7E70120F5E7C046C0070008F0B5C6464E +:1021300000B584B007000023039302933948FFF7EA +:1021400079F93948FFF776F903A9012002F0BAFBC3 +:10215000002819D102A9022002F0B4FB002819D1ED +:10216000BB6A98460025002444451FD27B6AE200E2 +:102170009B185E68039832002900FFF79BFF002838 +:102180000ED1AD190134EFE7284B294A29482A49D5 +:1021900010F080F8254B264A2648284910F07AF896 +:1021A000224B234A2348264910F074F82548290079 +:1021B000FFF740F9039A0299019500230093380034 +:1021C000FFF77CFF041E04D0200004B080BCB8469A +:1021D000F0BD3B6D5A6802980021FFF76BFF0028A5 +:1021E00014D17B6D013B3A6DDB00D318196812687E +:1021F000891A5A680298FFF75DFF041E0CD10398F4 +:1022000002F096FB029802F093FBDDE7074B084AC9 +:1022100008480D4910F03EF8044B054A05480B49A3 +:1022200010F038F80C3A0110443A0110A8380110A7 +:10223000B43A0110183801109B0400009F040000FC +:10224000A6040000683A0110FA040000020500002C +:10225000F0B5CE46474680B58FB004000F006D4BF9 +:10226000994608936C4E09960AAD082208A92800E1 +:1022700010F011FE00212000FFF7ACF8804601218C +:1022800006A8FEF78FFB4B4608930996082208A97B +:10229000280010F000FE6E463B00002221003000B6 +:1022A000FFF746F92B0006CE06C306980799FEF7FE +:1022B000D9FB0822290008A810F0EDFD0999089A19 +:1022C000564B4B409A4200D072E04346002B3ED022 +:1022D000534B0893534B0993082208A90CA810F0FC +:1022E000DAFD08220AA904A810F0D5FD08220CA9DD +:1022F00006A810F0D0FD4C4B0393082204A908A8AF +:1023000010F0C9FD0999089A444B4B409A4251D1AB +:10231000082206A908A810F0BEFD0999089A3F4BAB +:102320004B409A4248D1069A049B9A4246D0079A5B +:10233000059B9A4245D0069A049B9A4203D0039A81 +:102340003A4B9A4243D0039A384B9A424DD00023DD +:10235000089308A9012002F0B5FA002839D108999C +:102360003A00200001F026FA002838D1089802F03F +:10237000DFFA39002000FFF7D9FE00283AD1702398 +:10238000E55CEB1EDBB2012B3AD9022D03D0042D04 +:1023900001D0032D07D1002000F02AFA002802D036 +:1023A0007023FF22E2540FB0C0BCB946B046F0BD66 +:1023B000FEF7EEFAFEF7ECFAFEF7EAFA1C4B03938F +:1023C000B5E7039AC5231B0113430393B3E7FEF755 +:1023D000DFFA184B184A194819490FF05BFF154BE3 +:1023E000154A164817490FF055FF39002000FFF72E +:1023F0002BFBC2E70F4B104A104813490FF04AFF5E +:10240000002000F01DFA0028BFD07023FF22E25404 +:10241000FF25BCE75555AAAA690F690F3C5AC3A509 +:10242000AAAA555596F096F0C3A500005A3C0000A4 +:102430000A300000A8380110C43A01101838011001 +:1024400061060000640600006F060000F0B5D64685 +:102450004F464646C0B590B005000C00170010224C +:1024600000210AA810F0CCFC08ABA34A0892A34AAA +:1024700009922A0003CB03C2002398460126764224 +:102480004346002B02DD002398463FE09C4B6362ED +:102490009C4B23659C4BE3659C4BA3660026012E59 +:1024A00014D83100002002F09BFB2C217143203115 +:1024B0006118C0B202F006FA002801D10136EEE739 +:1024C000934B944A944895490FF0E4FE210058310B +:1024D000032002F0F7F9061E07D10AA92000FFF732 +:1024E00067FB01239C46E044CAE7894B894A8A4836 +:1024F0008B490FF0CFFE022B1CD2012B27D170236A +:10250000E35CFF2B27D001239C46E0444346002B8D +:102510002ADC7023E35C0AAAD371042BEBD9052BC8 +:1025200015D1002000F08CF9061EE8D07023FF22A0 +:10253000E254E4E70AA92000FFF78AFE061EDED077 +:10254000734B744A8A21744809010FF0A3FE70236B +:10255000FF22E254D3E77348FEF76CFF724B6D4ADB +:102560006D4872490FF096FE00239A465346002BA1 +:102570002DDD236A5B783B71236A5B68BB603C603E +:10258000102200210AA810F03BFC39002000FEF7C1 +:1025900043FE08AB664A0892664A09922A0003CBBA +:1025A00003C22000FEF7FEFE002E07D008AB0896FF +:1025B000614A724009922A0003CB03C2FEF7A8FACF +:1025C000280010B0E0BCBA46B146A846F0BD702362 +:1025D000E35C012B06D00AAA00212000FEF73CFF95 +:1025E000061EDED1012106A8FEF7DCF908AB9846ED +:1025F000414B0893414B424653602B0003CA03C32F +:10260000E9461300002221004846FEF791FF2B0007 +:102610004A4603CA03C306980799FEF723FA4346BE +:102620002A0003CA03C343465968089A424B4B40E9 +:102630009A4250D13E4B08933E4B0993082208A979 +:102640000EA810F028FC04AB98462A0003CA03C366 +:1026500008220EA9180010F01EFC384B0393082224 +:10266000414608A810F017FC0999089A324B4B40D4 +:102670009A4232D1082206A908A810F00CFC099948 +:10268000089A2D4B4B409A4229D1069A049B9A42B4 +:1026900027D0079A059B9A4226D0069A049B9A4215 +:1026A00003D0039A264B9A4224D0039A244B9A4291 +:1026B00000D076E72000FEF7D1FD061E00D070E7BF +:1026C00000212000FEF7A6FD061E00D069E70123C9 +:1026D0009C46E2444AE7FEF75BF9FEF759F9FEF73C +:1026E00057F9184B0393D4E7039AC5231B011343EF +:1026F0000393D2E7FEF74CF95555AAAA690F690F63 +:10270000C0090008C0E90008C0790008C0590108E4 +:10271000A8380110343B011018380110530800008C +:1027200058080000E4380110F4380110B90800001E +:10273000AAAA555596F096F03C5AC3A5C3A5000029 +:102740005A3C00000A30000010B5002804D078225E +:10275000002110F055FB10BD02487822002110F036 +:102760004FFBF8E748070008F0B5C64600B586B04D +:102770000400884604AD1A4F04971A4E6E60030099 +:102780002A0003CA03C30020FFF7DEFF012102A8CD +:10279000FEF708F904976E6023002A0003CA03C3FA +:1027A0006E46114942463000FFF750FE230006CE28 +:1027B00006C302980399FEF755F92B00220003CABD +:1027C00003C36968049A094B4B409A4206D1FEF74D +:1027D0009FF9200006B080BCB846F0BDFEF7D8F8DF +:1027E0005555AAAA690F690F480700083C5AC3A5A6 +:1027F00010B582B00023019300280CD0012805D128 +:1028000001304000FF2807D9FF2005E000280DD146 +:1028100002304000F6E70120C0B201A902F052F8F0 +:10282000002805D00124200002B010BDFF20F3E7EE +:102830000198FDF7ECFE0400019802F079F8F2E748 +:1028400010B584B00400002303930522002101A8E1 +:1028500010F0D6FA002C0CD0012C05D10134600008 +:10286000FF2807D9FF2005E0002C0DD102346000BD +:10287000F6E70120C0B203A902F024F8002805D031 +:102880000124200004B010BDFF20F3E7039801A944 +:1028900000F0B2FD041E0CD101ABDB78032B03D09A +:1028A000039802F045F8ECE70398FDF730FF0400C9 +:1028B000F6E70124F4E770B50500836D9E680020FB +:1028C00001E001391800002906DB6B6ACC001B19F6 +:1028D0005B68C3189E42F4D20131116070BD0000E4 +:1028E0000FB400B583B004AA02CA0192044B1B685E +:1028F000D8680FF067FE03B008BC04B01847C046A4 +:1029000014030008F0B5CE46474680B589B00400F0 +:10291000884617001E00002307930693059305229F +:10292000002103A810F06CFA796AE4000B590868DA +:102930001B1A99467A6F80239B009A4200D91A008D +:10294000BC6A013CE300CB185B689A423DD8434621 +:102950004B44E4000959091A8B4239D943469C1A61 +:102960003368012B36D00023B37107A9012001F091 +:10297000A9FF002834D106A9022001F0A3FF0028F6 +:1029800034D105A9032001F09DFF002834D133790B +:10299000012B37D03379022B00D196E03379032B0A +:1029A00000D1CFE0079801F0C3FF069801F0C0FF07 +:1029B000059801F0BDFF09B0C0BCB946B046F0BDF6 +:1029C000013CE5004D196D685B199A42F8D8BEE7E5 +:1029D0004446C5E7444501D00123C5E70023C3E7CA +:1029E000AC4BAD4AAD48AE490FF054FCA94BAA4AD6 +:1029F000AA48AC490FF04EFCA64BA74AA748AA49E3 +:102A00000FF048FC059882680021FFF753FB00286F +:102A10001AD13368012B1DD0059A06990194002321 +:102A200000934B463800FFF749FB002847D131009F +:102A3000380000F0AFFC022333710028AAD09B4A73 +:102A4000136801331360A5E7924B934A9348984962 +:102A50000FF020FC05993200380000F0ABFE002892 +:102A60001BD1B379002BD7D10799380000F04CFE69 +:102A7000002818D107993200380000F09BFE00288A +:102A800017D10599380000F03FFE0028C4D0814BD3 +:102A9000814A824887490FF0FDFB7E4B7E4A7F4882 +:102AA00085490FF0F7FB7B4B7B4A7C4883490FF04D +:102AB000F1FB784B784A794881490FF0EBFB754B75 +:102AC000754A76487F490FF0E5FB0698424649462D +:102AD000FFF7F0FA00281DD1069A079901944B469A +:102AE00000933800FFF7EAFA002819D13368012B68 +:102AF00002D1B379002B19D03100380000F04AFC24 +:102B000003233371002800D148E7684A1368013372 +:102B1000136043E75F4B604A60486B490FF0BAFBB4 +:102B20005C4B5D4A5D4869490FF0B4FB069938007B +:102B300000F0EAFD0028DFD0564B574A5748644959 +:102B40000FF0A8FB079842464946FFF7B3FA002862 +:102B500069D1079A059901944B46009300233800E8 +:102B6000FFF7ACFA002865D1B379002B32D0059875 +:102B700000F0D3FB0300786F079A0599400001909D +:102B80004C4400943800FFF799FA002803D0474AD4 +:102B9000136801331360059803A900F02DFC002889 +:102BA0004ED103ABDB78012B50D003AB5978012910 +:102BB00005D007980022FDF7B5FD002851D1B16876 +:102BC0000798FDF72EFD002851D1079800F0D0FBA3 +:102BD000002852D1B4790023B3713100380000F0DD +:102BE000D9FB33680133336001233371002803D0EC +:102BF0002E4A136801331360002C00D1D2E60599E8 +:102C0000380000F081FD00283DD10699380000F021 +:102C10007BFD002800D1C5E61E4B1F4AC4211F487A +:102C200089000FF037FB1B4B1B4AB3211B4889005F +:102C30000FF030FB174B184A184826490FF02AFBB3 +:102C4000144B154A154824490FF024FB0798FDF74B +:102C50005EFD0028A9D00F4B0F4A10481F490FF006 +:102C600019FB0C4B0C4A0D481D490FF013FB094B87 +:102C7000094A0A481B490FF00DFB064B064A074854 +:102C800019490FF007FB034B034A044817490FF09B +:102C900001FBC046A83801103C3D01104C3B01101F +:102CA0007F0200008302000086020000C05C010871 +:102CB0008B020000A7020000930200009B020000AC +:102CC0009E020000AE020000B7020000BB0200003E +:102CD000C2020000D3020000DF020000E302000095 +:102CE000E9020000ED020000F70200000D03000001 +:102CF000F0B583B00D0017001E0000230193002ED5 +:102D000004D03379022B11D0032B13D0002001F013 +:102D100067FFC0B201A901F0D5FD041E1FD0012438 +:102D2000019801F005FE200003B0F0BD0129EDD1AE +:102D30000221EBE700290CD1836D9B683268534375 +:102D4000C168826B914206D8521A9A4205D3022179 +:102D5000DCE70221DAE70221D8E70121D6E7019872 +:102D600020233A00002101F005FE002826DB002E7A +:102D7000D6D03A68134B9A42D2D03379012BCFD0B8 +:102D8000019801F0D5FD2900002001F029FFC0B213 +:102D900001A901F097FD041E01D00124C0E70198AC +:102DA00020233A00002101F0E5FD002808DB3A6805 +:102DB000044B9A42B4D001246442B1E70124AFE746 +:102DC0000124ADE73DB8F396F0B5DE4657464E46D2 +:102DD0004546E0B583B0836A0193436D9C46002B62 +:102DE00011D0E0231B01019A9A4212D89C4510D8B9 +:102DF000836D9B689A460025002400210023984695 +:102E00009946002220E032480021FFF769FD0020AA +:102E100003E03048FFF764FD002003B0F0BCBB4680 +:102E2000B246A946A046F0BD466ACF00BB465E4406 +:102E300076689B19066DE700BB465E44766892197A +:102E400001310134934227D0019EB14201D3644540 +:102E500031D29342E8D00FD2466ACF00BB465E44DF +:102E600076689B19022D02D001310125EAE71A4844 +:102E7000FFF736FD0020D0E7066DE700BB465E4455 +:102E800076689219012D02D001340225DAE7124842 +:102E9000FFF726FD0020C0E799449044534505D82C +:102EA000524503D8002500220023CDE70B48FFF749 +:102EB00017FD0020B1E7B14203D1644501D1C145FE +:102EC00004D00748FFF70CFD0020A6E70120A4E787 +:102ED000983B0110C03B0110F43B0110303C011045 +:102EE0006C3C011070B586B00522002104A80FF0DB +:102EF00087FF0522002102A80FF082FF02A901200E +:102F0000FDF7E3FB002829D104A90320FDF7DDFB31 +:102F1000051E2AD102AB1B78012B2FD0032B2BD0FF +:102F2000374A02A94B788C78CE78364936480196D4 +:102F30000094FFF7D5FC04AB1B78012B22D0032BA8 +:102F40001ED02F4A04A94B788C78CE782F492E4872 +:102F500001960094FFF7C4FC00241FE02C4B2D4A7F +:102F6000E3212D4849000FF095F9294B294AE52125 +:102F7000294849000FF08EF9284AD2E7284AD0E7BD +:102F8000264ADFE7264ADDE7264900E026492748AA +:102F9000FFF7A6FC30E02649F9E70134032C28D8D6 +:102FA000244BA200D05C02AB1978FDF75BFB002834 +:102FB000F3D0204BA2009B18587804AB1978FDF78A +:102FC00051FB0028E9D01B4BA2009B189B78042BD7 +:102FD00003D002AA92789342DFD1164BA4001B19AA +:102FE000DD78002DD2D0012DD5D0022DCCD01249C4 +:102FF000CDE71248FFF774FC280006B070BDC0464C +:1030000028360110C03C0110DC360110D03C011004 +:10301000A8380110503D01104C3B0110343601100E +:103020002C360110B03C0110A83C0110D83C011016 +:10303000A03C0110643D01104C360110F03C011021 +:10304000F0B5C64600B582B0060088461500204897 +:10305000FFF746FC002400230020002101E001319D +:103060000130AB4201D3A34204D2726ACF00D2191D +:1030700052689B18AC4201D3A34204D9326DC700F9 +:10308000D2195268A418AB42E9D3AC42E7D3A342A9 +:10309000E5D1022342465371002402E0019901392F +:1030A000013400290FDB01AA3000FFF704FC010006 +:1030B00043461B68013BA342F0D8019843463200C7 +:1030C000FFF720FCEAE702B080BCB846F0BDC0467E +:1030D0000C3D01100FB400B583B004AA02CA0192DE +:1030E000044B1B68D8680FF06DFA03B008BC04B03D +:1030F0001847C04614030008F0B5DE4657464E4652 +:103100004546E0B585B0060092460023039302AA27 +:10311000D37003A9072001F0D5FB0190002800D04F +:1031200078E03378032B15D0E0231B0198460398F1 +:1031300001F090FD04008146300000F0EEF8070039 +:1031400000940024002501235B429B463300464641 +:10315000984613E0023B9846E9E7039801F0E8FB44 +:1031600001235B42019340E0002D06D05B46013312 +:1031700003D1A34601E0009301250134A64215D9ED +:1031800043461878E119012302AA033200F066FDD4 +:103190000028E2DB02AB03331B784B45E4D0002D63 +:1031A000E9D05A46002A28DC0093E6E70025002DE6 +:1031B00025D15B46013315D051460831002000F07F +:1031C0008DFA00281FDB009B0133DBB2032B02D9F1 +:1031D00001239C46E344022251464A715246594615 +:1031E00011601371039801F0A3FB019805B0F0BCC6 +:1031F000BB46B246A946A046F0BD0093D7E70748B4 +:10320000FFF768FFD5E7039801F092FB01235B42CB +:103210000193EAE701235B420193E6E7743D011065 +:103220000368013B594308007047012800D17047EB +:103230000220FCE70FB400B583B004AA02CA0192D1 +:10324000044B1B68D8680FF0BDF903B008BC04B08C +:103250001847C0461403000810B5054910220FF0A6 +:10326000C1FD002801D0022010BD0120FCE7C046AE +:103270009037011070B584B004000E0010220021B8 +:1032800068460FF0BDFD002C2CD10CD0012C05D1CF +:1032900001346400FF2C07D9FF2405E0002C0DD178 +:1032A00002346400F6E70124E4B23100200001F0AA +:1032B00009FB051E04D0280004B070BDFF24F3E70D +:1032C00010236A460949200000F0C8FC051E05D1FC +:1032D0000749102268460FF085FD0500306801F0AF +:1032E00027FBE8E701256D42E5E7C04684110000B1 +:1032F00090370110004870478311000010B5FFF7A8 +:10330000F9FF013810BD10B5FFF7F8FF013810BD07 +:1033100010B5FFF7F8FF043810BD0020704700001B +:10332000F8B504000D0017001E00FFF7E7FFA842E4 +:1033300002D12378012B08D0207833003A002900ED +:1033400000F020FC00280DD1F8BD012EF4D12000A2 +:1033500000F0E8FC0028EFD00448FFF76BFF0120E5 +:103360004042F1E701204042EEE7C0469C3D01109B +:1033700010B50078054A1023054900F003FC002829 +:1033800000D110BD01204042FBE7C046903701103C +:103390008411000030B583B00C00002301930B684A +:1033A000002B27D08B79002B0CD0032001A901F032 +:1033B00089FA002808D00124019801F0B9FA200008 +:1033C00003B030BD0120F1E70198FFF7A6FF05002B +:1033D00001212000FFF724FF291823796A460332D0 +:1033E0001370019B1878012300F0CCFB041EE3D07E +:1033F0000124E1E70124E2E7F0B5DE4657464E46F8 +:103400004546E0B589B004000D001022002104A853 +:103410000FF0F6FC002302AAD371029302A9072041 +:1034200001F050FA002800D03AE12078102304AAD5 +:10343000A94900F013FC002800DA34E10023002B36 +:1034400012D000239B469A460298102204A9FDF749 +:103450002DF900286ED003232B705B46002B3CD146 +:103460000027002399466CE02178002B0CD0012B1B +:1034700005D15A1C5200FF2A07D9FF2205E0002B74 +:1034800011D19A1C5200F6E70122D2B291421AD011 +:10349000002B10D0012B08D15A1C52000132FF2AF8 +:1034A0000AD9FF2208E0FF22EFE7002B09D15A1CBE +:1034B00052000332F3E70222D2B2914208D0013324 +:1034C000BDE7FF22F8E700239B4601339A46BBE79E +:1034D00001239B4600239A46B6E7A3681022524276 +:1034E00091469944102304AA4946200001F042FA6B +:1034F000061E00D0DAE0102204A92000FDF7D6F85D +:10350000002803D003232B7000271AE004A8FFF73C +:10351000A3FEC0B22870012804D0002E00DAC8E053 +:1035200001270EE02078102304AA6B4900F02AFB43 +:103530000600F2E704A8FFF78FFE2870002700239B +:1035400099462000FFF7DFFE01002078012302AA40 +:10355000073200F083FB002800DAADE00298012278 +:1035600002ABD91DFDF7A2F8002802D16B78042B1D +:1035700058D901236B7000232B712000FFF7BEFE8A +:1035800001002078AE1C0123320000F067FB002808 +:1035900000DA94E0029801223100FDF787F8002854 +:1035A00049D00323AB702000FFF7A4FE0100019077 +:1035B0002078EB1C98460123424600F04FFB061E84 +:1035C00000DA7FE0029801224146FDF76FF80028FB +:1035D00049D00323EB70AB78013B5A425341DBB235 +:1035E0002278032A05D05A46002A04D15246002ADE +:1035F0004CD0002B3BD0A3681822524291469944EC +:10360000012342464946200001F0B4F9061E5CD170 +:10361000012241462000FDF749F8002810D003237D +:10362000EB7024E002AB07331B780F221A406A705C +:103630001B092B71A1E7A878FFF7F7FDA870B2E787 +:10364000E878FFF7F2FDC0B2E870022803D1002E3F +:103650003EDB00270BE0207801234246019900F071 +:1036600091FA0600F3E7E878FFF7DFFDE870002F36 +:1036700004D02378032B01D0002E0AD0300009B0EB +:10368000F0BCBB46B246A946A046F0BD0126764234 +:10369000EDE710224946200001F022FA0600EDE78E +:1036A00001267642EAE701267642E7E701267642DE +:1036B000E4E701267642E1E701267642DEE70126CD +:1036C0007642DBE701267642D8E701267642D5E747 +:1036D00001267642D2E7C0468411000030B583B09F +:1036E0000C0001A9FFF7C6FD002801D003B030BDD2 +:1036F000019D2800FFF70CFE01002878042322001A +:1037000000F0ACFAF2E7000030B583B00C000978A5 +:103710002748FFF78FFD0023019301A9072001F03F +:10372000D1F8002831D12378032B11D0002101F0EA +:1037300057FA00282CDBC5B20121002001F050FA15 +:10374000002828DBC0B22378AB4201D0834225D1C8 +:10375000207800F0FBF9011E23DB902201989201F2 +:1037600001F0BEF9051E1FD12378032B05D1019866 +:1037700001F0DEF8280003B030BDA16840394022D6 +:10378000200001F0ADF90500F1E701256D42F1E7F8 +:1037900001256D42EEE701256D42EBE701256D4203 +:1037A000E8E701256D42E5E701256D42E2E7C04605 +:1037B000B83D011030B583B00C0015000522002182 +:1037C00068460FF01DFB69460220FCF77EFF0028CB +:1037D00013D1E979012916D16B46DB78012B1ED074 +:1037E000A9682000FCF71DFF002824D12000FFF766 +:1037F000BFFD002826D103B030BD154B154A164831 +:1038000016490EF047FD00222000FCF78BFF002830 +:10381000E2D00F4B0F4A104811490EF03BFD20003B +:10382000FCF775FF0028DBD0094B0A4A9F210A48A4 +:1038300089000EF02FFD064B064AA021064889009C +:103840000EF028FD024B034A034806490EF022FD04 +:10385000DC3D0110343E0110E43D01107302000014 +:10386000770200008B020000F0B585B006000D0065 +:103870000023039302936A46D371FFF733FB041EC0 +:10388000E8603BD002283CD001283CD1032703A9A3 +:10389000380001F017F8002838D102A9073001F0EC +:1038A00011F8002835D103982A003100FFF724FCD5 +:1038B000041E1DD10398FFF726FD010001236A466F +:1038C0000732380000F0CAF9061E25DB02980122F3 +:1038D0006B46D91DFCF7EAFE002803D06B46012297 +:1038E000DA7126006B46DA790F231340EB7134004E +:1038F000039801F01DF8029801F01AF8200005B0B5 +:10390000F0BD0127C3E701246442F7E701246442C4 +:10391000F4E701246442F1E701246442EEE7000089 +:10392000F0B5DE4657464E464546E0B587B0804680 +:103930000091914603930023059305A9072000F009 +:10394000C1FF051E00D093E000260023019300274D +:103950009B46029319E04948494BC35C1B06FF2272 +:103960005200825C12041343FE22FF32825C120278 +:1039700013430831425C13439A46FCF7E9FF504574 +:103980002AD001239C46E3440136012E3FD8F4009F +:10399000A419640244448023384A05989B002100FE +:1039A00000F0E8FF051E66D1344AF823FF33D35CEC +:1039B0001B06FB214900515C09040B43F621FF3132 +:1039C000515C09020B43FA214900525C13432D4A12 +:1039D0009342C0D00137D7E7284AFC23FF33D35C9A +:1039E0001B06FD214900515C09040B43FA21FF31FC +:1039F000515C09020B43FC214900525C1343019ABC +:103A00009A42C1D8039A166001930294BCE7022F30 +:103A10000FD05B46022B1CD101256D42059800F0AA +:103A200087FF280007B0F0BCBB46B246A946A046B7 +:103A3000F0BD0123039A136000234A4613600598E2 +:103A400001F008F90100FA22520000980FF0D8F9AD +:103A5000E4E74B46019A1A60FA2305985B00009A46 +:103A6000029900F087FF051ED8D001256D42D5E7E9 +:103A700001256D42D5E701256D42D2E7C45C0108FE +:103A8000FF010000EFBEADDEF0B5CE46474680B583 +:103A900083B006000D009846531C99460020019003 +:103AA00001A9073000F00EFF002836D11E4CFA277E +:103AB0007F003A00414620000FF0EDF9FC235B0047 +:103AC0004A46E250194B1B68E35108373900200081 +:103AD000FCF73EFFE051012D1DD00135EC006419CB +:103AE0006402A419802201989200210000F0F8FFDE +:103AF000002815D180230C4A01989B00210000F07A +:103B000095FF0400019800F013FF200003B0C0BC33 +:103B1000B946B046F0BD0025E0E701246442F4E771 +:103B200001246442F1E7C046C45C0108483E01102C +:103B300010B5054910220FF055F9002801D00220D8 +:103B400010BD0120FCE7C0469037011082B0020092 +:103B500001AB0121197001315970013199700023B5 +:103B6000002004E0902189018C4660440133022B3F +:103B700004D801A9C95C9142F4D101E0012040427E +:103B800002B07047F0B5CE46474680B583B0060018 +:103B90000F0090461C00002301930093FA21490076 +:103BA00038000EF02DFA0D00FB43A34242D33B191F +:103BB000284A934241D83000FFF7C8FF061E3FDB7A +:103BC000FA21490038000EF095F940023618002716 +:103BD0000120404203E0220010E000240025002CD8 +:103BE00033D01D4901AB6A463000FFF799FE00282B +:103BF00029DBFA235B009C42EDD95A1B164B9946F0 +:103C0000280048444346D9190FF045F9009A019914 +:103C10004B463000FFF738FF002816D1FA235B002F +:103C20009C42DAD3F53CFF3C0C339C466644F537A6 +:103C3000FF37D3E70120404207E00120404204E083 +:103C40000120404201E00120404203B0C0BCB9461F +:103C5000B046F0BD94110000C45E0108F0B5CE4638 +:103C6000474680B583B007000D0091461C00002335 +:103C700001930093FA21490028000EF0C1F90E00CB +:103C8000EB43A34239D32B19244A934238D8380046 +:103C9000FFF75CFF071E36DBFA21490028000EF013 +:103CA00029F940023F1800239846002515E022001C +:103CB000484640441A4971180FF0EDF8FA235B00AA +:103CC0009C4208D3F53CFF3C0C339C4667440C3BBC +:103CD0009C46E04400E000240026002C18D0104947 +:103CE00001AB6A463800FFF71BFE051E0EDBFA2308 +:103CF0005B009C42DBD99A1BDAE701256D4207E0A5 +:103D000001256D4204E001256D4201E001256D426F +:103D1000280003B0C0BCB946B046F0BD9411000005 +:103D2000C45E0108F0B5CE46474680B5764CA54442 +:103D300006000023829382A9072000F0C3FD00281B +:103D400006D08B239B009D44C0BCB946B046F0BD55 +:103D5000829800F07FFF01900700829800F0E8FD54 +:103D60001722002184A80FF04BF834783000FFF7B9 +:103D7000CFFA0100172384AA2000FFF76FFF002865 +:103D8000DFD1624802AB9C466044FFF7D1FE0128B8 +:103D900000D0B0E00020FCF735FC0500300000F05A +:103DA000F9FE80239B00984200D91800431E802210 +:103DB0009200934200D3A1E0040000E02418AC423A +:103DC000FCD380239B009C4200D99AE0B168091B78 +:103DD0002200300000F084FE0028B2D1300000F054 +:103DE00039FF81464A4B02AA944663441870601B0F +:103DF00060442A0049460FF003F810235B429846BE +:103E0000A044B94509D010220199404802AB9C4614 +:103E10006044FCF737FC002846D1404602AB9C4684 +:103E200060441022394961440FF035F82200183AF5 +:103E3000374B02A98C4663441B78BB423FD084A910 +:103E40008979B94240D033496144097802A8815444 +:103E500001212200203A8154083ABB4239D084A97A +:103E60000979B94237D085A9097802A8815430224E +:103E700052429046A044BB4206D03432019984A8F5 +:103E8000FCF700FC00282BD1404602AB9C46604466 +:103E9000042284A90EF0FFFFB168091B230002AAC7 +:103EA000300000F0C3FD4CE7404602AB9C46604446 +:103EB000174B6344197810220EF0A2FFB6E715499C +:103EC00002A884466144C0E7114902A884466144BF +:103ED000BBE785A9C8E70E4902A884466144C3E749 +:103EE000404602AB9C466044094B63441978042267 +:103EF0000EF086FFD0E70120404222E70120404239 +:103F00001FE7012040421CE7D4FDFFFF0F02000025 +:103F1000070200000E020000F0B5D6464F464646A6 +:103F2000C0B582B004000D00170099460AAA1378A4 +:103F30009A46002844D0002946D0002F48D00E8948 +:103F4000CB68F618042301AA3100380000F012FDF6 +:103F50008046002840D101AB1A88274B9A421FD0D7 +:103F60006B89002B40D101AB1A88244B9A423FD178 +:103F7000256067604B4623815346A3726B899B196A +:103F8000E3606B899B1901AA52889B186361043610 +:103F90002661404602B0E0BCBA46B146A846F0BD34 +:103FA0006B8901AA51888B421AD1891904233800E0 +:103FB00000F0E0FC0028D6D001235B429846E8E7F9 +:103FC00001235B429846E4E701235B429846E0E721 +:103FD00001235B429846DCE701235B429846D8E721 +:103FE00001235B429846D4E701235B429846D0E721 +:103FF00001235B429846CCE708690000076900008E +:10400000F0B583B004000F0015001E00002849D051 +:104010000368002B4AD04368002B4AD000294BD0BC +:10402000002A1FD1012040423EE02169606804233C +:1040300001AA00F09FFC002841D1A37A002B03D0F5 +:104040002269E3689A423DD223891F4A934217D0DE +:1040500001AA1288934213D001AB58882369C01873 +:104060000430206123696269934219D2226852891F +:10407000002ADAD0E2689A42D7D104332361D4E728 +:10408000002E02D001AB1B883380236904333B60D0 +:1040900001AB5B882B8022699B180433236103E00A +:1040A000012001E00120404203B0F0BD0120404268 +:1040B000FAE701204042F7E701204042F4E70120FF +:1040C0004042F1E70120EFE7FFFF000070B50D006F +:1040D0001600002902D00020002406E00024200061 +:1040E00070BD0028FBD101350134B442F7DA002855 +:1040F000F7D12978014807F0C3FDF2E7B86001085D +:1041000070B50C001600002914D0002503E000282B +:1041100011D1B5420FDA09480022210007F084FDD1 +:104120000028F4D1013523780A2B04D00D2B02D0BE +:104130000134ECE70025280070BDC046B8600108D6 +:10414000F0B5C64600B58AB007009446984605AD5E +:104150000E4C2E000DCC0DC609CC09C60C4802959C +:10416000002401944346009363460A00390007F097 +:10417000D1FD002803D00AB080BCB846F0BD044889 +:104180000022109907F074FBF5E7C046B83E011015 +:10419000B860010810B5024807F086FD10BDC046A2 +:1041A000B860010810B5FA24A400002C08DDFFF760 +:1041B000F1FF002804D0012007F030F8013CF4E7BB +:1041C000002C00D101BE024807F08EFA10BDC04697 +:1041D000B8600108F0B5C64600B58C680A6884234B +:1041E000C558753B2B400825ED1A2300AC4226D953 +:1041F0002B0024E055782D0216783543D678360604 +:1042000097783F043E4335439827C55155792D0291 +:1042100016793543A846D679360695792D042E436E +:1042200045463543C551D218E41A8423C558753B19 +:104230002B400825ED1A2300AC4200D92B00002B9F +:104240004CD0082B31D89D002E4E7559AF461678AC +:1042500090254651E7E753781B0215782B439425A8 +:1042600043510223DFE753781B0215782B43D5789F +:104270002D069678360435432B4398254351042365 +:10428000D1E753781B0215782B43D5782D06967805 +:10429000360435432B439825435153791B02157936 +:1042A0002B43942543510623BDE753781B02157811 +:1042B0002B43D5782D069678360435432B43982624 +:1042C000835153791B0215792B43D5792D069779A4 +:1042D0003F043D432B4383510823A4E70A608C60CD +:1042E000002C0CD1F924E40003590122934303511B +:1042F0008A61CB69002B02D0CB690120984780BC32 +:10430000B846F0BDCC3E0110F8B50E004C69CB6844 +:10431000C42282580F21114022008C421CD90A006D +:104320001AE0D825415919700F0A5F700F0C9F7061 +:10433000090ED970415919710D0A5D710D0C9D71ED +:10434000090ED9719B18A41AC42282580F25154052 +:104350002200AC4200D92A00002A63D0082A4ED895 +:1043600095003A4949598F46D02141581970E9E7DB +:10437000D42141581970090A5970E3E7D4214158F2 +:104380001970090A5970D02141589970DAE7D8217B +:10439000415819700D0A5D700D0C9D70090ED97091 +:1043A000D0E7D821415819700D0A5D700D0C9D7031 +:1043B000090ED970D02141581971C3E7D82141584D +:1043C00019700D0A5D700D0C9D70090ED970D42105 +:1043D00041581971090A5971B4E7D8214158197027 +:1043E0000D0A5D700D0C9D70090ED970D4214158D5 +:1043F0001971090A5971D02141589971A2E7D82140 +:1044000042581A70150A5D70150C9D70120EDA7004 +:1044100042581A71110A5971110C9971120EDA7100 +:1044200008228FE7F3607461002C0DD1F922D200CD +:10443000835802218B4383500323B361336A002BDB +:1044400002D0336A032098477461F8BDF03E011032 +:1044500010B5264A264BD358DA070DD49A0716D43E +:104460005A071FD5234B05229A61204AF823DB0007 +:104470000421D150D35809E01E491C4C2000FFF7FD +:10448000A9FEF823DB000122E250E35810BD1949D0 +:10449000164C2000FFF738FFF823DB000222E25021 +:1044A000E358F3E71A0709D5124B06229A610F4A1F +:1044B000F823DB000821D150D358E7E7DA0609D505 +:1044C0000C4B07229A61094AF823DB001021D150D6 +:1044D000D358DBE79B06D9D5064B08229A61034ADD +:1044E000F823DB002021D150D358CFE70000424011 +:1044F000CC0700007462010810B5314A314C032129 +:10450000200008F09BF811220321200007F096FFFD +:104510002D4A0421200008F091F8112204212000E6 +:1045200007F08CFF294A0521200008F087F81122A6 +:104530000521200007F082FF254A0621200008F00F +:104540007DF811220621200007F078FF214A07217B +:10455000200008F073F811220721200007F06EFFF9 +:10456000002102200BF04EFA012102200BF07AFA12 +:1045700002200BF001FA184918480CF021F9184BE9 +:10458000FA2218499200184809F0B6F9041E01D021 +:10459000200010BD1249FA20800009F0EBFD0F4BFE +:1045A00000229B5E002B06DB1F2213401E3A9A401E +:1045B00013000E4A13600A490B4809F04FFBE7E766 +:1045C000B03F0110800531407C3F0110483F011091 +:1045D000143F0110E43F011051440010D8010008BD +:1045E00074620108184001100000424000E100E040 +:1045F000024B1B685B688000C0587047306301083D +:10460000004870470000424000487047746201084B +:1046100010B50400FFF770FF002800D010BD044B58 +:104620001C60044A2100044809F0B2FBF6E7C046CA +:1046300030630108746201080000424070B5234BEA +:104640005B6803282ED009D8012810D0022803D196 +:104650001B6802221A700DE01D4C06E0042803D1ED +:104660001B6808221A7005E0194C200070BD1B68F9 +:1046700001221A700138174B420011188900CC58DA +:104680001118890059184D680E7A134A16722900BC +:10469000200007F0D3FF32002900200007F0CEFEF3 +:1046A0000A2507E01B6804221A70E3E7002CDCD01F +:1046B000002DDAD00548FFF7ABFF0400013D0028CC +:1046C000F4D0FA2040000CF00FF9EFE7C801000821 +:1046D0000400B2002C400110F8000008024B5B6897 +:1046E0001B689B6998697047C801000870B5040091 +:1046F0001D4D280009F020FC2B685B005B082B6037 +:1047000002200BF063F9194B00229B5E002B0BDBA0 +:104710001F2213401E3A9A401300154980228B50E5 +:10472000BFF34F8FBFF36F8F104B59880020185E77 +:104730000BF0E2FF013C0F4A600000198000805836 +:1047400007F052FE0C4C200007F04EFE200007F050 +:104750004BFE200007F048FE200007F045FE200039 +:1047600007F042FE70BDC04600004240D80100087C +:1047700000E100E02C400110800531407F2807D087 +:1047800040B2002801DB00207047C0204005FBE755 +:1047900080204005F8E780208000704700207047A7 +:1047A00000207047704770B58A18490A4D02540AB4 +:1047B0006402A54210D0641B640A01235B42002CF2 +:1047C00008D0013C6002401907F094FD0023002846 +:1047D000F5D00123180070BD280007F08BFD0028DC +:1047E00001D00123F6E70023F4E7F8B50D00141E0D +:1047F00016D0DA0516D1CA05D60D002A14D15F0AE3 +:104800000120BE420DD22100280007F0ADFD002896 +:104810000CD180239B009C46654464440136F0E73C +:104820000120F8BD0720FCE70720FAE70120F8E7A0 +:1048300010B514001A0020000EF02DFB844201D1A7 +:10484000002010BD01204042FBE7000010B500220F +:1048500000E00132064B9400E358002B05D01C7891 +:104860008442F6D10B60002001E00120404210BDDF +:104870009C00000810B50C1E14D07F2810D043B245 +:10488000002B07DA0A4B002B0FD0DB69984720601A +:10489000002010BD074B084A084856210DF0FAFCCD +:1048A000074BF0E701204042F3E701204042F0E7E8 +:1048B000044101107C400110F040011084400110BF +:1048C0005C40011010B5002901D000220CE001204D +:1048D000404220E0104B114A114856210DF0DAFCFD +:1048E000104C002C11D101320F4B9400E358002BD7 +:1048F0000FD01C788442F6D10B605B787F2BEFD011 +:104900005CB2002CE6DA094CEBE72268180090470D +:1049100001E00120404210BD7C400110F040011038 +:10492000844001105C4001109C000008044101100B +:1049300010B500280AD040787F280ED043B2002B53 +:1049400005DA074B002B01D05B68984710BD054B7B +:10495000054A064856210DF09DFC054BF2E7C0467E +:10496000044101107C400110F0400110844001100E +:104970005C400110F0B583B004000D0016001F006C +:1049800000230193002844D083688B4207D3BB42A5 +:104990001FD3CA1993421ED30120404200E00720D2 +:1049A00063787F2B1FD05AB2002A16DA1A4A002ADF +:1049B0000DD001A91800FFF75DFF002807D101996C +:1049C000002904D06368C918491900290DD103B022 +:1049D000F0BD0720E4E70720E2E7104B104A11483A +:1049E00056210DF057FC104AE1E760787F280ED081 +:1049F00043B2002B05DA084B9C683B003200A0470D +:104A0000E5E7064B064A074856210DF043FC064BE6 +:104A1000F2E701204042DAE7044101107C40011036 +:104A2000F0400110844001105C400110F0B583B0EB +:104A300004000D0017001E0000230193002841D040 +:104A400083688B4206D3B34228D38A19934227D373 +:104A5000012000E0072063787F2B29D05AB2002A7A +:104A600020DA1A4A002A2ED001A91800FFF702FF07 +:104A7000002828D10199002925D06368C91849194F +:104A8000002920D060787F281AD043B2002B11DA99 +:104A90000E4BDC6833003A00A04714E00720DAE749 +:104AA0000720D8E70A4B0B4A0B4856210DF0F2FBC2 +:104AB0000A4AD7E7064B074A074856210DF0EAFB9A +:104AC000064BE6E7012003B0F0BDC04604410110EB +:104AD0007C400110F0400110844001105C40011046 +:104AE00070B582B004000D00160000230193002869 +:104AF00043D083688B4207D393421FD38A189342D3 +:104B00001ED30120404200E0072063787F2B1FD096 +:104B10005AB2002A16DA1A4A002A0DD001A9180042 +:104B2000FFF7A8FE002807D10199002904D0636887 +:104B3000C918491900290DD102B070BD0720E4E75A +:104B40000720E2E70F4B104A104856210DF0A2FB58 +:104B50000F4AE1E760787F280DD043B2002B04DADA +:104B6000074B1B6932009847E6E7064B064A0748A1 +:104B700056210DF08FFB064BF3E701204042DBE7A7 +:104B8000044101107C400110F040011084400110EC +:104B90005C40011010B5002813D040787F280ED05B +:104BA00043B2002B05DA094B002B0CD09B699847C8 +:104BB00008E0074B074A084856210DF06BFB074BEE +:104BC000F2E7002010BD0020FCE7C04604410110C0 +:104BD0007C400110F0400110844001105C40011045 +:104BE000002832D101291AD0022931D0002902D05F +:104BF00001204042704700280CD0012805D1013027 +:104C00004000FF2807D9FF2005E0002805D1023029 +:104C10004000F6E70120C0B2ECE7FF20FBE70028E8 +:104C20000ED0012806D1013040000130FF2808D9FC +:104C3000FF2006E0002806D1013040000330F5E7F0 +:104C40000220C0B2D6E7FF20FBE701204042D1E7B7 +:104C50000320CFE710B5002813D040787F280ED06E +:104C600043B2002B05DA094B002B0CD05B69984747 +:104C700010BD074B074A084856210DF00BFB074BA8 +:104C8000F2E70020F4E70020F2E7C04604410110FB +:104C90007C400110F0400110844001105C40011084 +:104CA000F0B5D6464F464646C0B582B089469046D6 +:104CB0000023019301A9FFF7C9FD8246019B002B48 +:104CC00051D04A46002A52D04246002A53D00028EA +:104CD00055D158787F281DD043B2002B14DA2E4BC3 +:104CE000002B50D09B6998470700019DAC680019C4 +:104CF000013839000DF0FEF8E0231B01984200D97D +:104D00007F006D68002614E0244B254A2548562173 +:104D10000DF0C0FA244BE3E73900A14200D921008D +:104D2000F300434459601D606D18A1420BD8641A0A +:104D30000136002C0AD0390028000DF061F9002955 +:104D4000EAD0791AE9E701360024F2E74B461B68FE +:104D5000B3421CD34B461E60504602B0E0BCBA467C +:104D6000B146A846F0BD01235B429A46F4E7012311 +:104D70005B429A46F0E701235B429A46ECE7012347 +:104D80005B429A46E8E701235B429A46E4E7012347 +:104D90005B429A46E0E7C046044101107C400110A6 +:104DA000F0400110844001105C40011040B2002826 +:104DB00001DB00207047C0204005FBE7FF20704763 +:104DC00000207047704710B5FFF788FC10BDF0B5A4 +:104DD000C64600B582B00D00141E2FD00020FFF78C +:104DE00007FC8046FFF77AFC0600E8231B069C467A +:104DF000654447422F40002001E0E41ABF19002C0F +:104E000012D0002810D1FFF7FBFB0500FFF7FCFBD9 +:104E1000009033003A004146280009F087FB230048 +:104E2000B442EAD93300E8E7002804D1002002B0F8 +:104E300080BCB846F0BD01204042F8E70120404266 +:104E4000F5E7F0B5C64600B582B00C0017001D00AE +:104E50000020FFF7CDFB0600E8231B069C466444B8 +:104E6000FFF7CEFB8046FFF7CFFB019000953B009C +:104E700022003100404609F09BFA002804D10020AE +:104E800002B080BCB846F0BD01204042F8E7F0B562 +:104E9000C64600B582B00C0017001D000020FFF7C9 +:104EA000A7FB0600E8231B069C466444FFF7A8FB0B +:104EB0008046FFF7A9FB019000953B0022003100DE +:104EC000404609F0DDF9002804D1002002B080BC82 +:104ED000B846F0BD01204042F8E770B50368CD1A2E +:104EE000002D52DD1E7800241C57002C0ADB5C1CB0 +:104EF00004601B78136013680268891A8B4253D8C8 +:104F0000002070BD7F243440032C30D011D8012CF8 +:104F100025D0022C0AD1022D3DDD5C7824029B783D +:104F200023431360036803330360E4E764204042D3 +:104F3000E7E7042C10D1042D33DD5C7824069D783E +:104F40002D042C43DD782D022C431B792343136061 +:104F5000036805330360CEE764204042D1E7012DAA +:104F600016DD5B781360036802330360C3E7032D2B +:104F700014DD5C7824049D782D022C43DB782343D8 +:104F80001360036804330360B5E760204042B8E76C +:104F900060204042B5E760204042B2E760204042D6 +:104FA000AFE760204042ACE760204042A9E770B51F +:104FB00004680D1B002D07DD25789D4207D10134C3 +:104FC0000460FFF78AFF70BD60204042FBE762206B +:104FD0004042F8E730B583B004001500022301AA6F +:104FE000FFF7E5FF002801D003B030BD019A21682A +:104FF000280000F0CCFD2368019A9B182360F3E79A +:1050000070B5050014000323FFF7D1FF00280AD173 +:105010002368002B08D0013B23602B681A78002AF4 +:1050200005D101332B6070BD68204042FBE768204A +:105030004042F8E7F0B5C64600B582B005008846A4 +:1050400017001E00302301AAFFF7B1FF041E2CD168 +:105050002B684246D11A002931DD1B783A0008C27C +:105060002968019B88469844062341462800FFF79B +:105070009EFF041E19D12A68BA607B68D2182A6084 +:10508000424517D01378320008C22B6801332B60D9 +:1050900041462800FFF721FF041E06D12B68B360AC +:1050A00072689B182B6043450CD1200002B080BC75 +:1050B000B846F0BD0C21300003F0A0FEF5E76024F7 +:1050C0006442F2E766246442EFE7431C013150007A +:1050D00059400840584001387047F0B5CE46474621 +:1050E00080B591465A42944600260DE0B4004A46E7 +:1050F000155967463D400C192768B8465F1E424661 +:1051000017403D43256001368642EFD3C0BCB94607 +:10511000B046F0BD020080231B0600201F2804D8E3 +:105120001A4202D15B080130F8E77047030048409B +:105130005B1A594008405840C00F7047F0B5C6464A +:1051400000B584469846002000250EE0AE00945934 +:105150008442BF417F42241A43469B599C4280416E +:105160004042C019E41A8C5101356545EED380BC2C +:10517000B846F0BDF0B5CE46474680B587B0844608 +:1051800003910292019300230593DFE103980299B2 +:10519000059A019B1F0CB9461F043F0CB84640C836 +:1051A000370C3604360C444674434B465E434D463A +:1051B0007D4343465F43330CED183B0CED18A418B8 +:1051C000002255413304E41855413B04E41855418D +:1051D0000B68E4186A4110C140C8370C3604360C1D +:1051E000444674434B465E434D467D4343465F43CE +:1051F000330CED183B0CED18A41800225541330474 +:10520000E41855413B04E41855410B68E4186A4121 +:1052100010C140C8370C3604360C444674434B4624 +:105220005E434D467D4343465F43330CED183B0CD4 +:10523000ED18A418002255413304E41855413B04ED +:10524000E41855410B68E4186A4110C140C8370C96 +:105250003604360C444674434B465E434D467D430C +:1052600043465F43330CED183B0CED18A4180022A5 +:1052700055413304E41855413B04E41855410B688B +:10528000E4186A4110C140C8370C3604360C444655 +:1052900074434B465E434D467D4343465F43330C68 +:1052A000ED183B0CED18A418002255413304E41806 +:1052B00055413B04E41855410B68E4186A4110C19C +:1052C00040C8370C3604360C444674434B465E43A4 +:1052D0004D467D4343465F43330CED183B0CED18C0 +:1052E000A418002255413304E41855413B04E41846 +:1052F00055410B68E4186A4110C140C8370C3604A8 +:10530000360C444674434B465E434D467D4343460C +:105310005F43330CED183B0CED18A41800225541E7 +:105320003304E41855413B04E41855410B68E41874 +:105330006A4110C140C8370C3604360C44467443E9 +:105340004B465E434D467D4343465F43330CED1869 +:105350003B0CED18A418002255413304E4185541C4 +:105360003B04E41855410B68E4186A4110C140C879 +:10537000370C3604360C444674434B465E434D4668 +:105380007D4343465F43330CED183B0CED18A418E6 +:10539000002255413304E41855413B04E4185541BB +:1053A0000B68E4186A4110C140C8370C3604360C4B +:1053B000444674434B465E434D467D4343465F43FC +:1053C000330CED183B0CED18A418002255413304A2 +:1053D000E41855413B04E41855410B68E4186A4150 +:1053E00010C140C8370C3604360C444674434B4653 +:1053F0005E434D467D4343465F43330CED183B0C03 +:10540000ED18A418002255413304E41855413B041B +:10541000E41855410B68E4186A4110C140C8370CC4 +:105420003604360C444674434B465E434D467D433A +:1054300043465F43330CED183B0CED18A4180022D3 +:1054400055413304E41855413B04E41855410B68B9 +:10545000E4186A4110C140C8370C3604360C444683 +:1054600074434B465E434D467D4343465F43330C96 +:10547000ED183B0CED18A418002255413304E41834 +:1054800055413B04E41855410B68E4186A4110C1CA +:1054900040C8370C3604360C444674434B465E43D2 +:1054A0004D467D4343465F43330CED183B0CED18EE +:1054B000A418002255413304E41855413B04E41874 +:1054C00055410B68E4186A4110C140C8370C3604D6 +:1054D000360C444674434B465E434D467D4343463B +:1054E0005F43330CED183B0CED18A4180022554116 +:1054F0003304E41855413B04E41855410B68E418A3 +:105500006A4110C140C8370C3604360C4446744317 +:105510004B465E434D467D4343465F43330CED1897 +:105520003B0CED18A418002255413304E4185541F2 +:105530003B04E41855410B68E4186A4110C1059218 +:105540000291039010235B429846C44463460F2B9C +:1055500000D91BE66346072B00D825E10398029982 +:10556000059A019B1F0CB9461F043F0CB84640C862 +:10557000370C3604360C444674434B465E434D4666 +:105580007D4343465F43330CED183B0CED18A418E4 +:10559000002255413304E41855413B04E4185541B9 +:1055A0000B68E4186A4110C140C8370C3604360C49 +:1055B000444674434B465E434D467D4343465F43FA +:1055C000330CED183B0CED18A418002255413304A0 +:1055D000E41855413B04E41855410B68E4186A414E +:1055E00010C140C8370C3604360C444674434B4651 +:1055F0005E434D467D4343465F43330CED183B0C01 +:10560000ED18A418002255413304E41855413B0419 +:10561000E41855410B68E4186A4110C140C8370CC2 +:105620003604360C444674434B465E434D467D4338 +:1056300043465F43330CED183B0CED18A4180022D1 +:1056400055413304E41855413B04E41855410B68B7 +:10565000E4186A4110C140C8370C3604360C444681 +:1056600074434B465E434D467D4343465F43330C94 +:10567000ED183B0CED18A418002255413304E41832 +:1056800055413B04E41855410B68E4186A4110C1C8 +:1056900040C8370C3604360C444674434B465E43D0 +:1056A0004D467D4343465F43330CED183B0CED18EC +:1056B000A418002255413304E41855413B04E41872 +:1056C00055410B68E4186A4110C140C8370C3604D4 +:1056D000360C444674434B465E434D467D43434639 +:1056E0005F43330CED183B0CED18A4180022554114 +:1056F0003304E41855413B04E41855410B68E418A1 +:105700006A4110C140C8370C3604360C4446744315 +:105710004B465E434D467D4343465F43330CED1895 +:105720003B0CED18A418002255413304E4185541F0 +:105730003B04E41855410B68E4186A4110C1059216 +:105740000291039008235B429846C44402E7039801 +:105750000299059A019B1F0CB9461F043F0CB846DD +:1057600040C8370C3604360C444674434B465E43FF +:105770004D467D4343465F43330CED183B0CED181B +:10578000A418002255413304E41855413B04E418A1 +:1057900055410B68E4186A4110C1059202910390CB +:1057A00001235B429846C4446346002BCFD10BE0F3 +:1057B00002990B689B180B60029A08CA05998B42E4 +:1057C0009B415B4205930292059A002AF0D107B0F3 +:1057D000C0BCB946B046F0BDF8B507000D001400D6 +:1057E0001E00002A10D082420ED900230800390082 +:1057F0000CF02AFC002901D001204042002E02D0EA +:1058000044432D1B3560F8BD002E02D001235B42BE +:10581000336001204042F6E710B5890003F0EEFA4C +:1058200010BD00BA7047000070B50500002911D006 +:10583000094B9C4661448C00041909E02868FFF775 +:10584000F0FF06002068FFF7ECFF01C52660043C6E +:10585000A542F3D970BDC046FFFFFF3FF0B5D64665 +:105860004F464646C0B504000D00924698468E0845 +:10587000032129404B1E99417618B30099465F1BBE +:105880004368B3421ED380683A0000210DF0B8FA95 +:10589000A0686268921B9200484400210DF0B0FAA3 +:1058A000A168C9192A004046D047051E05D0280026 +:1058B000E0BCBA46B146A846F0BDA0683100FFF78B +:1058C000B3FFF4E704256D42F1E7012303600023F1 +:1058D00043608360704710B5041E0DD080680028B7 +:1058E00005D06168FFF798FFA0680CF077FE0123F0 +:1058F000236000236360A36010BD0000F8B50600BC +:105900000C00124B99421BD845688D4201D30020F0 +:10591000F8BD042120000CF0DBFC071E13D0B16899 +:10592000002909D0AA000DF0B6FA7168B068FFF737 +:1059300073FFB0680CF052FE7460B7600020E7E7B8 +:1059400010204042E4E710204042E1E71027000029 +:1059500070B505000C1E09D043688B420AD0FFF7D2 +:10596000BAFF21002800FFF7C9FF70BDFFF7B3FFA2 +:105970000020FAE780688A0000210DF041FA012337 +:105980002B600020F1E7000070B504000D001A4BF9 +:1059900099422AD843688B4209D9013B002B09D090 +:1059A000A26898008258002A04D1013BF6E7FFF76D +:1059B000A5FF19E001339D4200D81D0004212800F5 +:1059C0000CF086FC061E13D0A168002909D0AA009D +:1059D0000DF061FA6168A068FFF71EFFA0680CF087 +:1059E000FDFD6560A660002070BD10204042FBE711 +:1059F00010204042F8E7C04610270000F8B5060026 +:105A00000D00884236D04A68002A01D0013A0DE0E4 +:105A10004268002A01D100272AE001230360806840 +:105A2000920000210DF0ECF9F5E7013A002A04D0CC +:105A3000AB689400E358002BF7D0541C2B683360FC +:105A40007268A24206D221003000FFF757FF071EFE +:105A500009D00DE0B068A300C018121B920000210D +:105A60000DF0CEF90027B068A968A2000DF013FA76 +:105A70003800F8BD0027FBE7F8B504000F005542D9 +:105A8000EDB21543ED094968FFF738FF061E01D056 +:105A90003000F8BD396820682A00FFF716FB206047 +:105AA0007868BA68A1682B00FFF717FB7A6807E0EF +:105AB000A1689300C9186B1E086803400B6001328F +:105AC00063689342F4D8E3E770B504000E00012147 +:105AD000FFF714FF051E01D0280070BDA0686268A2 +:105AE000920000210DF08CF9A368F11772184A405A +:105AF0001A60002E02DB01232360EDE701235B42E5 +:105B0000FAE743685B018B4209D982684B099B0025 +:105B10009B581F220A40D3400120184070470020A4 +:105B2000FCE730B50400002000256368AB420DD9C6 +:105B300000221F2A08D8A368A900CB58D340DB074E +:105B400005D401320130F4E70135EEE7002030BD25 +:105B500010B501004068002812D0441E002C06D069 +:105B60008B68A200D358002B01D1013CF6E78A686C +:105B7000A300D058FFF7CEFA2023181A640120188A +:105B800010BD10B5FFF7E4FF0730C00810BDF0B539 +:105B9000CE4600B582B0050001911400960803239B +:105BA00013405A1E9341F618B000031B994631006A +:105BB0002800FFF7CDFE071E01D1002C04D13800CC +:105BC00002B080BCB946F0BDA868484422000199E3 +:105BD0000DF061F9A8683100FFF726FEEFE700003D +:105BE000F0B5C64600B504000F004D091F260E4053 +:105BF000FFF7AEFFC01963685B01834203D31F2F19 +:105C000026D9636817E041091F2303405A1E9341B8 +:105C1000C9182000FFF772FE0028F0D01BE0A06832 +:105C20005A1B1B4959188900194FBC4662449200FF +:105C300012584250013BAB42F1D807E0A268144928 +:105C400059188900521800211160013B002BF5D131 +:105C5000002E1BD1002080BCB846F0BDA368A9006F +:105C60005B1818682022921B90460200B2401A600E +:105C7000A3685B1819683943196001354346D84059 +:105C800007006368AB42E9D80020E4E70027F8E7A3 +:105C9000FFFFFF3FF0B5C64600B54C091F250D407C +:105CA0004368A34209D306D01F2916D8002D3BD044 +:105CB0004168002632E0002DF6D00021FFF704FFF6 +:105CC0002FE081681A199E00920052588A510133C0 +:105CD0004268121B9A42F4D807E00023F8E7826872 +:105CE0009900521800211160013342689A42F6D897 +:105CF000DCE783680D4A8A1892009B181F682024ED +:105D0000641BA0463C00EC401C6083689B181A682A +:105D100032431A6001393E0043469E400029E8D1D3 +:105D2000002080BCB846F0BD0020FAE7FFFFFF3F2F +:105D300030B54368002B08D084681B4A9A1892003B +:105D40001259002A01D1013BF4E74A68002A08D021 +:105D50008D68154C1419A4006459002C01D1013A26 +:105D6000F4E71C00144312D0934212D813D3002B33 +:105D70000BD084680C4A9A189200A4588D68AA58CF +:105D800094420BD80CD3013BF1E7002000E0002047 +:105D900030BD0120FCE701204042F9E70120F7E790 +:105DA00001204042F4E7C046FFFFFF3F70B5060008 +:105DB0004368002B08D0B468214A9A1892001259FF +:105DC000002A01D1013BF4E74A68002A08D08D6817 +:105DD0001B481418A4006459002C01D1013AF4E7BF +:105DE0001800104324D0934219D81AD330680028E1 +:105DF00002DD0A68002A1DDB0A68002A01DD00288E +:105E00001ADB002B12D0B4680D4A9A189200A458DD +:105E10008D68AA5894420CD806D3013BF1E730684C +:105E200007E00868404204E0404202E0002000E051 +:105E3000002070BD0120FCE701204042F9E7C04688 +:105E4000FFFFFF3FF0B5DE4657464E464546E0B5FC +:105E500083B082468B46914642684B689A4246D14F +:105E600003685B1001252900194001915A46126808 +:105E7000521053401D400B002B404A4613604368AC +:105E8000984629E05B469B681A4F4744BF0052463C +:105E90009268D159D859FFF749F90126741B04407B +:105EA000019B1C4049460B681C430C60054351464E +:105EB0008B6859468A68D159D859FFF737F9731B4F +:105EC0000340019AB61A1E4034434B461C600543FA +:105ED00001235B429C46E0444346002BD2D1002084 +:105EE00003B0F0BCBB46B246A946A046F0BD0420B4 +:105EF0004042F5E7FFFFFF3F00B585B0CA178B189A +:105F00005340009300290ADB0123019301230293EC +:105F10006B46039301A9FFF749FF05B000BD0123BC +:105F20005B42F2E7F8B507001400904214D0B94282 +:105F300004D03800FFF762FD002843D101233B6005 +:105F40006668002E0BD0A1681F4BF3189B005B58AE +:105F5000002B04D1013EF4E70C000100E7E731001B +:105F60003800FFF7CBFC00282CD1A168BA680024C8 +:105F700000250EE008C99C461368E3181360A3428D +:105F8000A4416442634408C263459B415B421C19BF +:105F90000135B542EED306E01368E31808C2A34208 +:105FA000A44164420135002C0CD07B68AB42F3D88D +:105FB000691C3800FFF7A2FC002803D1BA68AB00C7 +:105FC000D218E9E7F8BDC046FFFFFF3FF0B5C6466F +:105FD00000B5060088461700546800E0013C002C1C +:105FE00006D0BD682B4BE3189B005B59002BF5D006 +:105FF00043465968A14247D33000FFF77FFC051E96 +:1060000013D143465B68A34213D873684246526873 +:1060100093421AD843469A68BB68B1682000FFF7DC +:106020008DF800281AD101233360280080BCB846BF +:10603000F0BDB068A20094466044424691681B1BC4 +:106040009A0061440CF027FFDFE7B0689100401828 +:106050009A1A920000210CF0D3FEDBE77168A1428E +:1060600009D9B368A2009B181A68002A03D1013A23 +:106070001A600134F2E7A14209D0B368A4001B19E9 +:106080001A68013A1A60CEE70A256D42CDE70A2563 +:106090006D42CAE7FFFFFF3FF8B506000C00150090 +:1060A0000F6813687B43002B18DA11002000FFF7FC +:1060B0003FFE002808DB2A0021003000FFF786FFA2 +:1060C000002810D137600EE0220029003000FFF7D1 +:1060D0007DFF002807D17F42376004E0FFF722FFF1 +:1060E000002800D13760F8BDF8B506000C00150097 +:1060F0000F6813687B43002B18DD11002000FFF7A9 +:1061000017FE002808DB2A0021003000FFF75EFFA1 +:10611000002800D13760F8BD220029003000FFF7C9 +:1061200055FF0028F7D17F423760F4E7FFF7FAFE0A +:106130000028F0D13760EEE710B584B0D4171319FA +:1061400063400093002A0ADB012301930123029399 +:106150006B46039301AAFFF7C7FF04B010BD0123EC +:106160005B42F2E7F0B5D6464F464646C0B586B02C +:1061700080460E00170003A8FFF7A7FB6846FFF74D +:10618000A4FBB0450DD0B84514D07568002D1AD0C9 +:10619000B268344BEB189B009B58002B13D1013D88 +:1061A000F4E7310003A8FFF729FC8246002828D134 +:1061B00003AEE8E739006846FFF720FC8246002876 +:1061C0001FD16F46E1E7002D0DD0002399467C6872 +:1061D000002C0BD0BA68234BE3189B009B58002B74 +:1061E00004D1013CF4E701239946F0E7002C01D1EA +:1061F0000123994629194046FFF780FB8246002873 +:106200000CD06846FFF767FB03A8FFF764FB504616 +:1062100006B0E0BCBA46B146A846F0BD00214046F3 +:10622000FFF752FC824600280DD0EAE7B1684346EA +:106230009A680C4BE0188000BB681B5812182800A5 +:10624000FEF798FF013C002CF0D14B46002B03D009 +:10625000012342461360D4E732683B685343424609 +:106260001360CEE7FFFFFF3FF0B5C64600B580469E +:106270000E0017004C6800E0013C002C06D0B56809 +:10628000134BE3189B005B59002BF5D0002F01D076 +:10629000002C08D100214046FFF716FC050028001D +:1062A00080BCB846F0BD611C4046FFF727FB051EC9 +:1062B000F5D131004046FFF7A1FB051EEFD1B168D3 +:1062C0007B1E424692682000FEF754FFE7E7C04677 +:1062D000FFFFFF3FF0B5DE4657464E464546E0B568 +:1062E00099B00700884616001D0000211800FFF72E +:1062F00003FE002800D1A7E115A8FFF7E6FA12A8CF +:10630000FFF7E3FA0FA8FFF7E0FA0CA8FFF7DDFAB2 +:106310000123099302330A9306AB0B932900300043 +:10632000FFF706FD002812DA002F05D00021380003 +:10633000FFF7CAFB041E10D14346002B05D03100E5 +:106340004046FFF75BFB041E07D1002415E0310037 +:1063500015A8FFF753FB041E17D015A8FFF7BBFACB +:1063600012A8FFF7B8FA0FA8FFF7B5FA0CA8FFF7C5 +:10637000B2FA0C2106A802F041FD200019B0F0BCD1 +:10638000BB46B246A946A046F0BD290012A8FFF7B9 +:1063900035FB041EE1D1012312931593716802317C +:1063A0000FA8FFF7ABFA041ED7D100210FA8FFF703 +:1063B0008BFB041ED1D1716802310CA8FFF79EFA45 +:1063C000041ECAD112A8FFF7C3FB1F2318401E28C2 +:1063D0000FD81B1A02939946190015A8FFF700FC65 +:1063E000041EBAD1494612A8FFF7FAFB041E02D0D8 +:1063F000B3E700230293169B5A1E0192139A934609 +:10640000013A03925A469B1A99465B019A46190033 +:1064100012A8FFF7E5FB041E9FD14C4612A915A850 +:10642000FFF7C4FC00280EDB119BA2009B181A6822 +:1064300001321A6012AA15A90800FFF755FE0028BC +:10644000ECD0040089E7514612A8FFF723FC041E94 +:1064500000D082E7B946039F0496AA46019BBB423F +:1064600000D8BEE0179B01998C001859149ABD0002 +:106470005259904230D3119ACB1B75498C466344D4 +:106480009B0001214942D150019B012B39D9179A18 +:1064900070498C4663449B00D2580B9B1A60019B49 +:1064A000002B30D0179A6A498C4663449B00D2581F +:1064B0000B9B5A60179A0B9B12599A60119B019A79 +:1064C000D21B0392624E94466644B6009B191A682A +:1064D00001321A605C462EE001995D4EB44661447B +:1064E0008E000596119E0199C91B03910399614481 +:1064F00089007618059959580023FFF76DF9306027 +:10650000C2E70022C9E7019AD2E73A000E9B1A605F +:10651000149A0E9B52595A60119B9A590CA9080063 +:10652000FFF7A2FE002800D08CE009A90CA8FFF715 +:106530003DFC002813DD119B9B191A68013A1A6073 +:1065400000210CA8FFF7C0FA002800D078E0002F47 +:10655000DBD0149A3F4BE3189B00D258D6E7A346F2 +:10656000119B9A5912A90CA8FFF77EFE041E00D0B9 +:10657000F3E6039D013D6D0129000CA8FFF730FBF8 +:10658000041E00D0E9E60CAA15A90800FFF7ACFD2F +:10659000041E00D0E1E6002115A8FFF7ADFC00289D +:1065A00003DB019B013B019358E712A90CA8FFF7FD +:1065B00025FA041E00D0D0E629000CA8FFF710FB36 +:1065C000041E00D0C9E60CAA15A90800FFF764FD57 +:1065D000041E00D0C1E6119B9B191A68013A1A608B +:1065E000DFE74F46049E5546002F0AD00FA94846C4 +:1065F000FFF704FA041E00D0AFE632682B6853435D +:106600003B604346002B00D1A7E6029915A8FFF78F +:1066100041FB041E00D0A0E63368159315A940463F +:10662000FFF7ECF9041E00D097E600214046FFF783 +:1066300063FC002800D090E60123424613608CE6FC +:1066400004008AE6040088E60C24644295E6C0460D +:10665000FFFFFF3FFEFFFF3F70B505000C00160077 +:1066600000211000FFF748FC002824DB3300220043 +:1066700029000020FFF72EFE041E0CD10021280067 +:10668000FFF73AFC002808DA320029002800FFF75B +:1066900003FD041EF2D0200070BD31002800FFF77A +:1066A00085FB0028F7DB320029002800FFF71CFDDE +:1066B000041EF2D0EFE70A246442ECE7F0B587B09D +:1066C00005000F00160003A8FFF7FFF86846FFF764 +:1066D000FCF8390003A8FFF791F9041E08D003A8BD +:1066E000FFF7F9F86846FFF7F6F8200007B0F0BDAD +:1066F00031006846FFF782F9041EF0D103A8FFF7C6 +:1067000010FA04006846FFF70CFA061E05D10021B6 +:106710006846FFF7F6F9002806D0B44200D82600F4 +:1067200001230093039312E039002800FFF766F974 +:106730000400D4E703AA69466846FFF747FC041E35 +:10674000CDD101216846FFF7A5FA041EC7D100216B +:1067500003A8FFF7D1FB002825D003A8FFF7E1F934 +:10676000010003A8FFF796FA041EB8D16846FFF7A8 +:10677000D8F901006846FFF78DFA041EAFD16946CB +:1067800003A8FFF713FB0028D4DB6A4603A908001F +:10679000FFF71CFC041EA2D1012103A8FFF77AFA1F +:1067A000041ED4D09BE731006846FFF719FA041E97 +:1067B00000D094E769462800FFF720F904008EE72F +:1067C000F0B5DE4657464E464546E0B589B0050071 +:1067D00089461600019301230793002306931000B6 +:1067E000FFF7B6F98046072343449A46DB089B46E9 +:1067F0004B46002B58DB49463000FFF77DFB002855 +:1068000055DD5346272B14D91E2703A8FFF75DF843 +:1068100071682800FFF79CF8041E0CD003A8FFF74E +:106820005AF8200009B0F0BCBB46B246A946A046C3 +:10683000F0BDFA27E9E7716803A8FFF75FF8041EC7 +:10684000ECD1494603A8FFF73FF9041EE6D1129B9D +:10685000019A59462800FFF701F8041EDED10723EC +:10686000514699434346C91A2800FFF713FA041EFC +:10687000D4D1013F002F14D007AA03A92800FFF7A5 +:10688000E1FA041ECAD106AA31002800FFF7DAFA9D +:10689000041EC3D1079B002BD9D1069B002BD6D059 +:1068A000BCE70E246442B9E704246442B9E7042437 +:1068B0006442B6E7F0B59DB005000F001600012157 +:1068C0001000FFF719FB002800DC39E116A8FEF7DD +:1068D000FCFF13A8FEF7F9FF10A8FEF7F6FF0DA8BE +:1068E000FEF7F3FF19A8FEF7F0FF0AA8FEF7EDFF89 +:1068F00007A8FEF7EAFF04A8FEF7E7FF01A8FEF7E6 +:10690000E4FF3200390019A8FFF7D8FE041E07D1B2 +:10691000012119A8FFF7F0FA00281FD00E246442C5 +:1069200016A8FEF7D8FF13A8FEF7D5FF10A8FEF7AC +:10693000D2FF0DA8FEF7CFFF19A8FEF7CCFF0AA8DB +:10694000FEF7C9FF07A8FEF7C6FF04A8FEF7C3FFBE +:1069500001A8FEF7C0FF20001DB0F0BD32003900D5 +:1069600016A8FFF779FE041EDAD116A913A8FFF7BF +:1069700045F8041ED4D131000AA8FFF73FF8041EE1 +:10698000CED1310007A8FFF739F8041EC8D1012184 +:1069900010A8FFF799F8041EC2D100210DA8FFF737 +:1069A00093F8041EBCD1002104A8FFF78DF8041E43 +:1069B000B6D1012101A8FFF787F8041E1CD0AFE76C +:1069C0000AAA10A90800FFF767FB041EA8D116AA9F +:1069D0000DA90800FFF788FB041EA1D1012110A812 +:1069E000FFF758F9041E00D09AE701210DA8FFF720 +:1069F00051F9041E00D093E7159B1B68DB072DD4CB +:106A0000012113A8FFF746F9041E00D088E7129B66 +:106A10001B68DB07D4D40F9B1B68DB07DED5CFE7F1 +:106A20000AAA04A90800FFF737FB041E00D077E785 +:106A300016AA01A90800FFF757FB041E00D06FE754 +:106A4000012104A8FFF726F9041E00D068E7012100 +:106A500001A8FFF71FF9041E00D061E7099B1B681E +:106A6000DB070FD4012107A8FFF714F9041E00D09B +:106A700056E7069B1B68DB07D2D4039B1B68DB072A +:106A8000DED5CDE707A913A8FFF790F900282BDB87 +:106A900007AA13A90800FFF727FB041E00D03FE751 +:106AA00004AA10A90800FFF71FFB041E00D037E757 +:106AB00001AA0DA90800FFF717FB041E00D02FE75D +:106AC000002113A8FFF718FA002895D1002104A887 +:106AD000FFF712FA00281FDA320004A90800FFF7B6 +:106AE000DBFA041EF2D01BE713AA07A90800FFF780 +:106AF000FBFA041E00D013E710AA04A90800FFF750 +:106B0000F3FA041E00D00BE70DAA01A90800FFF755 +:106B1000EBFA041ED4D003E7310004A8FFF746F9CE +:106B2000002807DB320004A90800FFF7DDFA041E85 +:106B3000F2D0F5E604A92800FEF760FF0400EFE6B6 +:106B40000424644207E7F8B506000F001100C46D85 +:106B50000734E4089C4200D91C0022003800FFF7EB +:106B600016F8051E10D1E400F16D8C4205D9611AAA +:106B70003800FFF78FF8051E06D14C36310038007B +:106B8000FFF714F9002801DA2800F8BD32003900B7 +:106B90003800FFF7A9FA0500F6E70120704700006A +:106BA000F0B59DB004000D001600059307A800F095 +:106BB000F7FF19A8FEF789FE16A8FEF786FE13A8B0 +:106BC000FEF783FE10A8FEF780FE2078FFF7E5FFB2 +:106BD000002800D182E0636D002B00D180E001210C +:106BE0002298FFF789F9002807DB27004C37390086 +:106BF0002298FFF7DBF8002812DB3A4D07A801F0D6 +:106C00000AF819A8FEF767FE16A8FEF764FE13A897 +:106C1000FEF761FE10A8FEF75EFE28001DB0F0BD75 +:106C200001212398FFF768F90028E6DB3900239853 +:106C3000FFF7BCF80028E0DA33002A0019A9200089 +:106C4000FFF781FF051ED9D13A00239916A8FFF757 +:106C500031FE051ED2D116AA19A913A8FFF782FA90 +:106C6000051ECBD13A0013A90800FFF7F5FC051E5D +:106C7000C4D116AA229910A8FFF774FA051EBDD137 +:106C80003A0010A90800FFF7E7FC051EB6D1230063 +:106C9000283300220292059A019210AA009213AAA8 +:106CA00007A9200001F0B4FC051EA7D107A801F038 +:106CB000B3FB002801D00B4DA0E73A0007A908005C +:106CC000FFF7CAFC051E00D098E7229907A8FFF736 +:106CD0006DF8002800D191E7024D8FE7024D9CE747 +:106CE000014D9AE700B2FFFF80B0FFFFF0B58DB015 +:106CF00004000D0016001F000B93129B9C46674476 +:106D000007A8FEF7E2FD04A8FEF7DFFD30230AAA7C +:106D100039000BA8FEF74BF9002816D10B9B0A9AF5 +:106D20009B18BB422FD107AA39000BA8FEF752F9D6 +:106D300000280DD0154BC41807A8FEF7CCFD04A8F9 +:106D4000FEF7C9FD20000DB0F0BD104BC418F3E7ED +:106D500004AA39000BA8FEF73DF90028EAD1230068 +:106D60008833139A029204AA019207AA0092320071 +:106D700029002000FFF714FF041EDDD10B9BBB424E +:106D8000DAD0034CD8E7034CD6E7C04680B0FFFF0B +:106D900000B4FFFF1AB0FFFF10B582B000240194C9 +:106DA000049C0094FFF7A2FF02B010BD10B500F0E4 +:106DB00025FF10BD10B5002801D000F071FF10BDF7 +:106DC000436F002B04D0836F002B03D0002070474B +:106DD0000020FCE70120FAE770B5C56DC0235B0019 +:106DE0009D4211D30524002901D00134E4B20029C9 +:106DF00003D0FFF7E5FF002802D1042C00D90424BA +:106E0000A54203D9200070BD0424ECE70224F9E771 +:106E100070B506000D0011001A002800FFF764F994 +:106E2000041E0FD12B68002B0CDA00212800FFF77D +:106E300063F8002806D0321D29002800FFF72CF93E +:106E4000041EEFD0200070BDF8B505000E004B6E9B +:106E5000002B1FD00368002B22DB2800FEF778FEF2 +:106E6000B36D5B00984220D8736E28009847041ECB +:106E70002BD12B68002B1ADA00212800FFF73CF8F1 +:106E8000002814D0321D29002800FFF705F9041E40 +:106E9000EFD01AE00A1D0100FFF7DEFB040014E04A +:106EA0000021FFF729F80028D7D0094C0DE0371D45 +:106EB00039002800FEF77AFF002806DB3A00290097 +:106EC0002800FFF783F8041EF1D02000F8BDC0466B +:106ED00080B0FFFF70B505000C0011001A00200003 +:106EE000FFF740F9002800D070BD29002000FFF70F +:106EF000ABFF0028F8D1024A136801331360F3E7AF +:106F000084630108F8B507000D0011002800FEF7A2 +:106F100067FE041E0DD13E1D31002800FEF746FF1E +:106F2000002806DB320029002800FFF74FF8041E76 +:106F3000F1D02000F8BD70B584B005000C0016003B +:106F400001A8FEF7C2FC0C34291D220001A8FFF79E +:106F5000CBF8051E05D001A8FEF7BDFC280004B043 +:106F600070BD00212000FEF7C7FF0200531E9A41AA +:106F7000324001A92000FEF77FFD0500EBE7F0B5E8 +:106F8000DE4657464E464546E0B583B001900F00B9 +:106F9000924698460CAB1B789B465B083F221A40F2 +:106FA0009146002501E00135EDB2454519D2EC00CE +:106FB0006419A40054444B46EE1A73425E41F6B283 +:106FC000320021003800FEF757FD00280FD12100C4 +:106FD0000C3138000C303200FEF74EFD0028E2D0B4 +:106FE00005E05B46DA0939000198FFF7A4FF03B01A +:106FF000F0BCBB46B246A946A046F0BDF8B5CE46A9 +:10700000474680B506000F00904699464A1C00216D +:107010000BF0F6FE00250EE03900614349194846A1 +:10702000FEF76FFD0300A340705D184370550134F7 +:10703000A045F1D80135BD4201D20024F8E7002374 +:1070400001201CE03518315C1A000A409446594072 +:10705000297001234B4001221A409146441E335DA2 +:107060005343DAB290460B406246134342465140C6 +:1070700029704A46D201315D0A4332550130B84287 +:10708000E0D9C0BCB946B046F8BD0000F0B589B043 +:1070900007000E00009201930EAB1D7805A8FEF7C5 +:1070A00014FC02A8FEF711FC4C3700213800FEF753 +:1070B00028FD01282CD100213000FEF722FD43429B +:1070C00058410F9C2070310005A8FEF797FC041E64 +:1070D00008D002A8FEF7FFFB05A8FEF7FCFB200086 +:1070E00009B0F0BD3200390002A8FEF7FDFF041E12 +:1070F000EFD10F9C227802A905A8FEF7BDFC041E63 +:10710000E7D105AB2A0001990098FFF777FFE0E788 +:10711000004CE4E780B0FFFFF0B587B006000F0039 +:1071200000213800FEF7E8FE00282CDB3C000C3480 +:1071300000212000FEF7E0FE002824DB351D290099 +:107140003800FEF733FE00281DDA29002000FEF784 +:107150002DFE002817DA03A8FEF7B7FB6846FEF7F6 +:10716000B4FB2200210003A8FEF7FCFF041E0CD094 +:10717000002C15D003A8FEF7AEFB6846FEF7ABFB6C +:10718000200007B0F0BD444CFAE7310003A8FFF738 +:107190005BFE041EECD1414A136801331360E7E73C +:1071A0003A0039006846FEF7DDFF041E45D0002C8A +:1071B000E0D1B369002B4BD03200103269466846EB +:1071C000FEF76AFF041E0DD1351D29006846FEF743 +:1071D000EDFD002806DB2A0069466846FEF7F6FE4C +:1071E000041EF1D0002CC5D13A0069466846FEF76E +:1071F000B9FF041E45D0002CBCD132001C326946B8 +:107200006846FEF749FF041E0DD1351D290068466A +:10721000FEF7CCFD002806DB2A0069466846FEF72B +:10722000D5FE041EF1D0002CA4D1694603A8FEF7B8 +:10723000BDFD00289ED0184C9CE731006846FFF742 +:1072400003FE041EB3D1154A136801331360AEE781 +:10725000032269466846FEF76FFF041E00D089E7E7 +:10726000009B002BC0DA00216846FEF745FE00288F +:10727000BAD02A0069466846FEF70EFF041EEFD01A +:1072800078E731006846FFF7DFFD041EB3D1034AFB +:10729000136801331360AEE780B3FFFF8463010816 +:1072A000F0B587B005000E000F0018370021380038 +:1072B000FEF722FE041E02D1200007B0F0BD03A895 +:1072C000FEF703FB6846FEF700FB2A1D390003A802 +:1072D000FFF7F0FA041E06D003A8FEF7FCFA684692 +:1072E000FEF7F9FAE8E703AA11006846FEF73AFF4D +:1072F000041E23D0002CEFD16A4631003000FEF787 +:1073000031FF041E25D0002CE6D10C366A46310030 +:107310003000FEF727FF041E26D0002CDCD103AA84 +:1073200031003000FEF71EFF041E28D0002CD3D100 +:1073300001213800FEF7C8FB0400CDE729006846AC +:10734000FFF782FD041ED5D1124A13680133136082 +:10735000D0E729003000FFF777FD041ED3D10D4A96 +:10736000136801331360CEE729003000FFF76CFD8E +:10737000041ED2D1074A136801331360CDE72900F8 +:107380003000FFF761FD041ED0D1024A13680133BB +:107390001360CBE784630108F0B5DE4657464E46DE +:1073A0004546E0B58BB0814688461600012A08D9CB +:1073B0000C2110000AF08CFF051E00D120E10024F2 +:1073C0000BE00968FFF76CFF040011E16000001991 +:1073D00080002818FEF779FA0134B442F6D307A8E2 +:1073E000FEF773FA04A8FEF770FA01A8FEF76DFA2B +:1073F0004346196818312800FEF700FB041E36D1F9 +:10740000012702E0002C32D10137B7421AD27900AD +:10741000C91989006B189A460C396918BB00424695 +:107420009A5818325046FEF79DFE041EEAD149468E +:107430005046FFF709FD041EE4D1724A1368013378 +:107440001360DFE77100891989000C3969184B4610 +:107450001A1D07A8FFF72EFA041E08D1731E9A46BC +:1074600068E007A904A8FEF7C9FA041E17D007A808 +:10747000FEF731FA04A8FEF72EFA01A8FEF72BFA60 +:107480000027B0E0494604A8FFF7DEFC041E5FD1E8 +:107490005C4A1368013313605AE0002CE7D104AA58 +:1074A000110001A8FEF75EFE041E69D0002CDED19B +:1074B00053469F0047443B689B4601AA19001800A9 +:1074C000FEF750FE041E66D0002CD0D13B680C2283 +:1074D00093469B4401AA59465846FEF743FE041EB4 +:1074E00064D0002CC3D13B680C2293469B4404AA71 +:1074F00059465846FEF736FE041E62D0002CB6D11F +:1075000038684B469968FEF73FFA041EAFD13868D9 +:107510004B4699680C30FEF737FA041EA7D138683D +:107520001830FEF7D8F95346002BA0D001235B4258 +:107530009C46E2445346002B93D05A00524492009A +:107540000C3AAA1807A904A8FEF70CFE041E99D04D +:10755000002C8CD153469B0042469A58183207A9FA +:107560000800FEF7FFFD041E97D1494607A8FFF764 +:107570006BFC041E91D1234A1368013313608CE71E +:10758000494601A8FFF760FC041E8FD11D4A13680D +:10759000013313608AE749465846FFF755FC041E3D +:1075A00092D1184A1368013313608DE74946584653 +:1075B000FFF74AFC041E94D1124A1368013313608A +:1075C0008FE749465846FFF73FFC041E96D10D4A07 +:1075D00013680133136091E77800C0198000281800 +:1075E000FEF779F90137B742F6D328000AF0F6FF23 +:1075F00020000BB0F0BCBB46B246A946A046F0BD89 +:10760000014CF5E78463010880B2FFFFF0B589B053 +:1076100006000F0014001D0005A8FEF756F902A889 +:10762000FEF753F9321D00952300022105A8FFF74C +:10763000C7F8041E0CD005A8FEF74DF902A8FEF706 +:107640004AF923000E3300D167E0200009B0F0BDF5 +:107650003D00183505AA29002800FEF783FD041E09 +:107660002FD0002CE7D105AA110002A8FEF77AFD61 +:10767000041E31D0002CDED102AA39003800FEF7FA +:1076800071FD041E33D0002CD5D105AA02A9080033 +:10769000FEF768FD041E35D0002CCCD10C3702AAB1 +:1076A00039003800FEF75EFD041EC4D131003800F9 +:1076B000FFF7CAFB041EBED1194A136801331360D9 +:1076C000B9E731002800FFF7BFFB041EC9D1144AF7 +:1076D000136801331360C4E7310002A8FFF7B4FB5D +:1076E000041EC7D10E4A136801331360C2E731008C +:1076F0003800FFF7A9FB041EC5D1094A13680133FE +:107700001360C0E7310002A8FFF79EFB041EC3D13F +:10771000034A136801331360BEE7024C95E7C04685 +:107720008463010800B3FFFFF0B5CE46474680B53D +:107730008FB0050001911700604A13680133136090 +:107740000BA8FEF7C2F808A8FEF7BFF805A8FEF7D9 +:10775000BCF802A8FEF7B9F8AB69002B1CD03A00C0 +:10776000390008A8FEF7FEFC041E00D183E0002CBF +:1077700000D18CE00BA8FEF7AEF808A8FEF7ABF836 +:1077800005A8FEF7A8F802A8FEF7A5F820000FB09C +:10779000C0BCB946B046F0BD390018310A0008A88F +:1077A000FEF7E0FC041E50D0002CE3D108AA3900FB +:1077B00005A8FEF771FC041E0DD12E1D310005A891 +:1077C000FEF7F4FA002806DB320005A90800FEF7F0 +:1077D000FDFB041EF1D0002CCCD108AA390002A870 +:1077E000FEF782FC041E0FD1029B002B0CDA002155 +:1077F00002A8FEF781FB002806D02A1D02A9080076 +:10780000FEF74AFC041EEFD0002CB3D102AA05A952 +:1078100008A8FEF7A7FC041E22D0002CAAD1032240 +:1078200008A90BA8FEF720FD041EA3D12C1D2100E2 +:107830000BA8FEF7BBFA00284EDB22000BA90800BC +:10784000FEF7C4FB041EF1D094E7290008A8FFF757 +:10785000FBFA041EA8D11A4A136801331360A3E788 +:10786000290008A8FFF7F0FA041ED6D1144A1368BD +:1078700001331360D1E7290008A8FFF7E5FA041ED9 +:1078800000D074E70E4A1368013313606FE70322D8 +:1078900008A90BA8FEF7E8FC041E00D06AE72C1D1F +:1078A00021000BA8FEF782FA00280BDB22000BA9AF +:1078B0000800FEF78BFB041EF1D05BE78063010834 +:1078C0008463010810239846A84400214046FEF72F +:1078D00013FB002800D0CBE00C239946B9444A465C +:1078E000494605A8FEF73EFC041E00D119E1002C14 +:1078F00000D03FE7012105A8FEF772F9041E0DD163 +:107900002E1D310005A8FEF751FA002806DB3200D3 +:1079100005A90800FEF75AFB041EF1D0002C00D088 +:1079200028E705AA390008A8FEF71CFC041E00D1B0 +:1079300003E1002C00D01DE7012108A8FEF750F953 +:10794000041E0ED12B1D9846190008A8FEF72EFA2A +:10795000002806DB424608A90800FEF737FB041E94 +:10796000F0D0002C00D005E705AA110002A8FEF710 +:10797000F9FB041E00D1ECE0002C00D0FAE6012156 +:1079800002A8FEF72DF9041E0ED12B1D98461900F2 +:1079900002A8FEF70BFA002806DB424602A90800FF +:1079A000FEF714FB041EF0D0002C00D0E2E60BAA78 +:1079B000110005A8FEF7D6FB041E00D1D5E0002C6F +:1079C00000D0D7E608AB05AA11002800FFF720FA7F +:1079D000041E00D0CEE608AB05AA11002800FFF770 +:1079E00017FA041E00D0C5E605AB08AA110028004E +:1079F000FFF70EFA041E00D0BCE60BAB08AA11007C +:107A00002800FFF767FA041E00D0B3E602AB08AA0D +:107A100011002800FFF7FCF9041E00D0AAE63B0085 +:107A200018334A4602A92800FFF754FA041E00D072 +:107A3000A0E6012202A92800FFF764FA041E00D084 +:107A400098E605A9019D2800FDF7D8FF041E00D087 +:107A500090E628000C3008A9FDF7D0FF041E00D0E6 +:107A600088E62800183002A9FDF7C8FF040081E667 +:107A7000390018310A0008A8FEF774FB041E2FD045 +:107A8000002C00D076E608AA110005A8FEF76AFBD4 +:107A9000041E30D0002C00D06CE6424605A908A890 +:107AA000FEF760FB041E31D0002C00D062E608AA6D +:107AB0000BA90800FEF7F0FA041E0DD12E1D3100AF +:107AC0000BA8FEF773F9002806DB32000BA90800AB +:107AD000FEF77CFA041EF1D0002C00D1FCE649E64A +:107AE000290008A8FFF7B0F9041EC9D1254A136878 +:107AF00001331360C4E7290005A8FFF7A5F9041EA8 +:107B0000C8D1204A136801331360C3E7290008A8CD +:107B1000FFF79AF9041EC7D11A4A1368013313609C +:107B2000C2E7290005A8FFF78FF9041E00D0DEE6A2 +:107B3000144A136801331360D9E6290008A8FFF737 +:107B400083F9041E00D0F4E60E4A13680133136073 +:107B5000EFE6290002A8FFF777F9041E00D00BE733 +:107B6000084A13680133136006E7290005A8FFF7E8 +:107B70006BF9041E00D022E7024A13680133136038 +:107B80001DE7C04684630108036B002B06D0C36B5E +:107B9000002B01D0012070470220FCE70020FAE70B +:107BA00010B50400FDF791FE20000C30FDF78DFEAE +:107BB00020001830FDF789FE10BD70B504000025C7 +:107BC00005700430FDF781FE20001030FDF77DFECA +:107BD00020001C30FDF779FE20002830FFF7E0FF81 +:107BE00020004C30FDF771FEA565E56525666566EC +:107BF000A566E56625676567A56770BD10B50400D5 +:107C0000FFF7DBFF20007C30FDF75FFE20008830AF +:107C1000FFF7C6FF10BD10B5041E09D0FDF75BFECF +:107C200020000C30FDF757FE20001830FDF753FE02 +:107C300010BD70B5041E32D0036E012B09D1200097 +:107C4000FFF7BEF8002826D1636F002B23D0002554 +:107C50001BE00430FDF73FFE20001030FDF73BFE37 +:107C600020001C30FDF737FE20002830FFF7D3FF3F +:107C700020004C30FDF72FFEE1E7606FEB005B1951 +:107C80009B00C018FFF7C7FF0135A36FAB42F4D8C4 +:107C9000606F0AF0A3FC7C21200001F0AFF870BDFA +:107CA00010B5041E09D0FFF7C4FF20007C30FDF79B +:107CB00012FE20008830FFF7AEFF10BD70B5040043 +:107CC0000D00FDF79BFE002800D070BD29000C318F +:107CD00020000C30FDF792FE0028F6D12900183163 +:107CE00020001830FDF78AFEEFE710B504000121EF +:107CF000FDF7EAFE002800D010BD20000C30012165 +:107D0000FDF7E2FE0028F7D1200018300021FDF732 +:107D1000DBFEF1E7F0B5C64600B598B080460191AC +:107D200017001D007E4A1368013313603E001836A9 +:107D300000213000FEF7E0F800284CD02B6A002B21 +:107D400006D0280018300021FEF7D6F8002848D0C9 +:107D50002B6A002B07D0280018300121FEF7CCF841 +:107D6000002800D093E115A8FDF7AFFD12A8FDF79C +:107D7000ACFD0FA8FDF7A9FD0CA8FDF7A6FD09A80D +:107D8000FDF7A3FD06A8FDF7A0FD03A8FDF79DFDE7 +:107D90003200310015A8FEF7E5F9041E27D0002CAB +:107DA00030D015A8FDF797FD12A8FDF794FD0FA898 +:107DB000FDF791FD0CA8FDF78EFD09A8FDF78BFDE1 +:107DC00006A8FDF788FD03A8FDF785FD200018B083 +:107DD00080BCB846F0BD29000198FFF76FFF040092 +:107DE000F4E739000198FFF769FF0400EEE7414628 +:107DF00015A8FFF729F8041ED1D14A4A13680133A8 +:107E00001360CCE7320015A912A8FEF7ABF9041EE7 +:107E10005FD0002CC5D12A0015A90800FEF7A2F9F1 +:107E2000041E61D0002CBCD12A000C3212A908001B +:107E3000FEF798F9041E62D0002CB2D13A0015A9C1 +:107E40000800FEF751F9041E10D1159B002B0DDA26 +:107E5000002115A8FEF750F8002807D043461A1D48 +:107E600015A90800FEF718F9041EEED0002C00D06A +:107E700097E73D000C352A0012A90800FEF734F9F7 +:107E8000041E10D1129B002B0DDA002112A8FEF760 +:107E900033F8002807D043461A1D12A90800FEF740 +:107EA000FBF8041EEED0002C00D07AE7002115A8C4 +:107EB000FEF722F8002837D1002112A8FEF71CF89F +:107EC000002827D13A0001994046FFF72DFC040015 +:107ED00067E7414612A8FEF7B7FF041E99D1114A81 +:107EE00013680133136094E7414615A8FEF7ACFF11 +:107EF000041E97D10B4A13680133136092E7414681 +:107F000012A8FEF7A1FF041E96D1064A136801339A +:107F1000136091E70198FFF7E8FE040041E7C046CF +:107F20007C6301088463010815AA310003A8FEF7E9 +:107F300019F9041E00D186E0002C00D031E715AA03 +:107F400011000FA8FEF70EF9041E00D187E0002CE7 +:107F500000D026E715AA0FA90CA8FEF703F9041E06 +:107F600000D188E0002C00D01BE73B000FAA1100D5 +:107F70004046FEF7AFFF041E00D012E70FA915A878 +:107F8000FDF73CFD041E00D00BE7012215A9404679 +:107F9000FEF7B8FF041E00D003E712AB1A0009A9D0 +:107FA0004046FEF797FF041E00D0FAE615AB09AA7B +:107FB00011004046FEF72CFF041E00D0F1E60CAB8A +:107FC00009AA11004046FEF723FF041E00D0E8E690 +:107FD00009AB0FAA11004046FEF71AFF041E00D09D +:107FE000DFE612AB0FAA11004046FEF773FF041E36 +:107FF00000D0D6E62B000CAA11004046FEF76AFF1F +:10800000041E00D0CDE60CAB0FAA06A94046FEF731 +:10801000FFFE041E00D0C4E609A9019D2800FDF75B +:10802000EDFC041E00D0BCE628000C3006A9FDF7CC +:10803000E5FC041E00D0B4E62800183003A9FDF7C3 +:10804000DDFC0400ADE6414603A8FEF7FDFE041E7C +:1080500000D071E70F4A1368013313606CE74146A3 +:108060000FA8FEF7F1FE041E00D070E7094A13685E +:10807000013313606BE741460CA8FEF7E5FE041ED2 +:1080800000D06FE7034A1368013313606AE7024CBC +:108090009CE6C0468463010880B0FFFFF0B5DE4671 +:1080A00057464E464546E0B58BB081460E0011005E +:1080B000149F013B9A460123524693400193DBB241 +:1080C0009B463000FFF7FAFD00285DD1002507E050 +:1080D000220021004846FFF727FB002854D1013534 +:1080E00053467B43AB421FD93900280009F002FFF9 +:1080F00001228240D3B29846FF231340DC00E418EB +:10810000A40034193900280009F07AFF0029DFD1D2 +:1081100043465B08D900C918890071182000FFF791 +:10812000CDFD0028D4D02FE00022012109E0CB00B2 +:108130005B189B00F318940003A823504900C9B2B0 +:1081400001325945F3D303A94846FFF725F9002822 +:108150001AD101275F4521D23D003C002300013C9C +:10816000002B18D02B19D900C9188900E200121968 +:108170009200B218EB005B199B00F3187118484687 +:10818000FFF7C8FD0028E9D00BB0F0BCBB46B246F3 +:10819000A946A046F0BD7F00FFB2DBE7002207E062 +:1081A000CB005B189B00F318920003A813500A0041 +:1081B000511CFF23019803409942F1D303A948467B +:1081C000FFF7EAF8E0E7F0B5D6464F4680B58DB048 +:1081D00006000D0091469A46159F03A8FFF7E0FCA4 +:1081E000149BDB5D009353464A4629003000FEF79E +:1081F000C6FE041E08D003A8FFF70DFD20000DB039 +:10820000C0BCBA46B146F0BD280018300121FDF7C8 +:108210005BFC041EEFD1169B002B07D0179B169A10 +:1082200029003000FFF7F2F9041EE4D1002FE2D05C +:10823000013F2A0029003000FFF776FA041EDAD148 +:10824000149BDB5D009353464A4603A93000FEF7BA +:1082500096FE041ECFD103AB2A0029003000FFF7A1 +:1082600059FD041EE2D0C6E7F0B5A9B004000E0027 +:1082700011001D002EAB1F782FAB1B789F226A4484 +:1082800001920093309B07AAFEF700FF002801D05F +:1082900029B0F0BD339B0493329B0393319B02932F +:1082A000309B019307AB00933B002A003100200074 +:1082B000FFF789FF0028EBD19F236B441A78310028 +:1082C0002000FEF738FE0028E2D1319B002B07D0BA +:1082D000329B319A31002000FFF798F90028D7D15E +:1082E00031002000FEF7DCFFD2E70000F0B5DE46EB +:1082F00057464E464546E0B58BB0070008910992B7 +:108300009A460100343118000C30FDF74FFD041E71 +:1083100032D00024E3B2984619003800FEF75CFD25 +:1083200081460300013B01249C40E6B2F86D4844BD +:108330000138494609F0DEFD07904346002B24D062 +:108340007D6F002D21D0169B0593159B0493149BE4 +:108350000393079B02934B46019300962B00099AC7 +:1083600008993800FFF780FF04007B6FAB4243D0D1 +:10837000002D41D000273AE0390028315046FDF762 +:1083800015FD0028C6D10134C4E7FF2323409B46D6 +:108390002421180009F09CFF051E1ED0002407E0D0 +:1083A000E000001980002818FFF7FAFB0134E4B25E +:1083B000B442F5D3169B0193079B00934B4652465C +:1083C00029003800FFF76AFE041ECED14346002B79 +:1083D000B9D07D675B46BB67B5E70E4CC5E7F800D3 +:1083E000C01980002818FFF716FC0137FFB2B7420A +:1083F000F5D328000AF0F2F8002C07D120000BB0CA +:10840000F0BCBB46B246A946A046F0BD0898FFF7AF +:1084100002FCF3E780B2FFFF10B518300021FDF732 +:108420006BFD4342584110BDF0B5C64600B505008E +:108430000F0014001E1E31D00430FDF7A2FB804651 +:108440002800FFF7A1FB01282AD12378002B07D1B0 +:10845000012E27D13800FFF748FC80BCB846F0BD9C +:10846000042B21D143465B000133B3421ED1611C72 +:1084700042463800FDF78BFB0028EED14346591CDD +:10848000611838000C304246FDF781FB0028E4D12A +:10849000380018300121FDF717FBDEE70448DCE760 +:1084A0000448DAE70248D8E70248D6E70048D4E7AC +:1084B00080B0FFFF80B1FFFF70B505000C00080021 +:1084C00018300121FDF718FD002809D12800FFF719 +:1084D0005BFB012806D121002800FEF71DFE70BDC0 +:1084E0000148FCE70148FAE780B3FFFF80B0FFFFD7 +:1084F00070B504000D00FFF747FB012810D10121E2 +:108500002800FDF7F9FC002808DB21004C31280089 +:10851000FDF74CFC002801DA002070BD0148FCE7A3 +:108520000148FAE780B3FFFF80B0FFFFF0B585B0E8 +:1085300005000C0016001F001100FFF7D9FF0028EE +:1085400001D005B0F0BD39002800FFF7B5FF0028C5 +:10855000F7D12800FFF718FB01280CD10C9B0293E0 +:108560000B9B01930A9B00933B00320021002800E3 +:10857000FFF7BCFEE5E70148E3E7C04680B0FFFF38 +:10858000F0B585B006000D0014001F00002110009A +:10859000FDF7B2FC002806D12800FFF7A6FB040077 +:1085A000200005B0F0BD01212000FDF7A5FC00284A +:1085B00005D139002800FFF781FB0400F0E7012115 +:1085C00049422000FDF798FC002813D1390028000B +:1085D000FFF774FB041EE3D10C3500212800FDF7E2 +:1085E0008BFC0028DCD0311D2A002800FDF77CFD23 +:1085F0000400D5E70A9B02930023019300933B00FC +:10860000220029003000FFF791FF0400C8E70000B6 +:10861000F0B58DB005000E0014001F00FFF7B4FA8E +:1086200001282AD103A8FFF7BBFA149B00933B0053 +:10863000220003A92800FFF7A3FF041E05D003A80A +:10864000FFF7E9FA20000DB0F0BD149B0093139BD7 +:10865000129A31002800FFF793FF041EEFD1330078 +:1086600003AA31002800FFF755FB041EE7D13100B3 +:108670002800FEF715FE0400E1E7014CE2E7C046E2 +:1086800080B1FFFFF0B5002406E08368A5005B1908 +:108690001D68ED431D6001345709A742F5D200243F +:1086A0008368A6009B191D6801351D60836801342D +:1086B0009D59002D01D1A742F2D2012464420460E9 +:1086C000D208032082439B181A68521A1A60F0BD20 +:1086D000F8B504001121FDF711F9051E00D0F2E1F3 +:1086E000A2681168136AC91899429B415842536A9B +:1086F000591899429B415B421B18D66AB14280418E +:1087000040421B1ADBB2891B166BB14280414042CA +:108710001B1ADBB2891B566BB142804140421B1AC7 +:10872000DBB2891B966BB142804140421B1A58B2A2 +:10873000891B1160A26851681B0600D593E10918D6 +:10874000814280414642506A411881428041404204 +:108750008019C0B2936A591899429B415B421B1819 +:10876000DBB2166BB142804140421B1ADBB2891B5F +:10877000566BB142804140421B1ADBB2891B966B9B +:10878000B142804140421B1ADBB2891BD66BB14219 +:10879000804140421B1A58B2891B5160A2689168FF +:1087A0001B0600D564E10918814280414642906A67 +:1087B00041188142804140428019C0B2D36A5918A1 +:1087C00099429B415B421B18DBB2566BB142804120 +:1087D00040421B1ADBB2891B966BB142804140427A +:1087E0001B1ADBB2891BD66BB142804140421B1A77 +:1087F00058B2891B9160A168CA681B0600D53CE18C +:108800001318834280414742C86AC3188342B64165 +:108810007642F619F6B2C31883428041404280196D +:10882000C0B20A6BD3189342B64176423618F6B2FC +:10883000D3189342804140428019C0B24A6BD3188A +:108840009342924152421218D2B2CE6BB34280414F +:108850004042121AD2B29B1B0E6AB3428041404280 +:10886000121AD2B29B1B4E6AB34280414042121A86 +:1088700050B29B1BCB60A1680B69120600D501E1C9 +:108880001A18824280414742086B82188242B641E0 +:108890007642F619F6B2821882428041404280192F +:1088A000C0B24B6B9A189A42B64176423618F6B26D +:1088B0009A189A42804140428019C0B28B6B9A1834 +:1088C0009A429B415B421B18DBB24E6AB242804126 +:1088D00040421B1ADBB2921B8E6AB2428041404278 +:1088E0001B1A58B2921B0A61A1684A691B0600D57F +:1088F000CDE01218824280414742486B8218824282 +:10890000B6417642F619F6B2821882428041404260 +:108910008019C0B28B6B9A189A42B64176423618CB +:10892000F6B29A189A42804140428019C0B2CB6B8D +:108930009E189E42924152421218D2B2886A8642D2 +:108940009B415B42D21AD2B2361ACF6ABE429B41D9 +:108950005B42D21A50B2F61B4E61A1688B691206B7 +:1089600000D599E01B18834280414642886BC318AA +:108970008342924152429219D2B2C3188342BF41FC +:108980007F42BF18FFB2CA6BD3189342B6417642FA +:10899000F619F6B2D3189342924152429219D2B2CA +:1089A000C3188342804140428018C0B24A6BD3183A +:1089B0009342924152421218D2B20E6AB34280419F +:1089C0004042121AD2B29B1B4F6ABB4280414042C6 +:1089D000121A56B2DB1B8B61A068C369120660D401 +:1089E0009B19B342B6417242C66BF318B342894138 +:1089F00049428918C9B2F318B342924152425218FF +:108A0000D2B2F318B342B6417642B618F6B2016A52 +:108A1000CB188B42894149428919C9B2866AB3424F +:108A200092415242891AC9B29B1BC66AB342924113 +:108A30005242891AC9B29B1B066BB3429241524201 +:108A4000891AC9B29B1B466BB34292415242891AA2 +:108A500049B29B1BC3610B1C002927DB5BB2A268D8 +:108A60001362082329E04642B142B64141186AE642 +:108A70004642B142B641411899E64742BA42BF4127 +:108A80008318C1E64742BB42BF41C218FCE64742D9 +:108A9000BA42BF41821830E74642B342B641C318DA +:108AA00064E7724293429241F3189DE70023D5E7B1 +:108AB000A2689800121800201060013362689A4280 +:108AC000F6D8002901DB2800F8BD802252002000E2 +:108AD000FFF7D8FDF7E7F8B504000F21FCF70EFF0C +:108AE000061E00D0E2E0A1680B68C869834292418B +:108AF000D2B21B1ACD6AAB4280414042121A50B228 +:108B00005B1B0B60A1684B68120600D5A3E01B1825 +:108B10008342804142420D6AAB4280414042121A78 +:108B2000D2B25B1B0D6BAB4280414042121A50B275 +:108B30005B1B4B60A1688B68120600D590E01B1888 +:108B40008342804142424D6AAB4280414042121A08 +:108B5000D2B25B1B4D6BAB4280414042121A50B205 +:108B60005B1B8B60A168CB6812067ED41B18834206 +:108B700080414542886A834292415242AD1AEDB229 +:108B80001B1AC869C3188342804140424019C0B2D1 +:108B9000CA6AD318934292415242121850B2CB6023 +:108BA000A1680B69120665D41B18834280414542B7 +:108BB000C86A834292415242AD1AEDB21B1A086A4A +:108BC000C3188342804140424019C0B20A6BD31897 +:108BD000934292415242121850B20B61A1684B6904 +:108BE00012064CD41B18834280414542086B8342D5 +:108BF00092415242AD1AEDB21B1A486AC318834221 +:108C0000804140424019C0B24A6BD318934292410E +:108C10005242121857B24B61A0688369120633D4CE +:108C2000DB19BB42BF417D42416B8B4292415242B4 +:108C3000AD1AEDB25B1A816ACB188B428941494269 +:108C4000491949B283610B1C002922DB5BB2A2687F +:108C5000D361072324E0424293429241C3185AE76A +:108C6000424293429241C3186DE74542AB42AD4147 +:108C7000C3187FE74542AB42AD41C31898E7454270 +:108C8000AB42AD41C318B1E77D42AB42AD41FB18E9 +:108C9000CAE70023DAE7A2689D0052190025156093 +:108CA000013362689A42F6D8002901DB3000F8BD32 +:108CB000E0222000FFF7E6FCF8E7000070B50400B2 +:108CC0000430012565609208A260E160002B05D0A8 +:108CD00001222261049A92086261A3610125E56183 +:108CE000069B9B082362059B636226004C36E56465 +:108CF0000C9B9B0823650B9B6365A562089B9B08E7 +:108D0000E362079B236365630A9B9B08A363099B3C +:108D1000E36325646564084BA364FCF719FFA06551 +:108D20003000FCF715FFE06525660D9B63670023A7 +:108D3000A367002070BDC046E001000830B58BB0CD +:108D400004000D00FEF775FF2570022D05D0032DE0 +:108D50001DD0002323701A4817E01A4B63661A4986 +:108D60001A4B09931C230893194A07920693194A30 +:108D700005920493184A03920293184B019300231F +:108D8000009320222000FFF799FF0BB030BD144B59 +:108D900063661449144B099320230893134A0792DE +:108DA0000693134A05920493124A03920293124BBC +:108DB00001930023009320222000FFF77FFFE4E7C8 +:108DC00080B1FFFFD78A0010D44701102441011061 +:108DD000B84701109C4701108047011064470110FB +:108DE000D1860010B44E0110F4470110944E0110CA +:108DF000744E0110544E0110344E011010B50A1E6D +:108E000003D0024B1B680021984710BDE401000805 +:108E100010B56C22002109F0F3FF10BD00230360A0 +:108E20004360002912D1124B8360124BC360124B76 +:108E30000361124B4361124B8361124BC361124BAE +:108E40000362124B4362816600207047104B8360BF +:108E5000104BC360104B0361104B4361104B836197 +:108E6000104BC361104B0362104B4362EBE7C046EB +:108E700067E6096A85AE67BB72F36E3C3AF54FA5AB +:108E80007F520E518C68059BABD9831F19CDE05BD7 +:108E9000D89E05C107D57C3617DD703039590EF7DD +:108EA000310BC0FF11155868A78FF964A44FFABEA3 +:108EB000F0B5DE4657464E464546E0B5DBB00F906E +:108EC00000230400072B09D89A1C920010591A009D +:108ED0004232920010AD50510133F3E7002010E010 +:108EE00082008B5C1B068A185478240423439478F0 +:108EF00024022343D2781343821C920010AC1351F6 +:108F000001300F28ECD90023009376E210AA9223B7 +:108F10005B00D25810A88C21490041580D00062052 +:108F2000C5412B000D000B24E5416B4008001925BD +:108F3000E8414340D21810AE0835FF3573598E27EB +:108F40007F00F659B2463000584008405840121889 +:108F5000FE48009FBC008446205812180237029732 +:108F6000BD0010AE0595A8591218109284277F00F5 +:108F7000F4592000073FFF3FF84127000D25EC4141 +:108F8000250045403C001620C4416540862464000D +:108F90003659B1463000384010AE04343659B04628 +:108FA0004C4604973C43270037403843281811901B +:108FB00010AE8A256D002C007559551935511218BF +:108FC000103432512C000620C441270028000B2405 +:108FD000E04178402E001927FE417040181856468F +:108FE0004E4033002B4056467340C318009E701C01 +:108FF000800067460397C0591B18F01C8600B446D2 +:1090000010AE604680591818019010901600022783 +:10901000FE41300016000B37FE4137004740160076 +:109020001620C64177401600049B1E4030001E00EB +:1090300016434B461E40304338181190019FBB46E3 +:10904000D84410AE88277F004346F35183445846E6 +:1090500090235B000190F05046460620C641370041 +:1090600046462300E6413000784046461927FE4137 +:10907000704050440E006E403700464637404F4027 +:10908000C7190398059C20583818029F0237BF0063 +:1090900010AEBF59C01910905E460227FE41B2467D +:1090A0005E460D24E6413700564677405E46093459 +:1090B000E6417E40B2465C465E46164037001600EA +:1090C0002643049C26403743BA44564611964E46E2 +:1090D000371810AE862464003751504404008E20A7 +:1090E0004000029434503E000624E641B2463E0061 +:1090F000DE41B146564648464640B1463E0013342E +:10910000E641B2464E4650464640B1468944414645 +:109110006940394069404944039866463658B44628 +:109120006144009B5E1DB600B24610AE53469E5988 +:10913000B44661441091029B1E00173CE641B446C0 +:109140001E000B34E641B14666464C466640B146C9 +:109150001E001624E641B4464E4664466640B146BB +:109160001C001E00019B1E40B4461E0026431640F4 +:10917000B34666465C462643B446CC4466461196E2 +:10918000049E741810AE84235B00F45061441033C5 +:10919000F1502600133BFF3BDE41B146260005336C +:1091A000DE41B4464E4663465E40B446260019236F +:1091B000DE41B14666464B465E40B446AC44464648 +:1091C0007E4035002540464675406544009B1E1D87 +:1091D000B6003658B44665449E1DB60010AB0496E2 +:1091E000F658B446AC44664610960B000225EB4197 +:1091F00099460B000B35EB411D004E4675400E00A5 +:109200001623DE416E40B1460E00029B1E40350023 +:109210001E000E43019B1E4035434D44119591465F +:10922000E14410AE922252004B46B3502A006244F1 +:109230008A256D0072514E460623DE41B4464E46E5 +:109240000A3DFF3DEE413500664675404E461333FC +:10925000DE417540A8443E00664035004E4635402C +:109260007D40454456463658B4466544009BDE1D55 +:10927000B600B34610AE58468659B44665441095BC +:1092800016000220C641B44616000D23DE41B0464A +:10929000664640464640B04616001620C641B446D3 +:1092A000464660464640B04616000E40B4460E00A4 +:1092B000164302980640B246664650460643B446F8 +:1092C000E04446461196019EB446AC4410AE1433B9 +:1092D000FF336046F0504544103BF55066460B3B6B +:1092E000FF3BDE41B04666460533DE41330046466D +:1092F000734066461920C6417340FF184E466640CB +:109300003300664633406340FB18039F049EF759C1 +:10931000DB190826B04600988246D044464601969E +:10932000B70010AEBF59DB1910932E000227FE4183 +:10933000B0462E000B37FE413700464677402E00E0 +:109340001620C6417E40B04602E0C046D44E011011 +:109350002E001640370016002E430E403743B84407 +:1093600040461190029882469A4410AE8E204000EA +:109370005746375043441F0086235B00F75056463C +:10938000073BFF3BDE41330056461238FF38C641EB +:10939000734056460E30C6417340E31864464E464D +:1093A00074405046044074401B1903985C46205892 +:1093B0001B18009E0936B60010A830581B181093D1 +:1093C00038000224E0413E000B34E64170403E008C +:1093D0001624E64170403C002C403D432A40224385 +:1093E00082181192C91810AC8C20400021509B1893 +:1093F00084277F00E351019B0093009B0F2B00D833 +:1094000084E510231800DCE310AA92235B00D358F4 +:1094100011008C22520089588C460A000621CA414C +:1094200061460B24E1414A4061461926F1414A4018 +:109430009B1810AA90277F00D15914008E22520049 +:10944000A458A24622004A40644622404A409B1843 +:10945000FE4A84000192A2589B18871E069710AE00 +:109460000A94A45922001127FA411500220002375C +:10947000FA415540A20A6A40C41F0794441FA40041 +:10948000A459121904000D3CA400A14634004E4614 +:1094900035592F000724E7413E002C001227FC41DC +:1094A0007440ED086C40141902000E3A920010AEA0 +:1094B0009259A218841C0B94A4000494A2519846BB +:1094C00090444346109384225200B4582700073A30 +:1094D000FF3AD7413E0027000B32D7417E402200A1 +:1094E0001627FA41564010AAF637D2599346224021 +:1094F000150010AF88225200BA585F462743174024 +:109500003D437519119510AB8A277F003E00DF5946 +:10951000474400979F512B00434410AF92256D00A4 +:109520007B51009F1F3DFF3DEF413E00009F0535F1 +:10953000EF413D007540009F1926F7417D404D19D0 +:10954000514667467940009F39405746794069182F +:10955000451CAD00019E0595AD594919471E089758 +:1095600010AF059DED592F001126F741B8462F0089 +:109570000236F7413E0047467E40AD0A6E40871FE7 +:109580000997051FAD0010AFED59761907000C3F84 +:10959000BF0010AD0C977D59A8462F000725EF415D +:1095A000029747460B35EF413D00029F7D404746FD +:1095B000FF087D40751910AF4E46F659AD19C61C0F +:1095C000B6000D96F5518946A944494610911F00F1 +:1095D0000226F7413D001F000B36F7413E006E406A +:1095E0001F001625EF417E401F0027403D00270049 +:1095F0001F4359460F403D43751911954A4410A920 +:109600008826760002928A514D440F00902149002D +:1096100003957D5002990F000625EF413E000F0093 +:109620000535EF413D0075400F001926F7413E001A +:109630006E4056446746009D6F403D000D406146B8 +:109640004D4075190199049A5658AD1910AFD65965 +:1096500037001121CF41B94637000231CF41B8461A +:109660004F4641464F40B60A7E40C71EBF00B8462F +:1096700010AF4146CF59B84646440B277F42B84603 +:1096800080444746BF0010A90E97795889460F00BD +:109690000721CF41BA464F460B31CF41B846574616 +:1096A00041464F404946C9084F40B846B04410AE05 +:1096B0000C9FBE5946440B990227B84641448F007F +:1096C00010A90B977E50AE191096039A1700022529 +:1096D000EF41B84617000B35EF413D0047467D404E +:1096E00017001621CF416F40B84617001F403D00BC +:1096F0001F00174327403D4345441195D846B044C9 +:1097000010AFF63142467A5076198E256D007E51A3 +:109710004746173DFF3DEF41B94647460535EF4106 +:109720003D004A4655404746F339CF417D40AC4461 +:10973000009F02994F403D0042461540009F7D40EA +:10974000654401990D9F7A589446AC4410AABD58BF +:109750002F001121CF41BA462F000231CF41B94627 +:1097600057464A465740AD0A7D40069FBA0091468B +:1097700010AA4F46BA589146A94407000A3FBF00B5 +:1097800010AA0697BA58924617000725EF41BB4624 +:1097900017000B35EF413D005A4655405246D2085E +:1097A00055404D4410AA0E9FBA5891464D44421D53 +:1097B0009200934610AA5F46BD506544109537004D +:1097C0001139CF41BC4637000B31CF41B94667460E +:1097D0004A465740B94637000931CF41BC464F464B +:1097E00062465740B9463700039A1740BC461700F7 +:1097F00037431F40BA46674652461743BC46E144CA +:109800004A461192A446AC4410AA842464006746D8 +:109810001751AA46CA4454468C256D005451133D35 +:10982000FF3DEF41B94667460535EF413D004A46E9 +:10983000554067460331CF417D40009FB9464D44B6 +:10984000474602994F40624602E0C046D44E01109E +:1098500017404F40EF19051DAD0001996D587F1954 +:10986000009710AA0B998D582F001121CF41BA46AD +:109870002F000231CF41B94657464A465740AD0AFC +:109880007D40089FBA00914610AA4F46BA589146AB +:10989000A9440700093FBF0010AA0897BA5817004B +:1098A0000725EF4111000B35E9410D007D40D2083D +:1098B00055404D4410AA06998A5891464D44821D40 +:1098C000910010AA06918D50009FB946A9444F46B9 +:1098D0000097109721000225E941894621000B35A8 +:1098E000E9410D004A46554027001621CF416F40FF +:1098F000B946270037403D003700274303990F4002 +:109900003D434D441195009FB9464B4410AA922106 +:109910004900009353507F198A235B00D750009968 +:109920000B000625EB4199460B000535EB411D0068 +:109930004A4655400B001921CB415D40029B994698 +:109940004D44424663465A40009B1A4043465A40A3 +:10995000AA1801995B465D58521910AB5D46ED5847 +:109960002B001121CB419A462B000231CB41994665 +:10997000534649464B40AD0A5D4010A90A9B5B58CF +:109980009946A9440300083B9B000A935B589A46FA +:109990000725EB419B4653461221CB411D005B46F8 +:1099A0005D405346DB085D404D4410A9089B5B5861 +:1099B00099464D44C31D9B009B460B005946CD5014 +:1099C00055192A0010953B000221CB4199463B00D6 +:1099D0000B31CB411D004B465D403B000931CB4173 +:1099E0006B4099463B0023401D0023003B4333401E +:1099F0001D434D44119503999146494410AA902363 +:109A00005B00D150A9444D4610AA103B0295D55099 +:109A10000A000625EA4191460A000535EA4115008B +:109A20004A4655400B001922D3415D40A844624686 +:109A3000009B5A4015000D40624655404544019A2E +:109A4000069B9A589046A84410AA9D582B001122B4 +:109A5000D3419A462B000232D341994653464A4697 +:109A60005340AD0A5D4010AA059B9B589946A944F6 +:109A7000079B9B0003939B589A460725EB41524650 +:109A80000B35EA4115005D405346DB085D404D440F +:109A900010AA0A9B9B5899464D4408239946814435 +:109AA0004B4605939B00994613004A46D550A8445F +:109AB00043461093029A13000225EB419946130086 +:109AC0000B35EB411D004B465D4013001622D34180 +:109AD0006B409946029A13003B401D003B00134324 +:109AE00023401D434D441195B146C14410AE8E2311 +:109AF0005B004A46F2504544103BF5504B46062663 +:109B0000F34198464B460536F3411E0043465E40FE +:109B10004B461922D3415E406644009A51404B4661 +:109B2000194013004B40F318019A594689585B18A5 +:109B300010A95E46765831001122D1418C46310081 +:109B40000232D14162465140B60A714010AA049EC9 +:109B5000B6588919099EB600B658B4460722D641B0 +:109B6000B04666460B32D641424656406246D2085F +:109B700056408E1910AA039989587118093080002F +:109B80008150591810912E000222D641330028002E +:109B90000B32D041434028000932D04143402800D5 +:109BA000029A10402A433A4002439B1811936418CA +:109BB00010AE8C256D007451C91884246400315195 +:109BC00005983F2800D81FE400230F98072B0BD8D7 +:109BD0001A004232920010A954589A1C920011584F +:109BE000091911500133F1E79421490010A8FFF73A +:109BF00005F900205BB0F0BCBB46B246A946A046C2 +:109C0000F0BDC046F8B5CE46474680B506000D000B +:109C1000141E3CD003683F271F404022D21B9046B1 +:109C20001B190360A34202D2436801334360002F33 +:109C300001D044450AD23F2C1CD929003000FFF73F +:109C400037F9002824D14035403CF4E728239946D1 +:109C5000B1444B46D8194246290009F01CF949463F +:109C60003000FFF725F9002812D14544403FE419A0 +:109C70000027E0E7002C01D1002009E03000283067 +:109C8000C0192200290009F006F9002000E0002098 +:109C9000C0BCB946B046F8BD70B504000D000268FE +:109CA0003F231340581CE318283380221A703828A9 +:109CB00079D823002833483A121A1818002109F0DD +:109CC0009FF82268510F6368DB001943D2001E0E13 +:109CD000602026541E0C013026541B0A01302354E8 +:109CE0006323E154110E0133E154110C0133E154AB +:109CF000110A0133E1540133E254210028312000DC +:109D0000FFF7D6F800285CD1E37A2B70A37A6B704A +:109D1000A3681B0AAB70237AEB70E37B2B71A37BE8 +:109D20006B71E3681B0AAB71237BEB71E37C2B72D5 +:109D3000A37C6B7223691B0AAB72237CEB72E37DFD +:109D40002B73A37D6B7363691B0AAB73237DEB736A +:109D5000E37E2B74A37E6B74A3691B0AAB74237E12 +:109D6000EB74E37F2B75A37F6B75E3691B0AAB75FF +:109D7000237FEB75236A1B0E2B76638C6B76236A2D +:109D80001B0AAB76236AEB76A36E002B19D1626AAD +:109D9000120E2A77E28C6A77626A120AAA77626ADE +:109DA000EA7718000DE0260028364022121A3018F3 +:109DB000002109F025F831002000FFF779F800288C +:109DC00000D070BD38220021300009F019F878E782 +:109DD00001BE01487047C04602020204024B0B60FC +:109DE00009231360002070472C02000810B540784A +:109DF00006F022FC10BD000070B504001500914271 +:109E00009B415B4283420AD001234340DBB28A423A +:109E1000894149428B4202D0002C0CD070BD07F022 +:109E2000F3FA06000549280008F064F80100300044 +:109E300006F0CCFDF0E707F05BFDEFE740420F00D6 +:109E4000F8B504000A7813000D3BDBB2012B04D9EE +:109E50000F2A32D14D78013500E04D78002005F011 +:109E600021FE0600002005F0EBFD06F0C5FBF040EA +:109E70000700280006F0C0FBF04006006378002BC6 +:109E80000FD06078E9B205F0BDFD05006378002BC6 +:109E900014D100280BD1320039000020FFF7ACFFAD +:109EA0000CE0020039000120FFF7A6FFE9E73A00C5 +:109EB00031000020FFF7A0FF00E0014D2800F8BDB1 +:109EC00001020204F8B5060004292BD026D8012986 +:109ED0002AD0022920D10124002005F0E3FD05004D +:109EE000002005F0ADFD06F087FB0700EF40E040E5 +:109EF00005007378002B19D07078210005F0B2FDB1 +:109F000004007378002B1ED1002815D12A003900D7 +:109F10000020FFF771FF16E00C4C14E0082911D166 +:109F20000324D9E70224D7E70024D5E7020039004B +:109F30000120FFF761FFDFE73A0029000020FFF76B +:109F40005BFF00E0014C2000F8BDC04600020204A7 +:109F500010B5002903D0407805F00EFD10BD407803 +:109F600005F034FDFAE710B5407805F01DFD10BD91 +:109F700010B503000A000178880706D4013A0320CF +:109F80000840597805F0EAFA10BD013A032008406C +:109F90005978002305F028FBF6E710B503000029E7 +:109FA00006D0027803201040597805F0BFFB10BDA1 +:109FB000027803201040597805F0FAFBF7E700001B +:109FC0000048704754570110F0B585B005000E00E9 +:109FD0000192080001F090FFC7B2002401E00134B3 +:109FE000E4B2BC420FD203A805230370467084700C +:109FF00000F0D0FB0028F2D12E706C700123AB7002 +:10A00000019B6B6000E0014805B0F0BD020D020449 +:10A0100070B582B006000C0000280FD0002C0FD0C5 +:10A0200001A805230370237843706378837000F0E0 +:10A03000B1FB051E06D0280002B070BD01BEEDE7E1 +:10A0400001BEEDE708222100300008F024FF0123C3 +:10A05000B370F0E710B5002808D00378122B07D0B2 +:10A06000032B08D943685B68984710BD01BEF4E72D +:10A07000FFF76EFFF9E7FFF790FFF6E710B500284E +:10A0800008D00378122B07D0032B08D943681B692B +:10A09000984710BD01BEF4E7FFF714FFF9E7FFF79B +:10A0A00067FFF6E710B582B0041E10D0A378002B2E +:10A0B00000D101BE01A805230370237843706378A3 +:10A0C000837000F0AFFB0023A37002B010BD01BE8F +:10A0D000ECE710B5002808D00378082B07D0092B2F +:10A0E00000D001BE00F054FA10BD01BEF4E700F04C +:10A0F000FDF8F9E710B5002808D00378082B07D041 +:10A10000092B00D001BE00F08DFA10BD01BEF4E7AE +:10A1100000F02AF9F9E710B5002808D00378082BD9 +:10A1200007D0092B00D001BE00F0A0FA10BD01BE7F +:10A13000F4E700F04BF9F9E710B5041E1BD020003E +:10A14000FFF7C7FF002800D001BE02212000FFF763 +:10A15000E2FF002800D001BE7823E15A00290CD18B +:10A160002378082B11D02378092B12D07A23E35CB3 +:10A17000002B12D010BD01BEE1E702222000FFF744 +:10A18000B9FF0028ECD001BEEAE7200000F032F869 +:10A19000E9E7200000F06CF9E8E7200000F042FB5E +:10A1A000E8E70000054A80239B019C46604480004C +:10A1B00083585B005B0883507047C0460000204016 +:10A1C0000023032B07D8064A99008A58002A04D195 +:10A1D0000133DBB2F5E7002070470120FCE7C04601 +:10A1E000886301088000C0B24018C0B20230C0B21B +:10A1F00070470000F0B5C64600B50600443001F0D7 +:10A20000CFFFB178324801F0D5FF7478A400E4B2F2 +:10A21000B378E418E4B23434200006F085FA05007F +:10A2200001238340DB435BB22A4A11780B40137051 +:10A23000210006F061FA280000F0A2FC002D29DBC5 +:10A24000AB08254FC0339B00DA59944603212940BF +:10A25000C900FF22904615008D406246AA431500B2 +:10A260008001424602408A402A43DA512000FFF72B +:10A2700099FF72789200D2B2B3789B18DBB2174A7A +:10A280009B0000219950FFF79BFF002819D080BC4C +:10A29000B846F0BD0F232B40083B9B0806339B00BC +:10A2A0000F4A94466344596803221540ED00FC327E +:10A2B0001700AF40B94380010240AA400A435A60E8 +:10A2C000D4E7084800F046FF074B00221A70DEE78B +:10A2D00000002A40AF64010800E100E08863010843 +:10A2E00000ED00E05002000898630108054B9A68F1 +:10A2F000FF231340817801228A4013405A1E934164 +:10A30000D8B2704700002A4070B5022924D008292D +:10A3100022D0012916D001BE1BE000231D430134C9 +:10A32000E4B2032C11D8002D0FD10D4BA200D05850 +:10A330000028F2D0FFF7DAFF002801D00123EDE773 +:10A340000023EBE700240025EBE701235D40054BEC +:10A350001D70044B187870BD024B00221A70F8E78C +:10A36000886301089863010870B50C00022A26D89A +:10A370008378032B00D901BE124910331B025A58AF +:10A38000520052085A50436CC02293434364403AEF +:10A39000134343648378032B00D901BE094910336A +:10A3A0001B025D58802212062A435A508178407859 +:10A3B000FFF718FF0100200000F072FB70BD02489B +:10A3C000FCE7C04600002A400106020402291ED80C +:10A3D0008378032B00D901BE0E4910331B025A5853 +:10A3E000520052085A50436C302293434364134343 +:10A3F00043648378032B00D901BE064910331B0246 +:10A4000058588022120602435A50002070470248D2 +:10A41000FCE7C04600002A4001060204054A8023EA +:10A420009B019C466044800083585B005B0883501E +:10A430007047C046000020400023392B07D8064A49 +:10A4400099008A58002A04D10133DBB2F5E70020D5 +:10A4500000E001207047C0469C630108C3001B1A3E +:10A460009B00C018C0B24018C0B20630C0B27047DE +:10A47000F0B5C64600B50500443001F049FE6B78E2 +:10A48000002B4CD13948A97801F04EFE6B78002B97 +:10A4900002D1AE781C2E44D9012B44D001BE344EDB +:10A4A000300006F041F9040001238340DB435BB236 +:10A4B000304A11780B401370310006F01DF920006E +:10A4C00000F05EFB002C33DBA3082B4FC0339B0056 +:10A4D000DA59944603212140C900FF229046140016 +:10A4E0008C406246A24314008001424602408A40EA +:10A4F0002243DA513000FFF791FF6A78D3009B1AAC +:10A500009B009B18AA789B181C4A9B00002199501D +:10A51000FFF792FF002822D080BCB846F0BD184853 +:10A52000B1E73836BCE7AE781C2EB7D85536B7E75A +:10A530000F232340083B9B0806339B00114A944697 +:10A540006344596803221440E400FC321700A7401A +:10A55000B94380010240A2400A435A60CAE70A4850 +:10A5600000F0F8FD094B00221A70D5E700002840E2 +:10A57000FF030000AF64010800E100E09C630108F4 +:10A580000000294000ED00E060020008846401083A +:10A590004378002B0DD1084B084A12685E21515AAE +:10A5A0005B1881786020125A4A439B185868C00F84 +:10A5B0007047034BF0E7C046000028400C660108D6 +:10A5C0000000294070B5022924D0082922D0012991 +:10A5D00016D001BE1BE000231D430134E4B2392C28 +:10A5E00011D8002D0FD10D4BA200D0580028F2D069 +:10A5F000FFF7CEFF002801D00123EDE70023EBE7B2 +:10A6000000240025EBE701235D40054B1D70044B42 +:10A61000187870BD024B00221A70F8E79C6301089D +:10A620008464010870B504000D00022A19D878234B +:10A63000C35A002B00D101BE636CC02293436364F4 +:10A64000403A13436364A1786078FFF707FF010085 +:10A65000280000F025FA002802D178230022E252D7 +:10A6600070BD0148FCE7C04601060204022907D874 +:10A67000436C302293434364134343640020704788 +:10A680000048FCE701060204F0B504280DD00D00D7 +:10A6900011000700304A4400A45A421C1D2A07D862 +:10A6A000D2B22D4E5200965B04E00D250520F0E756 +:10A6B0003226FF360122BA40284F3A4206D16419A9 +:10A6C0001C801B88B34244D20020F0BDC21ED7B20A +:10A6D000182F1DD8BA00224FBA589746214A00E0D9 +:10A6E000214A1E80002AECD00338C7B2182F2BD87D +:10A6F000B8001E4F385887461D4AF2E71D4AF0E75A +:10A700001D4AEEE71D4AECE71D4AEAE71D4AE8E765 +:10A7100001BE0022E5E71C4AE3E70127BD42D0D293 +:10A720006800805A001980B241181980691CB9422A +:10A73000C7DA4D00AE5A3619B6B2C2E70227EDE7C6 +:10A740001027EBE70227E9E701BE0027E6E71A2713 +:10A75000E4E70E48B9E7C046CC580110280B0A0CB4 +:10A76000945701105C58011094580110F8570110CB +:10A7700098580110C85801109C580110BC5801107D +:10A78000C0580110C458011060580110000D020497 +:10A7900000207047F0B583B005000026F5F7B5FE40 +:10A7A000070028786978AA786B460633FFF76CFFB4 +:10A7B000041E0ED16B4606331B88DA08D2B207217D +:10A7C0000B4016498A5C01369E401640731E9E411E +:10A7D000F6B2002C01D1002E1DD1002C05D038007E +:10A7E000F5F797FE200003B0F0BD28786978AA78C5 +:10A7F0006B460633FFF748FF041EF0D16B46DA883C +:10A80000D308DBB207211140044A01208840D15C03 +:10A810000143D154E3E7024CE1E7C04688640108F4 +:10A82000010D020430B583B00400F5F76EFE05009B +:10A8300020786178A2786B460633FFF725FF031E68 +:10A840000ED16A4606321288D108C9B207241440D4 +:10A8500007480122A240D24352B2445C22404254F3 +:10A86000002B00D001BE2800F5F753FE03B030BD29 +:10A8700088640108020000230020002B00D07047EC +:10A88000002A00D018000133DBB2F6E710B504004F +:10A89000FFF7F0FF200010BD002001E00130C0B242 +:10A8A000102805D8044B1B5C002BF7D040B201E008 +:10A8B000012040427047C0466851011070B5050044 +:10A8C0000C00FFF7E9FF0300114A525D002A10D087 +:10A8D000104A11688A687020085A1218A400EB1AEE +:10A8E00010337220095A4B43E418A4182068C0B2F0 +:10A8F00070BD084B1A6893687021515A5B18A40008 +:10A900007221525A6A43A418E4182068EFE7C0463F +:10A91000685101100C660108F8B5CE46474680B56F +:10A92000070015001C0008AB1B78984609AB1E7881 +:10A93000234B1B5C002B17D0411ACDB22800FFF728 +:10A94000A5FF000204432800FFF794FF000404431E +:10A950001C482043002E04D04246002106F0C0FED1 +:10A9600024E006F017FF21E0FFF790FF030299466D +:10A970001D433800FFF77EFF0304280018434A46B2 +:10A98000224313438021C9051943002E12D10E4BD7 +:10A990001A6893687021515A5B18A4007221525AA8 +:10A9A0007A43A418E418002323600020C0BCB946F1 +:10A9B000B046F8BD4346002206F02EFEF6E7C0463C +:10A9C00068510110001000400C660108F0B5CE4639 +:10A9D00000B584B00C0002924508EDB20123184086 +:10A9E0008146FFF759FF0390264B1F5D1B57002B35 +:10A9F00013DB102F40D8244B1E5D00243A00234B5C +:10AA00007900CB5AA34232D9214BB900CB581B5DF8 +:10AA1000AB4208D00134A4B2F0E77F233B40C2B27E +:10AA20009B18DFB2E5E71B4B9B5C002B02D0B3B257 +:10AA3000A34223D1029B022B05D031003800FFF73F +:10AA40003DFF00281CD1029B002B01D100200FE00C +:10AA5000E2B26B46197B029D013D6B425D4101955F +:10AA60004B46009333003800FFF756FF00E00A48DA +:10AA700004B080BCB946F0BD0748F9E70648F7E7DF +:10AA80000648F5E7FC50011074560110E05601101D +:10AA9000E801000868510110010C0204000C0204D6 +:10AAA00010B50222FFF792FF10BD000070B582B012 +:10AAB0000C008378DA08772B15D8134909688E695A +:10AAC000D201B618C27807251D400092012322004A +:10AAD0002900300001F0DEFC0A2C08D00B2C0CD031 +:10AAE000002002B070BD084A12689669EAE70122A8 +:10AAF0002900300001F026FDF2E700222900300095 +:10AB000001F020FDECE7C0460C66010800B583B0FB +:10AB10000300C20877280FD8094909688869D2015B +:10AB2000801807211940002300930133082201F007 +:10AB3000B1FC002003B000BD014A12689069F0E743 +:10AB40000C66010870B54300C01885B22A000020C9 +:10AB500010E0D308D1B207241440EEB2891BC9B269 +:10AB6000064EF35C2341012423408B401843C0B2BE +:10AB7000013292B2EB1C9A42EBD370BDB064010873 +:10AB8000F8B506000024FF2700E00134A72C0CD8FC +:10AB9000A5B2280005F0C8FDB042F6D12800FFF7A5 +:10ABA000D1FF8742F1D90700EFE73800F8BD000078 +:10ABB00070B582B00E0011000023072B15DC0C4A83 +:10ABC00015782C001C41E40701D50133F5E7DCB210 +:10ABD00001229A40064B15431D706B461C8058801D +:10ABE0000196684605F0ECFD00E0024802B070BD39 +:10ABF000AF640108020D020470B5094C83001C59B2 +:10AC000008481D58002C09D0002D05D00023181E1F +:10AC100001D12000A84770BD0123F8E70123F6E722 +:10AC200024650108F0640108F0B5C64600B50600C9 +:10AC30008846080001F045F907000024012517E0C7 +:10AC4000022231003800FFF7D7FF0137FFB2BC42C4 +:10AC5000F6D84346022B19D0082B17D0012B18D158 +:10AC6000002D16D00D4B01221A7012E00134E4B20F +:10AC70000C2CEED83A0031002000FFF7BDFF051E76 +:10AC8000F4D14346012BF1D10027E0E7034B00222A +:10AC90001A70280080BCB846F0BDC046EF640108B9 +:10ACA000020000200C2806D8044B1B5C934203D002 +:10ACB0000130C0B2F6E7FF207047C046C45901100A +:10ACC00010B5123883B2202B1DD89800104B1B589A +:10ACD0009F46002000E00220FFF7E2FF10BD0320A6 +:10ACE000FAE70420F8E70520F6E70620F4E7072056 +:10ACF000F2E70820F0E70920EEE70A20ECE70B2056 +:10AD0000EAE70C20E8E701BEFF20E5E70120E3E7E2 +:10AD10000859011010B5EFF30580103800B205F0A6 +:10AD20001DFD054B984205D0FFF7CAFF034B80007D +:10AD3000C05810BD0020FCE7FF0300002465010897 +:10AD4000F0B5D6464F464646C0B582B081468846E5 +:10AD500017009A46002614E053469A7863789A4280 +:10AD600001D0002320E001231EE001A81723037077 +:10AD70002378437063788370FFF70CFD002816D0AA +:10AD80000136BE4217D2B4004444A5784D45F7D1F0 +:10AD90005346002BE9D01B78172BE6D153465A783F +:10ADA00023789A42D8D00023002BE9D004E001A8F0 +:10ADB000FFF738FD00E00024200002B0E0BCBA46F6 +:10ADC000B146A846F0BDF0B5CE46474680B583B043 +:10ADD00080460F00160000250023994600E001354B +:10ADE000B5421CD2AC003C19A3784345F7D120787A +:10ADF000FFF756FF01AB17221A70587062789A70ED +:10AE00001800FFF7C7FC0028E9D101A8FFF70AFDE9 +:10AE10002278012393404A461A439146DFE7484689 +:10AE200003B0C0BCB946B046F0BD0000014B187875 +:10AE30007047C046EF64010870B50D001400FFF7BD +:10AE40002FFF134B8000C550124BC450002300202D +:10AE500001E00133DBB20C2B08D80D4A9C00A2584C +:10AE6000002AF6D0012809D00130F2E7002806D1E7 +:10AE7000002D00D001BE084800F06CF970BD01281B +:10AE8000FCD1002DFAD0044800F058F9F6E7C0468E +:10AE900024650108F064010870020008F0B5C64698 +:10AEA00000B50400884616001F0005E00123424655 +:10AEB0001370002B1AD0E4680E4DAC4216D02568F2 +:10AEC000002DF8D020793040B042F4D163793B4076 +:10AED000BB42F0D0A26839003000A8470028E5D175 +:10AEE000012F01D00123E2E70023E0E7200080BC2E +:10AEF000B846F0BD89070000F8B504000F00160041 +:10AF000000E0E468BC420ED02568002DF9D023791A +:10AF10003340B342F5D163799B07F2D4A268022192 +:10AF20003000A847EDE7F8BD70B505000C00F5F757 +:10AF3000ECFAE368002B02D0F5F7EBFA70BD2B6852 +:10AF4000E3602C60F8E7000070B504000D00F5F731 +:10AF5000DCFA01E00C331C002368064A934205D05A +:10AF6000AB42F7D1EB6823600023EB60F5F7D1FA31 +:10AF700070BDC04689070000F0B5D64600B584B064 +:10AF80000D0000F0ABFF0090060002AB0122DA7169 +:10AF9000022809D0082807D0102805D01E4B1B68AE +:10AFA0009A461E4B1F6804E01B4B1F681B4B1B6817 +:10AFB0009A4602ABDC1D009B2A0021003800FFF7F7 +:10AFC0006DFF01902378002B11D1504602AB07335F +:10AFD0001B78002B01D1012E10D002AB07331B7858 +:10AFE000002B16D0002004B080BCBA46F0BD009BF8 +:10AFF0002A0021005046FFF751FFE7E72A00010031 +:10B000005046FFF779FF2A0001993800FFF774FFD7 +:10B01000E3E70348E7E7C04684020008800200082F +:10B02000FF00420070B50C0020212000FFF7A4FFB4 +:10B030000500042C01D0280070BD002005F0FCFAAA +:10B04000034906F057FF0100012005F0BFFCF2E7BD +:10B0500040420F0070B50C0010212000FFF78CFF5C +:10B060000500082C01D0280070BD002005F0E4FA8E +:10B07000034906F03FFF0100002005F0A7FCF2E7BE +:10B0800040420F0010B508000821FFF775FF10BD02 +:10B0900010B50400FFF770FF042C02D0082C15D067 +:10B0A00010BD0F4B1B68DB0705D50E4B1B78002B23 +:10B0B00002D0012300E000230B4A1370002BEFD0D5 +:10B0C000074A136801218B431360E9E7064B1B789D +:10B0D000002BE5D0024A136801210B431360DFE720 +:10B0E00010E000E05A650108F465010810B5080099 +:10B0F000012903D1044B1B88002B03D10221FFF748 +:10B10000C7FF10BD0148FCE758650108FF00420079 +:10B1100010B508000121FFF7BBFF10BD70B504009A +:10B120000D00160004491C2207F0B5FE26602571AB +:10B13000200005F005FE70BDF059011010B5011E8C +:10B1400003D00348FFF7F0FE10BD01BEF9E7C0468B +:10B150008402000810B5011E03D00348FFF7F4FE77 +:10B1600010BD01BEF9E7C0468402000810B506F024 +:10B1700027FA002808D1194A19480021FFF7CEFF05 +:10B18000002804D1174810BD05F08EFEF3E7164ADB +:10B1900016480121FFF7C2FF002801D11148F2E74C +:10B1A000134A14480221FFF7B9FF002801D10D48C6 +:10B1B000E9E7114A11480321FFF7B0FF002801D148 +:10B1C0000848E0E70E4A0F480421FFF7A7FF0028D0 +:10B1D00001D00020D7E70348D5E7C04611B10010E1 +:10B1E000D4650108011A0204EDB00010646501087D +:10B1F00085B000108065010855B00010B8650108E1 +:10B2000025B000109C650108002800D001BE024B4B +:10B210008000C1507047C046F065010810B505F0C8 +:10B2200063FB002010BD10B5FFF7F8FF002800D029 +:10B2300001BE10BD064B1B681A6880239B019C460B +:10B2400060448000815880231B060B438350704765 +:10B250000C660108054A80239B019C4660448000DF +:10B2600083585B005B0883507047C0460000204055 +:10B27000012803D0022803D1013070470220FCE7E7 +:10B280000020FAE703280DD005D801280CD00228A9 +:10B2900005D104207047042801D10820FAE701BE37 +:10B2A0000220F7E70620F5E70220F3E710B50300D8 +:10B2B000814206D9091A64204843190006F01AFE93 +:10B2C00010BD411A64204843190006F013FEF7E749 +:10B2D000F0B5DE4657464E464546E0B587B0050018 +:10B2E0000E000192984610AB1B7899461E230371FD +:10B2F00000234373FF33C371037243728372FF29C8 +:10B300001CD0019BFF2B1ED0FF2E03D1019BFF2BD6 +:10B3100000D1F4E0F5F7F9F882467A4B1F68FF2E6A +:10B3200016D10198FF281AD14346FF2B1DD14B4659 +:10B33000FF2B21D1002F26D000242BE04B46FF2BE2 +:10B34000DFD0714CAEE04346FF2BDDD06E4CA9E060 +:10B350006E4913223000FFF736FD0740E1E76C49E4 +:10B360001322FFF730FD0740DEE76A49122240460C +:10B37000FFF729FD0740DAE7674912224846FFF741 +:10B3800022FD0740D6E75046F5F7C3F85E4C89E04A +:10B390000134E4B23B00E340DB07F9D5172304AAEC +:10B3A0001371547100239371584905AB1322300077 +:10B3B000FFF7C6FC8346564905AB13220198FFF7F9 +:10B3C000BFFC0390534905AB12224046FFF7B8FC7F +:10B3D0000290514905AB12224846FFF7B1FC070025 +:10B3E000FF2E02D05B46002B10D0019BFF2B02D01A +:10B3F000039B002B0AD04346FF2B02D0029B002B5D +:10B4000004D04B46FF2B02D0002F00D101BE1723E2 +:10B4100004AA13702000FFF743FC04AB587000230C +:10B4200004AA93701000FFF7B5F904005046F5F731 +:10B4300070F8002C36D105AB1A88AA809B78AB71C6 +:10B44000FF2E37D1002C02D1019EFF2E3AD1002CC5 +:10B450000CD1029B002B09D00821180000F0DDFC64 +:10B46000041E03D10123EB7243466B72002C0BD1F7 +:10B47000002F09D00621380000F0CFFC041E03D1B4 +:10B4800001232B734B46AB72002C09D1119B002B6F +:10B4900020D000236B732B001033119A03CA03C30F +:10B4A000002C23D0200007B0F0BCBB46B246A94612 +:10B4B000A046F0BD0621584600F0AFFC041EC1D1E5 +:10B4C0002E72BFE70821039800F0A7FC041EBED12E +:10B4D000EE71BCE7291D280010300133012200F075 +:10B4E00023FD0400434243416B73D9E768792B7C09 +:10B4F000032119406A7C04F0DFF80400D2E7024C13 +:10B50000D0E7C0468C590110001F0204B050011052 +:10B5100064500110D44F01101C500110F8B52E4D8D +:10B520002F68FFF7F7FB041E286054D000682B4BF0 +:10B53000C5582B4BC6582100183101F0F7FFAB0658 +:10B540000AD52268F8231B012021D150D358E36C7F +:10B55000002B01D0202098476B060AD52268F823DB +:10B560001B014021D150D358E36C002B01D0202087 +:10B570009847EB0705D5E36C002B02D080204000F4 +:10B580009847AD0510D52168F822120180239B0051 +:10B590008B508A582268134951580B431248014274 +:10B5A00000D001BE0F49535073060AD52268FC2310 +:10B5B0001B014021D150D358E36C002B01D0102047 +:10B5C0009847F60705D5E36C002B02D08020800059 +:10B5D0009847014B1F60F8BDF86501088C0F00000B +:10B5E000CC0F0000880F00008CF8FFFF70B50D0035 +:10B5F000140005F031F82100694306F07BFC70BDB2 +:10B60000F0B5C64600B582B080460E000824FF277C +:10B610000823019301E00134E4B2102C17D835005F +:10B62000654305F019F86B08C018290006F062FCA4 +:10B63000010022004046FFF7D9FF01003000FFF76C +:10B6400035FEC0B28742E6D907000194E3E70198CE +:10B6500002B080BCB846F0BD70B504004079FFF779 +:10B660001FFB06001B4B8200D05820602100543184 +:10B670002200183201F09AFC051E01D0280070BD8E +:10B6800000239C22A3500432A3500C3AA350124B27 +:10B690007600F65A114A03213000FFF789FA30008C +:10B6A000FFF7C8FD300005F03FF8002805DB1F2339 +:10B6B00018401E3B83400A4A13600A4A6079210001 +:10B6C000FFF7BAFB2268116880231B060B43136047 +:10B6D000D4E7C04690590110D45901101DB500108F +:10B6E00000E100E06DB90010F0B5C64600B582B0CB +:10B6F000041E26D02068002808D02100183101F04F +:10B700000FFE206801F0DAFD0023236023791E2B51 +:10B7100019D1A423E35C002B00D177E0AC23E35CD8 +:10B72000002B0AD1B033E35C1E2B00D086E09623B9 +:10B730005B00E35C1E2B00D088E002B080BCB84602 +:10B74000F0BD01BED6E76079FFF7AAFA444B40008E +:10B75000C65A300004F0E8FF050001238340DB43B4 +:10B760005BB2404A11780B401370310004F0C4FF03 +:10B770002800FFF705FA002D24DBAB083A4FC03351 +:10B780009B00DA59944603212940C900FF229046C4 +:10B7900015008D406246AA431500800142460240D2 +:10B7A0008A402A43DA513000FFF754FD60790022C5 +:10B7B0000021FFF741FBA423E35C002B19D01E23DB +:10B7C0002371A6E70F232B40083B9B0806339B0001 +:10B7D000264A94466344596803221540ED00FC3222 +:10B7E0001700AF40B94380010240AA400A435A60A3 +:10B7F000D9E701AD17332B706079FFF751FA687004 +:10B80000A379AB702800FFF70DF8D8E7E01D00F032 +:10B81000F9FA2000083000F0F5FA20000A3000F0B4 +:10B82000F1FA2000093000F0EDFA637B002B00D123 +:10B8300074E720001030FEF735FC6FE72000B030D1 +:10B84000FEF77AFCB0231E22E25470E720002D3070 +:10B85000FF30FEF771FC96235B001E22E2546CE77A +:10B86000D4590110AF64010800E100E000ED00E0F0 +:10B87000F0B5D6464F464646C0B504000D0016004A +:10B88000A823C3588B4201D0A823C150637B002B4F +:10B8900005D13548E0BCBA46B146A846F0BD20689F +:10B8A000002101F03DFD2700103700220021380063 +:10B8B000FEF7D0FB002806D02268116880231B0603 +:10B8C0000B431360E6E7231D994629001800FFF794 +:10B8D00097FE8046A065454304F0BEFE6B08C01885 +:10B8E000290006F007FB824601003800FEF7C6FB80 +:10B8F000051E29D1424651464846FFF777FE002EE5 +:10B9000000D03060002201213800FEF7A3FB702335 +:10B91000E35C002B25D080235B02E26D082A01D86E +:10B9200080252D012B434246013A0F210A40134343 +:10B9300021688022920413430B60226811688023DF +:10B940001B060B431360A5E7002201213800FEF718 +:10B9500081FB2268116880231B060B4313602800BB +:10B9600098E72B00D9E7C046061F0204F0B5DE4673 +:10B9700057464E464546E0B583B004001500067AAA +:10B98000FF2E0ED0F308772E06D8A44A12689269CB +:10B99000DB019046984406E0A04B1B689B699846E3 +:10B9A00001E000239846A37AFF2B0FD0227B002AC8 +:10B9B0003BD0DA08772B05D8984800688769D20110 +:10B9C000BF1804E0954A1268976900E00027072233 +:10B9D00016401A409146102929D0202927D0042D3D +:10B9E00000D10CE100D996E0012D00D19AE0022DA2 +:10B9F00000D093E02268116880231B060B4313607C +:10BA00004346002B05D09823E25C3100404600F00D +:10BA100015FD002F00D1FEE09923E25C4946380075 +:10BA200000F00CFD01239A4609E00027CFE7012D25 +:10BA30000DD000239A46082D44D0042D56D05046F0 +:10BA400003B0F0BCBB46B246A946A046F0BD206894 +:10BA500026001836310001F01FFDC00702D5002373 +:10BA60009A46E8E72068310001F014FD0123034005 +:10BA7000DA225200A0585A425341424250411840E3 +:10BA8000D8235B00E3585A4253411A0002409246C1 +:10BA90000342D0D02068822292008358DB05DB0D60 +:10BAA0008158C90B01220A409B18002B07D1C223E1 +:10BAB0009B00C358DB05BED000239A46BBE700239A +:10BAC0009A46B8E7A823E15800222000FFF7D0FEED +:10BAD000002F08D09923E25C4946380000F0AEFC04 +:10BAE00001239A46A9E701239A46A6E7002F00D131 +:10BAF00082E04946380000F007FD9923E0544946AA +:10BB0000380000F02DFD00224946380000F096FC78 +:10BB100001239A4693E7082D00D16BE701BE00236D +:10BB20009A468CE7206825001835290001F0B4FCFE +:10BB3000C00702D500239A4681E72068290001F05A +:10BB4000A9FC01230340DA225200A0585A42534173 +:10BB5000424250411840D8235B00E3585A425341B7 +:10BB60001A0002409246034200D168E722682C4B3B +:10BB7000D3589C462B4BD0580190822189005358B2 +:10BB8000DB05DB0D5158C90B8B460121584601409E +:10BB90005B18002B36D1C2239B00D358DB0534D170 +:10BBA00063460198184333D14346002B0ED0310031 +:10BBB000404600F0A9FC9823E0543100404600F0D4 +:10BBC000CFFC00223100404600F038FC002F0ED0A0 +:10BBD0004946380000F098FC9923E0544946380063 +:10BBE00000F0BEFC00224946380000F027FC206827 +:10BBF000290001F095FB22E701239A461FE7012364 +:10BC00009A461CE700239A4619E700239A4616E74E +:10BC100000239A4613E701239A4610E70C660108B1 +:10BC20008C0F0000CC0F0000F0B583B0050001912F +:10BC30001700FFF7FBF8002819D12A68D0239B00D2 +:10BC4000D3583E0003E02C68D0239B00E3585A1CD5 +:10BC500008D1002FF7D0002E0BD00120FFF7DEFA1D +:10BC6000013EF0E7019A1370002003B0F0BD0248D6 +:10BC7000FBE70248F9E7C046031A0204021F020468 +:10BC800070B504000D00FFF7D1F8002805D0054875 +:10BC900006E02068290001F068F80028F9D00020AB +:10BCA00070BDC046031A02048369DB0715D401681E +:10BCB000822292008B58DB05DB0D8958C90B0122CB +:10BCC0000A409B18002B0AD1B133FF33C358002B15 +:10BCD00001D0012002E0002000E001207047012097 +:10BCE000FCE7000010B5002807D0002907D0AC23DE +:10BCF000C35C002B05D1064810BD01BEF5E701BEAF +:10BD0000F5E703001833006801F016FB0020F3E7A5 +:10BD1000041F0204F0B5CE46474680B583B0040048 +:10BD20008946170098460AAB1D780C9E002856D00D +:10BD3000DE2252000021200007F062F8AC2301222D +:10BD4000E2541E200433E0547C33E054843BE1226F +:10BD50005202E2500B9B0193009543463A0049463C +:10BD60002000FFF7B5FA051E1AD1254920005430EE +:10BD7000402207F090F8E27A7423E254002E0BD0B0 +:10BD80003368E3653079FFF77DFA6123E054307A58 +:10BD9000FFF76EFA6223E0542000FFF75DFC050018 +:10BDA000002D14D1002E06D0F168002903D032698D +:10BDB0002000FFF797FF637B002B12D123681B68DD +:10BDC0001B0516D580235B08DC225200A350002DF2 +:10BDD00011D1280003B0C0BCB946B046F0BD01BEC9 +:10BDE000A6E7A823E15800222000FFF741FD050047 +:10BDF000E4E74023E7E72000FFF776FCE9E7C046E9 +:10BE00000C5A011010B504000078FF2800D110BDB5 +:10BE100000F031F8FF232370F9E770B584B0060015 +:10BE20000D0082780B2369460B70D3084B700723F3 +:10BE300013408B7003AA0B8813808B78937002AB2E +:10BE40001188198092789A701A8869468A809B783E +:10BE50008B7101A8FEF79EFC041E02D0200004B0E6 +:10BE600070BD29003000FEF721FE041EF6D001A8A7 +:10BE7000FEF7D8FCF2E710B584B00400FEF746FEEA +:10BE8000002800D001BE0B236A461370E3085370EC +:10BE900007232340937003AA6B461B8813806B46CD +:10BEA0009B78937002AB1188198092789A701A88E7 +:10BEB00069468A809B788B7101A8FEF7B3FC04B0B9 +:10BEC00010BD042804D004D8012801D0022802D1D2 +:10BED00070470828FCD001BE0120F9E7042804D0EF +:10BEE00004D8012801D0022802D170470828FCD0CC +:10BEF00001BE0120F9E7000012280FD88000094B8D +:10BF00001B589F46082000E0042070470120FCE7F2 +:10BF10000220FAE70620F8E70620F6E70120F4E71A +:10BF20001020F2E74C5A0110F0B5C64600B584B0B7 +:10BF3000070015000193002908D00C78053CE3B2F6 +:10BF4000182B34D89C00284B1B599F4601BEF4E7A0 +:10BF500002AA264B083311CB11C202A93800FEF702 +:10BF600057F804B080BCB846F0BD02AA1F4B10338E +:10BF700011CB11C2F1E702AA1C4B183311CB11C22D +:10BF8000EBE74B78002B05D102AA184B203311CBDD +:10BF900011C2E2E702AA154B103311CB11C2DCE744 +:10BFA00001BE1348DDE701260DE001BE0DE00024CF +:10BFB00000261048032CD4D80F4B1B5D98469D4299 +:10BFC000F1D0002E0DD0002FEFD0FDF7F9FF0200C9 +:10BFD00041463800FDF7F8FF0028C2D0019B002B36 +:10BFE000BFD00134E6E7C046985A0110045701104B +:10BFF00002020204020D0204FC5A011010B505F001 +:10C0000023FC0649C02252008B58012003438B5069 +:10C0100005F05EFC05F000FC10BDC04600002640A7 +:10C0200010B505F011FC0449C02252008B580120C4 +:10C0300083438B5010BDC04600002640F8B5050074 +:10C040000C004A1E264B9A4246D8264B1B78002BE2 +:10C0500044D1FFF7E5FF05F03BFC2349E122D20084 +:10C060008B58012083438B50204B1C6000200C28F0 +:10C070000DD81F4BC2009B185B68A34201D9013049 +:10C08000F5E71B4BD358A34202D91C0000E00C205B +:10C09000184E3060184F3C6005F000FC386832687C +:10C0A0000F239B1A02249C40C003FA21890005F04B +:10C0B00021FF0D4AC2235B00D3581B041B0CC01880 +:10C0C000013C204005F0D2FB2800FFF797FF054B0D +:10C0D00001221A700020F8BD0848FCE70848FAE77A +:10C0E0006F17000004660108000026400066010882 +:10C0F000005B0110FC6501080866010800210204CC +:10C1000001210204014B18607047C0460C6601080B +:10C11000002807D00023036043608360C36003618D +:10C120004361704701BEF5E7F0B51B4B984229D03B +:10C130001A4B1A683623D25C002391425B41DBB272 +:10C14000002B00D001BE154F3A685E26935B1B188A +:10C150006025525B4A439B1800241C603B689A5B35 +:10C1600082185F5B4F43D21994609A5B82185F5BC1 +:10C170004F43D219D4609A5B80185B5B59434018D7 +:10C180008461F0BD054B1A683523D25C00239142CF +:10C190005B41DBB2D4E7C046000028400C660108D2 +:10C1A0000023036043608360C36003614361836174 +:10C1B000C3617047032900D901BE0A001032120280 +:10C1C0000023135009024018812252018218136083 +:10C1D000024A9446604403607047C04688100000DD +:10C1E000C00543425841C0B270470000A0231B065F +:10C1F00098422AD014D8802829D008D980235B00FF +:10C2000098422AD01B4B984209D01B4807E01028BF +:10C210001FD0402801D1194801E000281BD17047E8 +:10C22000174B98421BD007D9164B98421ED0164B7D +:10C2300098421DD11548F2E7154B984211D0154B85 +:10C24000984211D1A420C003E9E70020E7E7124893 +:10C25000E5E71248E3E70848E1E70648DFE710486A +:10C26000DDE7A020C003DAE70348D8E70D48D6E7AA +:10C270000148D4E706005200FF00520002005000BF +:10C28000030000F0040000F0050000F0030052007D +:10C29000090000A0010000F005005200010050005C +:10C2A000010052000200520010B50F4B1A683323F0 +:10C2B000D35C002B00D101BE0B4B1C68226ABC234F +:10C2C000E3589B181B68002B0BDB084B1868FFF723 +:10C2D0008DFF636801229A6063689B68002BFBD125 +:10C2E00010BD0348FCE7C0460C6601081066010853 +:10C2F0000200500010B50400FFF772FF002801D1C2 +:10C30000134810BD05F0F4FA124B134A1A605C6032 +:10C3100000229A60DA60114B1A685423D35C002B18 +:10C3200010D004F0A6F9FA21890005F0E3FD010020 +:10C330000B4805F0DFFD0B4BC1188020400006F0D4 +:10C34000F7FFDEE780200021400006F0F1FFD8E78C +:10C3500006005200106601080001001C0C6601086E +:10C3600060F590009808000070B504000D00FFF71C +:10C3700037FF002827D0002D27D005F0B9FA144B3D +:10C38000144A1A6000225A609C60DD60124B1A68E1 +:10C390005223D35C002B10D004F06BF9FA218900F2 +:10C3A00005F0A8FD01000D4805F0A4FD0C4BC118D7 +:10C3B0008020400006F0BCFF06E080200021400005 +:10C3C00006F0B6FF00E0074870BD0648FCE7C0462F +:10C3D00010660108000100050C660108C0EA210191 +:10C3E000482600000600520030B5134A11688B69D8 +:10C3F000C31ADB0949691B01C918002303601568CA +:10C4000081242C5D04192360156882242C5D041995 +:10C410002360156883242C5D04192360156880242B +:10C420002C5D04192360836114688422A25C801847 +:10C4300003600B604B6030BD0C66010810B5072926 +:10C4400000D901BE1F2314009C4300D001BE104B35 +:10C450001B689C69001BC0095B6900011B1803294C +:10C460000AD81C68C9001F20884084431F2002404E +:10C470008A4022431A6010BD04395C68C9001F203D +:10C48000884084431F2002408A4022435A60F2E7DA +:10C490000C660108F8B506000C0015001F0006AB7D +:10C4A0001A78072900D901BE0F232900994303D127 +:10C4B000012D01D0092D00D101BE012F00D901BEEF +:10C4C0001F231100994300D001BE21003000FFF767 +:10C4D000B5FF336801210A00A24093433940A140CF +:10C4E00019433160074B1A688123D25C9219116895 +:10C4F000A400723B1800A04081432B40A3400B4393 +:10C500001360F8BD0C660108072900D901BE0C4B69 +:10C510001B689A69801AC0095B6900011B1803290E +:10C5200006D81B68C900CB401F201840C0B2704716 +:10C5300004395B68C900CB401F201840F6E7C046AD +:10C540000C660108072900D901BE012A00D901BEE5 +:10C5500001238B40002A01D1436070478360FCE7D0 +:10C56000072900D901BE01238B408360704700007A +:10C5700030B50300072900D901BE0F201400844301 +:10C5800003D1012A01D0092A00D101BE8900074840 +:10C5900004688120205CC01804680F231D008D40B2 +:10C5A000AC4313408B402343036030BD0C6601084D +:10C5B00030B50300072900D901BE012A00D901BE08 +:10C5C000074804688220205CC018046801231D000D +:10C5D0008D40AC4313408B402343036030BDC046C5 +:10C5E0000C66010830B5082900D901BE012A00D91E +:10C5F00001BE846901231D008D40AC4313408B4074 +:10C600002343836130BD000030B50300082900D901 +:10C6100001BE032A00D901BE4900074804688020F2 +:10C62000205CC018046803231D008D40AC431340F8 +:10C630008B402343036030BD0C660108F0B5D6463D +:10C640004F464646C0B507000E001400002800D132 +:10C65000AFE0002A00D1AEE0072900D901BE23686F +:10C66000012B00D901BE63680F221900914303D149 +:10C67000012B01D0092B00D101BE237A1F22934345 +:10C6800000D001BEE368032B00D901BE2369012B52 +:10C6900000D901BE6369012B00D901BE236A012BB9 +:10C6A00000D901BE636A012B00D901BEA36A012B28 +:10C6B00000D901BEE36A032B00D901BE236B072B0F +:10C6C00000D901BEE369032B00D901BEA369012B88 +:10C6D00000D901BE01252B00B340700010300322A9 +:10C6E0009146110081400B439C46344B9846196893 +:10C6F0008323C95CC9190B68624693439C46A369AE +:10C700002B40B340624613439A46E2694B461340BE +:10C710001A008240534613430B60227A31003800DE +:10C72000FFF78CFE626831003800FFF721FFE268F6 +:10C7300031003800FFF768FF226931003800FFF749 +:10C7400051FF626931003800FFF732FF43461A6833 +:10C750008423D25CBA1810687B3398469843236AC6 +:10C760002B40656A6D00AC46022561460D402B43A7 +:10C77000A56AA90004250D402B43E56AE9001825A8 +:10C780000D402B43256B6D01414629400B43B10001 +:10C79000FE25AD0029408B40034313602268310021 +:10C7A0003800FFF7CFFE0020E0BCBA46B146A846ED +:10C7B000F0BD0348F8E70248F6E7C0460C660108FA +:10C7C00001005A00084B1A68BC23D3581B181B6879 +:10C7D000002B07DA0B0C00D001BE0904090C4160E4 +:10C7E000002070470148FCE70C66010801008A0040 +:10C7F0000368002B08DAC2600B0C00D001BE0904EC +:10C80000090C8160002070470048FCE701008A00A5 +:10C8100000290BD0074B1A68BC23D3581B181B6880 +:10C82000002B05DAC3680B600020704701BEF1E7FA +:10C830000148FAE70C66010801008A00034B1B68F7 +:10C84000002B00D07047014B1860FBE734660108ED +:10C8500070B505002248006800283FD020480068D5 +:10C860002C246C430019FF2426001E4006601D0A7C +:10C870002C4044601B0C83601A4B1C683323E35C20 +:10C880009E4200D301BE174B1C68236ABA25655B24 +:10C8900075435B19036143683425645DA34200D38B +:10C8A00001BE104C2468246A80335B01E4184461A3 +:10C8B00083681D0C00D001BE1D0C00D001BE1B04FE +:10C8C0001D0C2B43A360C261016200238361049BA2 +:10C8D000002B02D000229B5E838170BD01BEBDE7AC +:10C8E000346601080C660108F0B58FB00400082218 +:10C8F00000210CA806F084FA002C41D06368032BB9 +:10C9000000D901BEE36A002B3CD0236B002B3BD047 +:10C9100007A80300220062CA62C322CA22C302AE71 +:10C92000230014333200A2CBA2C222CB22C208229F +:10C93000835E0CAD2B80079B9BB217336B80089BEB +:10C940000D93E16AA26A0B9B0A980095FFF780FF9E +:10C95000069B0598002200920021FFF779FF216BCA +:10C96000280003F02DFF0022AB5E002B06DB1F2208 +:10C9700013401E3A9A401300044A13600FB0F0BDF2 +:10C9800001BEBBE701BEC0E701BEC1E700E100E0B8 +:10C99000F0B5CE46474680B583B00400171E01931C +:10C9A00040D0254B1B68002B3ED0234B1D682C2309 +:10C9B0005C432C194B43ED186868204B1A683423EC +:10C9C000D35C9946190005F01BFB012633008B4010 +:10C9D0001B0498466068494605F012FB33008B4003 +:10C9E0002269002A22D0A869002821D11268002AD1 +:10C9F00020DA3A681204120C3A6041460A433A605F +:10CA00002269D7600122AA61019A6A622269190C1F +:10CA100000D001BE1B041B0C936003B0C0BCB94620 +:10CA2000B046F0BD01BEBCE701BEBEE70448F4E776 +:10CA30000448F2E70348F0E7346601080C66010891 +:10CA400004028A0007028A0070B582B00400002345 +:10CA5000019300282BD02369002B2AD06369002B77 +:10CA600029D0236A002B28D06369DD682A0C0BD0FB +:10CA700012041A601B682069204B1A68BC23D35823 +:10CA80001B181B68002B1ADB2D042A0C002D0AD062 +:10CA900063691A601B68636A002B2AD098470023D9 +:10CAA00063620023A36163691B6802B070BD01BEAD +:10CAB000D1E701BED2E701BED3E701BED4E701A9A9 +:10CAC000FFF7A6FE00280ED101980268160CFF237E +:10CAD0001340E2699A4207D9226A9B00D358002B7F +:10CAE00002D0984700E0002620693100FFF76AFE77 +:10CAF000CAE7A36A002BD4D09847D2E70C66010896 +:10CB000010B50200064B1B68002B07D0044B1868B9 +:10CB10002C235343C018FFF797FF10BD01BEF5E764 +:10CB20003466010870B50C00224B1A683323D35CBD +:10CB300083423AD900293AD00B681F210A001A40D3 +:10CB4000194201D01C4831E01A4B19683323CB5CE1 +:10CB5000984200D301BE174B19680B6ABA25495B8E +:10CB600048431818154B186005E0636891005B187E +:10CB700000211960013223685B099342F5D8002136 +:10CB8000FFF720FE0D4B186822000021FFF730FE52 +:10CB9000002801D00A4809E0084B18680021FFF777 +:10CBA00011FE002802D0064800E0034870BD02488C +:10CBB000FCE7C0460C66010803018A0038660108DC +:10CBC00001018A0010B50B00002A05D0002A1DD0F3 +:10CBD000002B15D10E4810BD0029F7D10D4A116860 +:10CBE00033228A5C904200D301BE0A4A11680A6A65 +:10CBF000BA24095B4143521807490A601800EAE762 +:10CC000006490B604A60FFF78DFFE4E70048E2E762 +:10CC100003018A000C6601083866010880060008D6 +:10CC2000F0B5C64600B50C001B4B1B68002B2FD07F +:10CC3000DB681A6882422DD947091F22024001256C +:10CC400095405E6800290FD000239846124B186863 +:10CC50000368002B16DABF00F61933681D4207D0AF +:10CC6000AB433360002504E0F3F74FFC8046EDE76B +:10CC70000A4D0021FFF7A6FD002C05D0280080BC3E +:10CC8000B846F0BD064DF7E74046F3F742FCF5E73E +:10CC9000024DF3E7034DF1E7386601080201880011 +:10CCA0000301880004018A000C4B1B68002B0FD085 +:10CCB000DB681A6882420DD941091F2210401E3AD2 +:10CCC0008240586889000B581A4205D0044802E097 +:10CCD000044800E0044870470448FCE7386601084F +:10CCE000010188000201880004018A000001880017 +:10CCF000074B1B689B6CC340DB0700D401BE044B91 +:10CD00001B681B6910308002C3580F201840704701 +:10CD10000C66010830B5C0239B00C45808252B00C1 +:10CD20002340254206D000230DE0D024A40004595E +:10CD3000CC5401339342F8D330BDD024A40005591C +:10CD40005C000D5301339342F7D3F5E710B514009F +:10CD5000C2239B00C358DB05DB0D9A4200D31C00A5 +:10CD60002200FFF7D7FF200010BD03681B050CD57C +:10CD7000802282239B00C358DB05DB0D934206D043 +:10CD800090239B00C150012070474022F1E7002012 +:10CD9000FAE730B580239B00C45808252B002340B8 +:10CDA000254206D000230DE0CD5C9024A40005515F +:10CDB00001339342F8D330BD5C00655A9024A4003F +:10CDC000055101339342F7D3F5E710B5140003681A +:10CDD0001B050ED5802282239B00C358DB05DB0D8B +:10CDE000D31AA34200D81C002200FFF7D2FF200074 +:10CDF00010BD4022EFE703000268120509D580202C +:10CE000040081B6DFF22110019401A4200D0080093 +:10CE100070474020F4E70000F0B5C64600B50500B5 +:10CE20000C0003681B0515D5802780239B00EB5859 +:10CE300008261E40A26A012A0ED882239B00EB58C6 +:10CE4000DB05DB0D9F4202D0A36A012B1AD080BC08 +:10CE5000B846F0BD4027E8E7636A9846E262013AC7 +:10CE6000002B01D0002A00D101BE41462800FFF767 +:10CE7000ACFFA36A1B1AA362002E00D040004044FE +:10CE80006062DAE70023A362002E23D1636A1F7871 +:10CE9000F3F73BFBF8231B018026B600EE50EB585E +:10CEA00090239B00EF50F3F734FB0C4BEA580C4BEC +:10CEB00013401E430B4B1A4200D001BE074BEE50ED +:10CEC0002368022213432360636B002BBFD0012031 +:10CED0009847BCE7636A1F88DAE7C046880F0000FE +:10CEE000FEFDFFFF8CF8FFFF70B505000C00FFF79B +:10CEF00082FF0600A169E269002901D0002A00D161 +:10CF000001BE2800FFF722FF236A1B182362E36992 +:10CF10001B1AE3612AD1A368002B23D0E268B24236 +:10CF20001CD3721E2B681B051AD580239A4200D38E +:10CF300001BEC12080002B58FF218B4311400B43C1 +:10CF40002B50194B0122EA5063680122934363601E +:10CF5000636B002B01D00420984770BD013AE1E7D4 +:10CF60004023E3E7104B0022EA50EDE7A269C0211D +:10CF700089006958090700D540001218A261B34220 +:10CF8000EBD2013B2A6812050CD58022934200D3D4 +:10CF900001BEC12080002A58FF218A4319400A435C +:10CFA0002A50DAE74022F1E7C80F0000F0B5002868 +:10CFB00000D16CE1002900D16BE10B78022B00D984 +:10CFC00001BE4B7B023BDBB2062B00D901BE8B7B43 +:10CFD000002B04D0022B02D0032B00D001BE212352 +:10CFE000CB5C012B00D901BE2823CB5C012B00D9DF +:10CFF00001BE0B78012B07D98B7F002B09D04B6822 +:10D00000013B062B05D903E04B68083B082B00D9F0 +:10D0100001BE8B68053B042B00D901BE4B69FF2B79 +:10D0200000D901BE8B69FF2B00D901BE8B7C002B80 +:10D0300006D00B78002B02D18B68092B74D001BE6F +:10D040004C6B964B1C4200D001BECC6B944B1C42E7 +:10D0500000D001BE0B78022B6AD04D68013D0B7FDA +:10D06000002B6AD080235B028C68082C67D8802450 +:10D07000240123430F242C4023438024A40423436E +:10D0800003600C6B03681B055BD580239C4200D3B7 +:10D0900001BE8C6B03681B0555D580239C4200D3D1 +:10D0A00001BE4C6A03681B054FD580239C4200D308 +:10D0B00001BE0B781B06C024A404234003644B7FED +:10D0C000002B44D040238C7C002C42D08024E400F0 +:10D0D00023430C7C002C3ED08024640023434C7CF2 +:10D0E000002C3AD08024A4002343CC6A013C2404C1 +:10D0F000F0252D032C4023434D7B013D07242C407C +:10D1000023438D7B2D0130242C40234383640B7BF0 +:10D11000002B24D080246400CB7B002B21D10B7802 +:10D12000022B46D000231EE08B7B002B88D086E7A5 +:10D130008B7F002B91D1002591E7002394E70024F9 +:10D1400097E74023A2E74023A8E74023AEE7002368 +:10D15000B9E70024BCE70024C0E70024C4E70024AA +:10D16000DAE780239B001C438D68013D0F231D409F +:10D170002C43C026B60084514D69FF242C408D6994 +:10D180002D04FF273F043D402C43C425AD004451EE +:10D19000CC6A85592B4003339C4201D3102C00D913 +:10D1A00001BECB7F002B07D00B78012B5FD0002571 +:10D1B00003E080239B00D6E700254C7B013C07233E +:10D1C00023402B438D7B2D0130242C40234343648B +:10D1D0000B7B002B4ED080256D008C68013C0F230B +:10D1E00023402B430C78012C46D000242343802479 +:10D1F000A40003510C6BFF232340C124A40003515E +:10D200002023CB5C002B3AD080239B0421240C5D8F +:10D21000012C36D00024234328240C5D012C33D06C +:10D22000002423434D6AFF2425402B4303658B6B69 +:10D230001C4081239B00C4504B6B1A4C23401A4C5A +:10D240000351CB6B194C2340194C0351002A22D0B7 +:10D250000023536013609360D3601362D3625363FF +:10D26000897F3033D154134B93630020F0BD802568 +:10D270006D00A2E70025B0E780246402B6E7002332 +:10D28000C4E780246404C6E780246402C9E70A482E +:10D29000ECE70948EAE70020E8E7C04692F4FFFF20 +:10D2A0008CF8FFFF6D0B0000C80F00007307000033 +:10D2B000880F0000EFCDAB000160AA00114B0360A6 +:10D2C0000F3B0364002383640822FF32C0218900DE +:10D2D0004250043143500C31435043641139FF39FB +:10D2E0004250FD3283500365074A8350074A8350FA +:10D2F000074A8350074A8350074A8350074A83509E +:10D300007047C0460F000003C80E0000880E0000E2 +:10D31000C80F0000880F0000080F0000480F000031 +:10D3200003685B005B080360002904D000234B60A6 +:10D330000B600B62CB627047F0B5C64600B5804605 +:10D340000F0016001C1E10D0A56B1C4B9D4200D078 +:10D3500001BE002F01D0002E00D101BE002F01D050 +:10D36000002E04D180BCB846F0BD01BEECE74046BB +:10D37000FFF741FDA760E6600023236163618642F9 +:10D3800017D3461E43461B681B0514D580239E42B7 +:10D3900000D301BEC120800043461B58FF218B43B0 +:10D3A00031400B4342461350054B01224146CA50BF +:10D3B000D8E7013EE6E74023E9E7C046EFCDAB0002 +:10D3C000C80F000008694B69834202D84B69C01A34 +:10D3D0007047CB684A699B1A1818F9E7F0B5C6463A +:10D3E00000B507000D00FFF706FD8046C2239B0035 +:10D3F000FE58F605F60D2C6934E0002438E06B6B1E +:10D40000002B01D0082098476B69A34233D1204BF1 +:10D410000022FA50002C1ED0013C2C61EC6829003F +:10D420003800FFF7CFFF201A804511D9002800D01F +:10D4300001383B681B0528D58023984200D301BEE4 +:10D44000C12189007B58FF229343024013437B5044 +:10D4500080BCB846F0BDEC68013CDEE7A96863001B +:10D46000CA52013E002ED8D00134EB68A342C4D08A +:10D470006B69A342C3D0D0239B00FA58403BFB58B2 +:10D480001B07EBD4AB681A55EBE74023D5E7C04642 +:10D49000C80F0000486870470868704770B5046896 +:10D4A000466802292ED0082933D0012902D01E4D0A +:10D4B000280070BD31002000FFF7EEFFC00701D546 +:10D4C000194DF5E731002000FFF7E4FFC00727D42E +:10D4D00082229200A358DB05DB0DA158C90B012263 +:10D4E0000A409B18002B1DD1C2239B00E358DB058B +:10D4F000DD0D002B01D00C4DDAE731002000FFF7E5 +:10D500000FFFD5E7226880231B0613432360002505 +:10D51000CEE7226880231B06134323600025C7E75C +:10D52000014DC5E7004DC3E7FF00420070B50400A0 +:10D530000D00E0231B01C3581B0741D54C4BC258BB +:10D54000C8239B00110019401A420BD06B680B4393 +:10D550006B60FC231B01C150C3586B6B002B01D0C7 +:10D5600010209847424BE3581B0508D56B68802272 +:10D57000120113436B60FC231B01E250E3583C4B48 +:10D58000E358DB070ED5EB69002B5DD1AB68002BB0 +:10D5900003D029002000FFF721FFFC231B010122FB +:10D5A000E250E358324BE3585B0709D56B6B002B15 +:10D5B00001D040209847FC231B010422E250E3588D +:10D5C000E0231B01E3585B073DD52A4BE258A0231B +:10D5D000DB00110019401A420BD02B680B432B6063 +:10D5E000F8231B01E150E3586B6B002B01D0202086 +:10D5F0009847204BE358DB072BD41E4BE3589B0581 +:10D6000013D52B68012B2ED0F8231B01802292000A +:10D61000E250E3582B68012293432B600023EB6216 +:10D620006B6B002B01D002209847124BE358DB06AE +:10D6300009D56B6B002B01D080209847F8231B0184 +:10D640001022E250E35870BD29002000FFF74CFC87 +:10D65000A3E729002000FFF7DFFBF8231B010122CD +:10D66000E250E358C9E7044B0022E250D2E7C0463B +:10D67000CC0F00008C0F0000880F0000F0B5C646EC +:10D6800000B58C680A688423C558753B2B40082573 +:10D69000ED1A2300AC4226D92B0024E055782D0248 +:10D6A00016783543D678360697783F043E4335439F +:10D6B0009827C55155792D0216793543A846D67954 +:10D6C000360695792D042E4345463543C551D2186B +:10D6D000E41A8423C558753B2B400825ED1A230016 +:10D6E000AC4200D92B00002B4CD0082B31D89D0028 +:10D6F0002E4E7559AF46167890254651E7E7537878 +:10D700001B0215782B43942543510223DFE75378FE +:10D710001B0215782B43D5782D06967836043543B1 +:10D720002B43982543510423D1E753781B021578E6 +:10D730002B43D5782D069678360435432B43982510 +:10D74000435153791B0215792B43942543510623EA +:10D75000BDE753781B0215782B43D5782D069678B4 +:10D76000360435432B439826835153791B02157990 +:10D770002B43D5792D0697793F043D432B438351A5 +:10D780000823A4E70A608C60002C0CD1F924E40083 +:10D7900003590122934303518A61CB69002B02D0C4 +:10D7A000CB690120984780BCB846F0BD285C0110C9 +:10D7B000F8B50E004C69CB68C42282580F21114085 +:10D7C00022008C421CD90A001AE0D8254159197050 +:10D7D0000F0A5F700F0C9F70090ED97041591971B3 +:10D7E0000D0A5D710D0C9D71090ED9719B18A41A5B +:10D7F000C42282580F2515402200AC4200D92A00CD +:10D80000002A63D0082A4ED895003A4949598F46D4 +:10D81000D02141581970E9E7D42141581970090AFB +:10D820005970E3E7D42141581970090A5970D02181 +:10D8300041589970DAE7D821415819700D0A5D7086 +:10D840000D0C9D70090ED970D0E7D8214158197080 +:10D850000D0A5D700D0C9D70090ED970D0214158D4 +:10D860001971C3E7D821415819700D0A5D700D0C6C +:10D870009D70090ED970D42141581971090A597146 +:10D88000B4E7D821415819700D0A5D700D0C9D70D8 +:10D89000090ED970D42141581971090A5971D02142 +:10D8A00041589971A2E7D82142581A70150A5D7043 +:10D8B000150C9D70120EDA7042581A71110A5971C6 +:10D8C000110C9971120EDA7108228FE7F3607461FE +:10D8D000002C0DD1F922D200835802218B438350B2 +:10D8E0000323B361336A002B02D0336A03209847C5 +:10D8F0007461F8BD4C5C011010B500283BD00029C4 +:10D900003BD0002B3BD004685A6200221A85002CC1 +:10D910002DDBF922D20083580324A34383500B78D4 +:10D92000012B00D901BE0B7A032B00D901BE4B6835 +:10D93000072B00D901BE0B7B012B00D901BE0A6861 +:10D94000012313408A681203C024A4012240134318 +:10D950004A681204E024E40222401343CA68120613 +:10D96000802149040A4013430360002010BDE407EE +:10D97000CFD50020FAE70348F8E70248F6E7014868 +:10D98000F4E7C0460400B200082904D88B235B00EA +:10D99000CB40DB0700D401BE032A00D901BE042915 +:10D9A00020D008D801290DD002291AD188231B01C3 +:10D9B0009C4660440AE0082913D198231B019C4629 +:10D9C000604403E080231B019C466044002808D08B +:10D9D000036807490B401204C02189020A4013431F +:10D9E0000360704790231B019C466044EEE7C046ED +:10D9F000FFFFFCFFF8B5DE4657464E464546E0B50C +:10DA000007009A460AAB40CB1B789B460CAB1B78B1 +:10DA1000101FC0B2FA2800D801BE58460438C0B260 +:10DA2000FA2800D801BE581EC0B2012804D9042B20 +:10DA300002D0082B00D001BE002E02D05046002894 +:10DA40001CD0002E02D05846FF2819D01B02F0200F +:10DA50000001034099460E9B5D6A1204C0239B029D +:10DA60001A404B461A430A43002E0BD10D9BDB078D +:10DA70001B0C1A433A65002400200CE001BEE0E7CD +:10DA800001BEE3E70023F4E703433B650134E4B25E +:10DA9000002D1FD128002100B44225D2154B9842F9 +:10DAA00022D07B6C0422100018401A42F0D1534659 +:10DAB0005B5C4A46134398465A461204C0239B02B5 +:10DAC0001A40434613430131B142DDD30D9AD007CA +:10DAD000000CD9E7012002F021FF013D002D01D00B +:10DAE0000020D8E70348D6E7F0BCBB46B246A946BB +:10DAF000A046F8BD0200B20070B58CB00500181F3A +:10DB0000C0B2FA2800D801BE002A34D0686C0426BE +:10DB100034000440064231D11B04C020800203407F +:10DB2000501E0004000C03438020C00203432B65F9 +:10DB3000002925D0109B5E6A01910392002308936F +:10DB400002330793200006E0012002F0E7FE013EC9 +:10DB5000002E0ED02000079B022B0DD1094B9842BE +:10DB60000AD001A92800FFF789FD002EECD1300072 +:10DB7000F1E70448EFE704480CB070BD0348FBE749 +:10DB80002000F9E70200B2000400B2000100B20078 +:10DB900070B58CB00500181FC0B2FA2800D801BEBD +:10DBA000002A34D0686C042634000440064231D187 +:10DBB0001B04C02080020340501E0004000C0343DD +:10DBC0008020000303432B65002925D0109B5E6A4B +:10DBD000049106920023099304330793200006E082 +:10DBE000012002F09BFE013E002E0ED02000079B7C +:10DBF000042B0DD1094B98420AD001A92800FFF748 +:10DC0000D7FD002EECD13000F1E70448EFE70448DF +:10DC10000CB070BD0348FBE72000F9E70200B2003A +:10DC20000400B2000100B20010B5030000290DD0BD +:10DC3000426C042420001040144209D10139090427 +:10DC4000090CC02212030A431A6510BD0148FCE703 +:10DC50000148FAE70400B2000100B20000230B60A3 +:10DC60004B608B60CB600B614B618B6102688023E2 +:10DC70001B0613430360704770B58D69AA682B6A51 +:10DC8000CC68FF26B44384600C696442B443C4602A +:10DC90002D68013D03242C404969002901D08021D1 +:10DCA000490021430162002A33D01468611C67D007 +:10DCB000FF21214014792404C025AD022C402143CA +:10DCC000802424062143016451790904C024A4025C +:10DCD000214041649468611C54D0FF212140147B91 +:10DCE0002404C025AD022C40214380242406214376 +:10DCF00081641169002905D001391F240C4080215D +:10DD000009062143C164127D1204C02189020A4020 +:10DD10000265002B33D019684A1C35D0FF220A4017 +:10DD200019790904C024A40221400A43802109066C +:10DD30000A4302665A791204C02189020A404266E7 +:10DD400099684A1C22D0FF220A40197B0904C0248A +:10DD5000A40221400A43802109060A4382661A6907 +:10DD6000002A05D0013A1F211140802212060A43E1 +:10DD7000C2661B7D1B04C02292021340036770BD64 +:10DD80000021A0E70021B3E70022D2E70022E5E767 +:10DD9000F0B5DE4657464E464546E0B583B0061E12 +:10DDA000904600D1B6E0002900D1BBE04F68002FBB +:10DDB00000D1B9E0002A00D1B8E00B689946002BE9 +:10DDC00003D0002500239A4663E05948A3E0584851 +:10DDD00007E0082B04D198231B019B46B3440CE0B9 +:10DDE00053485346002B00D195E0B220000418435D +:10DDF00091E080231B019B46B3445B46002B00D17E +:10DE000086E01B684B4A1340227A1204C021890223 +:10DE10000A4013435A4613606368042210001840F6 +:10DE20001A4261D1A3691B68013B032B00D901BED3 +:10DE300000282DD163689B072AD53368DB0727D4D8 +:10DE4000E068216904F0DCF8002900D001BE2369F4 +:10DE500080225202934202D35A1E1A4200D001BEBF +:10DE600021005846FFF708FF636801221A40DB08CB +:10DE70001B02802149000B401343227A1204C02167 +:10DE800089020A4013438022120613435A46136044 +:10DE90000135A94538D9AB00FC58002CF8D02278C0 +:10DEA000531EDBB2012B04D9042A02D0082A00D069 +:10DEB00001BE237A032B00D901BEA369002B25D014 +:10DEC0002378042B0BD000D983E7012B91D0022BB0 +:10DED00000D07CE788231B019B46B3448DE7902349 +:10DEE0001B019B46B34488E7A1692278237A404608 +:10DEF0000090300001F01AFB002893D00823AB40BB +:10DF000052461A4392468DE700206AE7084868E7C0 +:10DF1000074866E7064803B0F0BCBB46B246A946D0 +:10DF2000A046F0BD0248F6E70148F4E70048F2E7F2 +:10DF30000400B200FFFFFCFF10B5002134E00B002D +:10DF40001033DB0100221A50CB01C318184C1C19E6 +:10DF50002260184C1C192260822424011C192260A2 +:10DF6000842424011C192260134C1C192260134CB8 +:10DF70001C192260124C1C192260852424011C19D2 +:10DF80002260862424011C1922600E4C1C19226078 +:10DF90000D4C1C1922600D4C1C1922608724240191 +:10DFA000A44663441A6001310329C8D910BDC04694 +:10DFB000080800000C0800004408000048080000A1 +:10DFC0004C08000064080000680800006C080000AD +:10DFD00030B587B013008A69D468002C0ED00D7854 +:10DFE000227921780493012303930295FE33019350 +:10DFF00000230093FFF7FEFC07B030BD0048FBE7AD +:10E000008000B20030B587B0040008001500190088 +:10E0100002780A9B0493002303930292FF22019249 +:10E02000009300222000FFF7E5FC002801D007B094 +:10E0300030BD0A9B00930023012229002000FFF736 +:10E04000A7FDF4E710B584B00E236B4401241C80B7 +:10E050008C69A36A002B0ED01B7800920E226A44B2 +:10E06000FFF7D0FF002806D1A26BD2B20E2169447F +:10E070000B8813400B800E236B441888431E984175 +:10E08000C0B204B010BD0000F0B583B0019100280B +:10E0900008D087697B6893421ED9396D002903D067 +:10E0A000002004E001BEF4E70C4813E00130FB6CF3 +:10E0B00083420ED98300CC5825686668E3687343B1 +:10E0C0005B19AA42F2D39A42F0D2019B1C60002055 +:10E0D00000E0024803B0F0BD0148FBE70600B200D3 +:10E0E0000400B200F0B58BB006900F001600079345 +:10E0F000002908D0002E36D0BC6965690023099339 +:10E100002068002205E001BEF4E71202F15C0A4338 +:10E1100001339842F9D809A93800FFF7B5FF002D5F +:10E120001BD02A79FF2A1AD0104B984219D0002808 +:10E1300011D1099B19893B78C9B207980490012035 +:10E140000390029301922368009333000698FFF72F +:10E1500051FC0BB0F0BD2988EDE70548F9E704480C +:10E16000F7E70348F5E70148F3E7C0460400B200CB +:10E170008000B200002901D00885704701BEFBE78E +:10E18000F0B5D6464F464646C0B505000F00140010 +:10E190001E001A00FFF756FF002E0AD0338D984656 +:10E1A000002B21D000285BD0A34214D3A3B2984601 +:10E1B00011E001BEF2E7404602F0B0FB3200390048 +:10E1C0002800FFF73FFFA0450CD24346E41A002881 +:10E1D00046D0002C44D02B68DB07ECD4404602F03C +:10E1E000A7FBEBE70024F2E7002839D0A308994603 +:10E1F000204B9C4205D84B46002B18D10123994651 +:10E2000015E01D4B994612E0504602F06DFB40466A +:10E2100002F084FB320039002800FFF713FF4C4561 +:10E220001CD94B46E41A00281AD0002C18D0FA2129 +:10E230008900484603F05EFE8246FA21890048467E +:10E2400003F0DEFE8BB298462B68DB07DCD4504629 +:10E25000FCF7E9FF404602F06BFBDBE70024E2E756 +:10E26000002805D10020E0BCBA46B146A846F0BD62 +:10E270000248F8E703093D0040420F000200B200E7 +:10E28000F0B5DE4657464E464546E0B58BB0834670 +:10E29000884691469A46149D00230993002919D077 +:10E2A0005346002B18D043469A6996684B465B1933 +:10E2B0005268934200D977E05B461B680122110047 +:10E2C000194007911A4209D1384C20004446159B49 +:10E2D000984613E001BEE3E701BEE4E7F2F715F963 +:10E2E0000790F1E7002802D1316900293ED10028CA +:10E2F00040D0002847D1ED1BB944BA44002D42D08C +:10E300002F0080235B029D4200D91F00A3691B6878 +:10E310004A46013B09A9CA54120A002BF9D1A36944 +:10E32000069320783279317843460493002303938F +:10E33000029070790190069B1B68009309AB5846C8 +:10E34000FFF758FB0028CDD1B1684B1CCAD020780C +:10E35000327BC9B243460493002303930290FF200B +:10E36000019000935846FFF745FBBBE75846FFF77F +:10E370005BFCBCE7337D424600923A00514658466A +:10E38000FFF706FCB5E704005B461B68DB0707D414 +:10E3900020000BB0F0BCBB46B246A946A046F0BD7B +:10E3A0000798F2F7B6F8F3E7004CF1E70400B20083 +:10E3B000F0B5DE4657464E464546E0B58BB083463F +:10E3C000884617009946149E0023099300291AD005 +:10E3D0004B46002B19D043469A69536A9A46136AF2 +:10E3E0001C00BB195268934200D99AE05B461B6837 +:10E3F00001221100194007911A4208D14A4D280004 +:10E400005546A24614E001BEE2E701BEE3E7F2F79B +:10E410007CF80790F2E73400159A41465846FFF71A +:10E42000D7FD00280FD000286AD1A1443F19361B20 +:10E43000002E65D02900380003F0E2FD7318AB42CE +:10E44000E9D36C1AE8E743469B691B683A00013B35 +:10E4500009A9CA54120A002BF9D143469B690693B5 +:10E46000424610785246127951460978159B04931A +:10E47000002303930290534658790190069B1B6832 +:10E48000009309AB5846FFF7B5FA002803D153466D +:10E4900099684B1C15D1002803D1534619690029EE +:10E4A00020D1002822D00028BDD143469B699A6A1A +:10E4B000002AB8D09A6C159B41465846FFF760FE7B +:10E4C000B1E74346187853461A7BC9B2159B0493AB +:10E4D000002303930290FF20019000935846FFF71A +:10E4E00089FAD8E75846FFF79FFBDAE753461B7DCA +:10E4F000159A0092220049465846FFF7FDFAD2E7E6 +:10E5000005005B461B68DB0707D428000BB0F0BC96 +:10E51000BB46B246A946A046F0BD0798F1F7F9FF01 +:10E52000F3E7014DF1E7C0460400B200F0B5DE4666 +:10E5300057464E464546E0B589B007000E00150027 +:10E540000093129A9046EC18631E019300230793E0 +:10E550000693002914D0B3699B469B699A465B4693 +:10E560001B6C02935B465B68019A93420AD8794C14 +:10E57000200009B0F0BCBB46B246A946A046F0BD9B +:10E5800001BEE8E7002305932A0005A93000FFF744 +:10E590007BFD002836D1059B002B33D01C68281B3F +:10E5A000DD68290003F0A6FC45436519019B9946E7 +:10E5B0001A0005A93000FFF767FD041E43D1059B33 +:10E5C000196801914A46521A0132DB6899461900CE +:10E5D0000392100003F08EFC00904946039803F06C +:10E5E0000FFD002902D0009B01330093009B4A4697 +:10E5F0005343019A94466344013B01935B1B0133EF +:10E60000009320E05146280003F0FAFC002905D0D1 +:10E610005146280003F06EFC554645435146200004 +:10E6200003F0EEFC002909D001985044013851460E +:10E6300003F060FC53465843431E0193019B5B1B50 +:10E640000133009300245B465B68019A934200D833 +:10E650007DE03B6801221100194003911A4201D16B +:10E66000B94648E0F1F751FF0390B94643E0002C6A +:10E670002ED145453DD24A4631003800FFF7A8FC6F +:10E68000041EF4D15B461B682A00013B07A9CA544B +:10E69000120A002BF9D14B460A0031003800FFF76F +:10E6A00021FD041EE3D1029B5A01D21A92009C461E +:10E6B0006244D2004B4631003800FFF761FD009BF9 +:10E6C000534536D9554452469B1A00930400CEE771 +:10E6D000C846B9460FE0019F43461293B8464F46DD +:10E6E0009946C6E7019F43461293B8464F4699465E +:10E6F000BFE7C846B946009B002B1FD02A0006A9D9 +:10E700003000FFF7C1FC041EE5D1069B1A69029296 +:10E71000DA6892461A685F6853465F43BF18013F44 +:10E72000019BBB42DED343461293B8464F469946FF +:10E730009FE7C846B94600940400DCE74F463B68B3 +:10E74000DB0700D414E70398F1F7E3FE10E7014C70 +:10E750000EE7C0460400B200C36A002B0BD0036B67 +:10E76000002B0AD0036B00221A7106290ED88900EB +:10E77000194B5B589F4601BEF1E701BEF2E701234A +:10E780005B42C363026B1360C26A1360704702236B +:10E79000C363036B01221A60C36A34321A60F5E75F +:10E7A0004023C363036B01221A60C36A04321A60F8 +:10E7B000ECE78023C363036B3E221A60C36A013215 +:10E7C0001A60E3E70223C363036B31221A60C36A52 +:10E7D00004321A60DAE7C046705C011070B58D69CA +:10E7E000AA682B6ACC68FF26B44384600C69644233 +:10E7F000B443C4602D68013D03242C4049690029BD +:10E8000001D08021490021430162002A33D01468DD +:10E81000611C67D0FF21214014792404C025AD027A +:10E820002C402143802424062143016451790904AA +:10E83000C024A402214041649468611C54D0FF218B +:10E840002140147B2404C025AD022C4021438024A8 +:10E850002406214381641169002905D001391F2450 +:10E860000C40802109062143C164127D1204C0219D +:10E8700089020A400265002B33D019684A1C35D042 +:10E88000FF220A4019790904C024A40221400A4346 +:10E89000802109060A4302665A791204C0218902BE +:10E8A0000A40426699684A1C22D0FF220A40197B1E +:10E8B0000904C024A40221400A43802109060A4316 +:10E8C00082661A69002A05D0013A1F211140802270 +:10E8D00012060A43C2661B7D1B04C022920213402B +:10E8E000036770BD0021A0E70021B3E70022D2E753 +:10E8F0000022E5E770B5050008220026002000E0B0 +:10E9000008328B790133DB00934216D3FF232B406F +:10E910008C5CA342F4D12C0AFF2323408C18E479A9 +:10E92000A342EDD18B185B78B342E9D38C18A4785D +:10E93000012CE5D11E001000E2E770BD70B50C009F +:10E9400015001E00FFF7D6FF00280AD024182379EF +:10E95000AB7063796B70A3792B70E3789B00337095 +:10E9600070BD00233370FBE7827852080323134005 +:10E97000012B07D0022B0BD0002B01D000207047B9 +:10E980000320FCE780235B04994203D90420F6E7C7 +:10E990000420F4E70320F2E7020040790002137933 +:10E9A0001843D3791B069279120413431843002BA2 +:10E9B00002DB0130C0087047033880231B06184370 +:10E9C000F9E7437A0B6000230B7102334B71037A32 +:10E9D0005B0908D1013B8B60027A1F2313400B6156 +:10E9E00002230B757047FF238B60FD3B0B73F3E72E +:10E9F000C37A0B6000230B714B71837A5B0908D1DA +:10EA0000013B8B60827A1F2313400B6102230B753D +:10EA10007047FF238B6000230B73F3E7C37B0B600E +:10EA200000230B7101334B71837B5B0908D1013BE0 +:10EA30008B60827B1F2313400B6101230B75704792 +:10EA4000FF238B60FE3B0B73F3E7437B0B600023DC +:10EA50000B714B71037B5B0908D1013B8B60027B1F +:10EA60001F2313400B6101230B757047FF238B603D +:10EA700000230B73F3E703230B6000230B714B712F +:10EA8000012252428A600B610B75704710B50C0071 +:10EA90001900012C07D0032C0FD0012A01D9012322 +:10EAA00002E0002300E00023002B10D083789A06B8 +:10EAB00005D45B0607D4FF2015E00023F4E7FFF739 +:10EAC00080FF05200FE0FFF793FF04200BE0837821 +:10EAD000DC0601D5002A07D1DB0701D5002A07D1C2 +:10EAE000FFF7C9FF012010BDFFF798FF0320FAE7E9 +:10EAF000FFF7ABFF0220F6E70368052907D8890076 +:10EB00000D4841588F469B0601D5EC231360704792 +:10EB1000DB06FCD56C231360F9E71B07F7D5BC2394 +:10EB20001360F4E75B07F2D53C231360EFE79B0724 +:10EB3000EDD50C231360EAE78C5C01102823C35C3D +:10EB40001B09012098407047F0B5DE4657464E46F7 +:10EB50004546E0B593464F6A1B38430898460F2652 +:10EB60003E40B2460021002510E001255246541CCB +:10EB700001336B434A0094468C44624692009446AB +:10EB8000DC4463435B0062469360013103291BD878 +:10EB9000CB005B1A3C00DC4023099946640A03263B +:10EBA000300020401F234A4613402642DDD0012872 +:10EBB00006D0022806D00328D8D1FA25AD00D5E723 +:10EBC0001025D3E78025D1E743465B0043449B00F3 +:10EBD0000C3B5B449868F0BCBB46B246A946A046D5 +:10EBE000F0BD30B5456A836A590F032004000C401C +:10EBF0001B0E1F221A400F232B40084207D0012C66 +:10EC00000CD0022C0DD0032C0ED0002000E01020E0 +:10EC10000133013250435843400030BD8020400052 +:10EC2000F6E7FA200001F3E7FA200002F0E7816A34 +:10EC30000B0A1F221A400F230B40890406D4082018 +:10EC40000133013250435843400070474020F7E7FA +:10EC5000062303600023037170470423036000232D +:10EC60000371704702230360002303714371012283 +:10EC7000524282600373036103757047122303607D +:10EC800000230371437101225242826003730361C6 +:10EC9000037570473423036000230371437101221D +:10ECA00052428260037303610233037570473E234F +:10ECB0000360002202713C3B4371012149428160A3 +:10ECC000037302610375704710B50368042922D0ED +:10ECD00009D80139C9B2022904D85B062BD5100026 +:10ECE000FFF7CCFF10BD0529FCD1D90507D41906C3 +:10ECF00009D45B060BD51000FFF7C0FFF2E7100048 +:10ED0000FFF7D5FFEEE71000FFF7C4FFEAE71000BA +:10ED1000FFF7A8FFE6E7190605D45B0607D5100044 +:10ED2000FFF7ACFFDEE71000FFF7B4FFDAE71000F3 +:10ED3000FFF798FFD6E71000FFF794FFD2E705230F +:10ED40000360002303717047602303600023037195 +:10ED50007047F0B505000368042B07D01D200B5C3D +:10ED6000FF2B2BD1222828D80230F8E74369012055 +:10ED7000404218604B785B080F261E400023042B8E +:10ED800007D801249C4030002040844201D0013348 +:10ED9000F5E7032B1FD81F1D0020032807D8061DE9 +:10EDA00044002418A4008E5D16550130F5E76A6909 +:10EDB000C95D116058001D3005E00020002802D018 +:10EDC0006B690A5C1A60002806D06A690023137117 +:10EDD0006A69537103E000206B69FF221A71F0BD6C +:10EDE00070B5002200240FE023001C33C65C5300E2 +:10EDF0009B189B00CB180125B5405D6025001D3593 +:10EE0000455D1D7002340132032AEDD970BD00004A +:10EE100070B586B005000C001E004B0628D08B078D +:10EE200010D5D368002B21D01A7919780A9B049346 +:10EE3000012303930296FE33019300230093FEF710 +:10EE4000D9FD00E00020A40713D0002811D10A9BAF +:10EE50000493012303930296FE330193002300934E +:10EE60000022B7212800FEF7C5FD02E00020EAE7F6 +:10EE7000014806B070BDC0468000B200F0B587B052 +:10EE800005000C0010000A794E7909780E9F04974E +:10EE900000270397029301960323009303002800A1 +:10EEA000FEF7A8FD002801D007B0F0BD21692800B9 +:10EEB000FEF7BAFE0028F7D1237D0E9A00920C9A35 +:10EEC0000D992800FEF764FEEEE70000F0B5DE467F +:10EED00057464E464546E0B58DB083460D009146F7 +:10EEE000099316AB1B780893002303E00AAA0021BC +:10EEF000D1540133032BF9D9724E002400231F0093 +:10EF00003000179B98463CE003220BE0042209E006 +:10EF1000002207E0A018C01A2818C6780AA8C6540C +:10EF20000133DBB29342F5D353461B780F201840D0 +:10EF3000824603000F2843D04346049300230393E3 +:10EF400008980290019300920AAB00225846FEF7FF +:10EF500051FD002802D15346002B34D1002837D070 +:10EF600000280BD17B00DBB21F2204A98C4662442F +:10EF70001778079A17407A1E97411F4308344C456B +:10EF80004BD82A5D02210B00134011422CD1621C88 +:10EF9000A95CE21CAA5C07921F2204A88446624472 +:10EFA00000201070A21CA8188246AA5C9209012AAF +:10EFB000AAD0022AAAD0002AAAD0099A1268B1E7D8 +:10EFC000073B9A46B8E751465846FEF72DFEC5E77F +:10EFD00043460093002301221F2104A88446614474 +:10EFE0005846FEF7D5FDBBE7B8460600002E17D001 +:10EFF000002E5CD12B199B780133DBB29B46099B19 +:10F000005A46DA64002A5AD03700B24600220796E0 +:10F0100026001400A846994618E0B8462A4EE5E7AF +:10F02000424649462B195B789342E1D02B199B78D5 +:10F0300002339B00E418A142F4D2234ED8E7E960E2 +:10F04000380002F057FF68600134E4B25C452DD20D +:10F05000BA440436434698199B5D0F21194001229A +:10F060000023114207D15200D2B20133DBB2042B8C +:10F07000F7D9154A079207683F0A01373F024A4607 +:10F08000116DA2008D5852462A605A00D3189B0079 +:10F09000189AD2181899CB5CAB6093682B615168B1 +:10F0A000B942CCD9EF6001236B60CDE7079E3000F9 +:10F0B0000DB0F0BCBB46B246A946A046F0BD014E1D +:10F0C000F5E7C0460600B2000700B2007047000036 +:10F0D000F0B5DE4657464E464546E0B5D9B0050088 +:10F0E0000C1E0492059317D0A369002B16D00023A1 +:10F0F000932204A98C4662441370922262441370D6 +:10F10000912262441370A76923789846237A9A461D +:10F110007B6B9946002307E001BEE5E701BEE6E709 +:10F1200038AA0021D15401337F2BF9D9002308E0FC +:10F13000002237A9CA5436A9CA5435A9CA54013382 +:10F14000DBB2022BF4D9524641462800FEF71CFCE4 +:10F1500041462800FFF7BAFF4B46002B00D174E16F +:10F16000629B029338AB019338230093434637AA3E +:10F1700049462800FFF782FE061E00D0CAE138ABE0 +:10F180001B78532B01D0C74EC5E138AB5B78462BBB +:10F1900001D0C44EBFE138AB9B78442B01D0C14EA7 +:10F1A000B9E138ABDB78502B01D0BE4EB3E138ABC0 +:10F1B0005B79012B01D0BB4EADE138A90B790793E8 +:10F1C000932304AA944663449B46FF2037AA000277 +:10F1D000FFF7B4FB5B461B78002B01D1B14E9AE1DF +:10F1E000922304AA9446634436AA38A9AE48FFF78E +:10F1F000A5FB912304AA944663449B4635AA38A9EB +:10F20000AA48FFF79BFB5B461B78002B02D100222C +:10F21000FA643A65932204A98C4662441278802AE3 +:10F2200000D938E1802B00D937E1002E00D00DE164 +:10F23000FB68002B6AD0629B029338AB9B4601931C +:10F24000932304AA944663441B780093434637AA49 +:10F2500049462800FFF712FE069029A95846FFF7F5 +:10F26000BFFD5846FFF798FB010078605846FFF74E +:10F270007BFB3860F868FFF7EBFC3869FFF7EDFCC3 +:10F280000123BB63B86AFFF75AFD049B012B0BD91E +:10F29000079B002B4BD05A463A23D15C0909333BDC +:10F2A00019403800FFF758FAF869FFF74DFDBB68C1 +:10F2B0009B46079B002B3FD038A8FFF73FFC7862A6 +:10F2C00080235B00984200D97B6238A8FFF789FC55 +:10F2D000786438A8FFF7ABFCB8645B46049A5146E3 +:10F2E00038A8FFF7D3FB82463A68042A00D096E09C +:10F2F000FF2832D038AA3F23D15C629B009343465B +:10F300003A002800FFF784FD069026E03B69002BB9 +:10F3100091D17B69002B8ED1FB69002B8BD13B6A8D +:10F32000002B88D1BB6A002B85D101BE83E70599EC +:10F330003800FFF711FAB7E780235B007B62FA23FE +:10F340001B027B645A4BBB64059B002BC5D1049305 +:10F35000C3E708AB00229A5501367F2EF9D9069BE8 +:10F36000002B39D0069E002E48D00120431E38AA1B +:10F37000D25C01239340BB61079B002B5BD1FA2336 +:10F380009B003B643B6D002B60D0629B029338ABCB +:10F390000193912304AA944663441B780093434647 +:10F3A00035AA49462800FFF769FD061E4ED1912374 +:10F3B00004AA944663441A7829AB0293629B019392 +:10F3C000434600933B0038A92800FFF77FFD394BE7 +:10F3D000984236D0060039E0629B029308AB019355 +:10F3E000922304AA944663441B780093434636AAAA +:10F3F00049462800FFF742FD0690B3E75A465146BA +:10F4000008A8FFF779FB3A6A514608A8FFF75CFCA9 +:10F4100029AA08A93800FFF79CFC069E08E0386A74 +:10F42000FFF720FC29AA38A93800FFF792FC069EB6 +:10F430000028A7D09AE729AA38A9FFF785FB3864E6 +:10F44000A0E70023FB643B6502E0164E002E62D16C +:10F4500063689B075FD52B68DB075CD4E068216994 +:10F4600002F0CEFD002900D001BE236980225202A5 +:10F47000934202D35A1E1A4200D001BE4346042BC7 +:10F4800043D01BD8012B22D0022B08D188231B018B +:10F490009C4665441FE0084ED8E7074ED6E7002596 +:10F4A0001FE0C0460500B20084FF000081FF00009D +:10F4B000A08601000600B2008100B200082B04D132 +:10F4C00098231B019C46654405E0002509E0802344 +:10F4D0001B019C466544002D03D021002800FFF746 +:10F4E0007DF9636801221A40DB081B028021490074 +:10F4F0000B401343227A1204C02189020A401343AD +:10F500008022120613432B6005E090231B019C46CA +:10F510006544E0E7044E300059B0F0BCBB46B2464B +:10F52000A946A046F0BDC0460500B20010B58AB09D +:10F53000002911D06C462273002204922375069292 +:10F540000792089209910C9B00930023033203A9B0 +:10F55000FFF7BEFD0AB010BD01BEEBE710B50028F5 +:10F5600014D107292ED8FF2A2ED81A4B1868836881 +:10F570007824005B1B188900C9180B6816480340E3 +:10F580001206120C1A430A60002002E0012801D082 +:10F59000124810BD0F2919D880235B029A4217D256 +:10F5A0000C4B186883687A24005B1B188900C91803 +:10F5B0000B680B48034012020A48024013430B60D9 +:10F5C0000020E6E70548E4E70448E2E70348E0E70F +:10F5D0000248DEE70C660108FF00FFFF01004A0059 +:10F5E000FF0000FF00FFFF00F0B5022803D0032852 +:10F5F00028D02D48F0BD03294AD8802040028242FD +:10F6000048D21F2B48D88900284E306884687C2552 +:10F61000405B24180C192068254F38401202254FF2 +:10F620003A400243226030688268405B12188918B1 +:10F630000A68F8208243D800FF23034013430B607D +:10F640000020D7E7002929D180204004824227D218 +:10F650001F2B27D88C00154884460568A8687E278C +:10F66000ED5B401920180568FF26354012022A4339 +:10F670000260624610688268C05B1218A2181068A7 +:10F68000F824A043DB001E40304310600800B1E7BF +:10F690000548AFE70448ADE70348ABE70248A9E7F0 +:10F6A0000148A7E70048A5E701004A000C660108E9 +:10F6B000FF0000FF00FFFF0030B51A4B1B6842241B +:10F6C0001C5D844228D9032928D8002901D1072AA2 +:10F6D0000FD9012905D0022906D0032907D01248E5 +:10F6E0001BE00F2A05D9F6E7032A02D9F5E7002A1D +:10F6F00016D175241D5DA940723CAC402140742494 +:10F700001C5D22409C680A43C0239B009C466044C9 +:10F7100080000251002000E0034830BD0248FCE7B1 +:10F720000148FAE70C66010801004A00F0B50B0039 +:10F73000032835D8002801D107290FD9012805D081 +:10F74000022806D0032807D0174828E00F2B05D938 +:10F75000F6E7032B02D9F5E7002B23D1134A1468EF +:10F760007722A15C743A15008D4029007425655DEF +:10F770007626A65D2F00B74039437526A65DB040BA +:10F78000B240024011432B40A068194380231B065E +:10F790000B438022D2008350A3689B580020F0BD09 +:10F7A0000148FCE70048FAE701004A000C6601083E +:10F7B00010B5032828D8002801D107290FD901281E +:10F7C00005D0022806D0032807D011481BE00F29D6 +:10F7D00005D9F6E7032902D9F5E7002916D10D4B23 +:10F7E0001A687523D45CA040723BA3400340742088 +:10F7F000105C014090680B438022D20513438022A5 +:10F80000D2008350002010BD0148FCE70048FAE711 +:10F8100001004A000C660108064B1B681A68882123 +:10F820005B58D218136804490B400002034313606D +:10F830007047C0460C660108FF00FFFF044B1A68C2 +:10F840001368882152589B181868000AC0B2704784 +:10F850000C660108012800D901BE054A1368054954 +:10F860000B400002C0218900084003431360704729 +:10F8700000002740FFFCFFFF10B5074B984200D95E +:10F8800001BE0649064A8B58064C2340024C2040D4 +:10F8900003438B5010BDC04601030000000026400A +:10F8A00004050000FEFCFFFF10B50449044A8B5814 +:10F8B000044C2340000403438B5010BD000026403D +:10F8C00004050000FFFF00FF0349044A8858802315 +:10F8D0001B0603438B5070470000264004050000C0 +:10F8E0000349044A8B585B005B088B507047C04645 +:10F8F000000026400405000010B50300032800D9CD +:10F9000001BE054CA021C90060580322904313405A +:10F910001843605010BDC04600002640064B1B68CF +:10F920001A6888215B58D21813681B021B0A00064C +:10F93000034313607047C0460C660108044B1A6805 +:10F940001368882152589B181868000E7047C046EB +:10F950000C660108064B1B681A688C215B58D2188C +:10F96000136804490B400002034313607047C0460C +:10F970000C660108FF00FFFF084B1A684023D35CA8 +:10F98000834209D9064AE0308000815880231B0653 +:10F990000B438350002070470248FCE70C660108C7 +:10F9A0000000264001004A00064B1A684023D35C41 +:10F9B000834205D9E0308000034BC058C00F704728 +:10F9C0000020FCE70C6601080000264000280ED04D +:10F9D000094B1A684023D35C83420AD9074AE030B6 +:10F9E000800083585B005B08835000207047044808 +:10F9F000FCE70348FAE7C0460C6601080000264011 +:10FA000001004A0010B50B4B1A684023D35C8342B7 +:10FA10000CD90F290CD8084CE030800003590F2274 +:10FA200093430A4013430351002010BD0348FCE7F1 +:10FA30000248FAE70C6601080000264001004A006F +:10FA4000064B1A684023D35C834200D801BEE030E5 +:10FA50008000034BC3580F20184070470C66010804 +:10FA60000000264010B50C4B1A684023D35C83423B +:10FA70000DD903290DD8094CE030800003593022FC +:10FA8000934309010A4013430351002010BD044869 +:10FA9000FCE70348FAE7C0460C6601080000264070 +:10FAA00001004A00074B1A684023D35C834200D808 +:10FAB00001BEE0308000044BC3581B0903201840EE +:10FAC0007047C0460C66010800002640034B1B69C6 +:10FAD00004201840431E9841C0B2704700002740E0 +:10FAE00010B504000A4A136808210B43136003E0B1 +:10FAF000012000F013FF013CFFF7E8FF002801D1CF +:10FB0000002CF5D1002C01D0002010BD0148FCE7ED +:10FB10000000274002004A00002070470020704784 +:10FB20000349044A885880231B0603438B507047BF +:10FB3000000026400C050000084AC0235B00D35893 +:10FB40000122100018401A4206D10449044A8B5879 +:10FB50005B005B088B5070470248FCE700002640C2 +:10FB60000C05000003004A00064A074BD358012247 +:10FB70009343002800D1002213430249024A8B50CC +:10FB80007047C046000026400C050000014B186875 +:10FB90007047C04640660108084AA623DB00D258D9 +:10FBA00003231340032B06D0044AA623DB00D358BB +:10FBB0000120184070470220FCE7C04600002640A4 +:10FBC00010B5FFF7E9FF022801D0002010BD014B5E +:10FBD0001868FBE744660108134B1A683E23D35CA0 +:10FBE00083421DD9042904D94B1EFF3B9BB2132B22 +:10FBF00018D8FF290CD91F220A400C490300C03332 +:10FC00009B005A50D030800004234350002008E06D +:10FC100007230B40D0308000044A8350002000E0CE +:10FC2000034870470248FCE70C66010800002640C4 +:10FC300001004A0003000C4A11683E228A5C82429D +:10FC400000D801BE1A00D03292000849505807224D +:10FC50001040042800D07047C0339B005A581F231F +:10FC60001340FC301843F6E70C66010800002640FC +:10FC700010B52A4B1A683E23D35C834200D801BEDC +:10FC8000FFF7D8FF88235B00984231D012D80228B2 +:10FC90002BD004D903280BD1FFF73EFF3CE000280E +:10FCA00039D0012802D1FFF771FF35E0002033E0A1 +:10FCB000002031E089235B00984229D01423FF33D0 +:10FCC000984206D1164A174BD358002B1DDB002053 +:10FCD00022E01223FF33984205D1FFF7F7FE0028F8 +:10FCE00010D1002018E0002016E0FFF769FF13E0B4 +:10FCF0000B4A0D4BD358002B01DB00200CE0802079 +:10FD0000000209E08020000206E08020000203E0FB +:10FD1000FFF704FF00E0054810BDC0460C6601086F +:10FD2000000026403C0500000C05000000127A008F +:10FD3000024AB023DB00D058C00F704700002640B5 +:10FD4000034AB223DB00D358012018407047C04655 +:10FD5000000026400B4BB120C00019580A4A114040 +:10FD6000802292050A431A50B021C9005A58520005 +:10FD700052085A5005495A58520052085A50002009 +:10FD80007047C04600002640FFFFFFCF8C050000F3 +:10FD900070B5041E00D175E0FFF7CAFF002800D03F +:10FDA00074E022688023DB029A4200D301BE2368FC +:10FDB0009B039B0BE279002A00D165E0802252046C +:10FDC00013433349B022D2008B50A28880239B0179 +:10FDD0009A4200D301BE228980239B009A4200D31D +:10FDE00001BEA388DB04DB0C2289120429490A40E6 +:10FDF00013432749284A8B50A37A0F2B00D901BE01 +:10FE0000E37A0F2B00D901BEA28980239B019A427D +:10FE100000D301BEA27A0F231340E17A0901FF2229 +:10FE20000A401343A28912021C490A401343A27BD1 +:10FE30001207C02189050A4013431549B122D20097 +:10FE40008B50A379042B00D901BE228A80239B000A +:10FE50009A4200D301BE0E4811494358114A13403B +:10FE6000A2791202E025ED002A4013434350435883 +:10FE70000D4A1340228A1204064C22401343435079 +:10FE8000002070BD01BE87E7002299E70748F8E728 +:10FE9000000026400000FF018405000000FF1F0055 +:10FEA0008C050000FFF8FFFFFFFF00FE03004A0083 +:10FEB00010B5002832D01A49B023DB00CB589A0382 +:10FEC000920B02608022520413405A1E9341C37168 +:10FED000144BCB58DA04D20C82801B0CDB05DB0DF3 +:10FEE0000381B123DB00CB580F2214001C40847225 +:10FEF0001C092240C2721A0AD204D20C82811B0F42 +:10FF0000032213408373084BCB58190A04320A406A +:10FF100082711B0CDB05DB0D038210BD01BECAE73D +:10FF200000002640840500008C05000070B5050027 +:10FF30002649274A885880231B0603438B502C00F0 +:10FF400003E0012000F0EAFC013C204AB223DB0080 +:10FF5000D3585B0701D4002CF3D11C48B121C90050 +:10FF600042581C4B1A4080239B0513434350002DDD +:10FF700001D0002C0CD01549B022D2008858802323 +:10FF80001B0603438B5003E0012000F0C7FC013C3B +:10FF9000FFF7D6FE002801D1002CF5D1002D01D0AD +:10FFA000002C0ED00949B122D2008858C0239B05ED +:10FFB00003438B50002D02D0002C05D000252800D3 +:10FFC00070BDFFF7C7FEF5E7034DF8E700002640D8 +:10FFD0008C050000FFFFFFCF02004A000138074BED +:10FFE0001A683F23D35C834200D801BE8130FF30C2 +:10FFF0008000034BC058C00F7047C0460C66010814 +:020000041001E9 +:10000000000026400138074B1A683F23D35C834227 +:1000100000D801BE9130FF308000034BC35801204F +:10002000184070470C6601080000264070B5013882 +:100030000D4B1A683F23D35C834201D80B4870BD37 +:100040000B4D8130FF30840062590A4B1A408023E7 +:100050009B0513436351012000F060FC63595B0072 +:100060005B0863510020EAE70C66010801004A00C2 +:1000700000002640FFFFFFCFF8B504000D002F4B16 +:100080001A683F23D35C834201D22D48F8BDFFF7A5 +:10009000A5FF002845D1AA78931EDBB20E2B42D8CB +:1000A0006B78002B41D0122B41D82E783000E978A4 +:1000B000002932D01327B8423BD300292FD038274C +:1000C000B84238D8013C2879022816D07F20304029 +:1000D0001B02F8267601334003431204F820400344 +:1000E00002401343C9068022120511400B4322002F +:1000F0008132FF3292001349535012498134FF3448 +:10010000A4006358104A13402A791207C0208005C2 +:100110000240134363500020B8E71627CBE770274F +:10012000CEE70A48B2E70648B0E70548AEE704481C +:10013000ACE70348AAE70248A8E7C0460C660108F6 +:1001400001004A0000002640FFFFFFCF03004A00E5 +:100150000138114B1A683F23D35C83421AD981308E +:10016000FF3080000D4BC3587F221A400A70180AD6 +:100170001F2210404870180C02408A70802212051D +:100180001A40501E8241CA701B0F032213400B718C +:10019000002070470248FCE70C660108000026407A +:1001A00001004A0070B50C00461E294B1A683F2317 +:1001B000D35CB34249D9274933008133FF339B00D5 +:1001C00058588022120602435A50250003E00120AD +:1001D00000F0A4FB013D33009133FF339B001D4A27 +:1001E0009B58DB0701D4002DF1D1002C01D0002D4C +:1001F00017D033008133FF339B00164A9A58120FF1 +:1002000003231340022B01D0002070BD114A813618 +:10021000FF36B600B158C0239B050B43B3500020F6 +:10022000F3E70C4C8136FF36B60032590A4B1A40C0 +:1002300080239B0513433351012000F06FFB33599A +:100240005B005B0833510548DFE70548DDE7C04642 +:100250000C66010800002640FFFFFFCF02004A00A5 +:1002600001004A00F8B504292AD00AD801291DD076 +:10027000022904D1834B00221A70002614E0824E1A +:1002800012E008290FD1814B1B88002B00D1D9E047 +:100290007F4CFFF781FC022800D17CE0002C00D1CC +:1002A00079E0013CF5E7784E3000F8BD794B1B78DA +:1002B000002B00D0E3E0734B01221A700026F3E715 +:1002C000724B00221A80744B1A80002405E0200033 +:1002D000FFF784FE00280BD10134704B1A683F23CE +:1002E000D35CA34255D3002CF1D1FFF721FDF1E7F8 +:1002F0002000FFF79FFC02280CD0002CECD16848AE +:10030000B121C9004258674B1A4080239B05134313 +:100310004350E1E7002C15D16148B121C900425892 +:10032000604B1A4080239B0513434350002120005B +:10033000FFF752FC0123A3409BB2544A11880B43A0 +:100340001380C9E7631E22008032FF3292005449B5 +:100350005258120F920709D01A008132FF329200D0 +:100360005158090F03220A40012A06D10122A24056 +:1003700092B24949088802430A8049488133FF33D1 +:100380009B001958474A1140802292050A431A508F +:10039000CCE7002688E7002C51D1434E394B002290 +:1003A0001A7081E7013CFFF7CBFC002801D1002C3B +:1003B000F8D1002C0AD0002D26D13949B122D20023 +:1003C0008858C0239B0503438B502E000135334BC7 +:1003D0001A683F23D35CAB42E0D30123AB409FB20A +:1003E0002A4A12881342F1D002212800FFF7F4FBB9 +:1003F000002DD8D000E0013C2800FFF703FE0028C4 +:10040000D7D1002CF7D1D4E7234B1B883B420AD02D +:1004100023492B008033FF339B005A582148024068 +:100420005A500026D2E71E492B008033FF339B0031 +:100430005858C022920502435A500026C6E70025AC +:10044000194EC4E7FFF774FC002814D10026A5E775 +:10045000013CFFF775FC002801D1002CF8D1002CDD +:100460000BD00F49B122D2008858C0239B0503430B +:100470008B50002692E7064CEBE70B4E8EE7024EC0 +:1004800012E7C0464A660108FF0042003C660108C8 +:1004900040420F003E660108486601080C660108EC +:1004A00000002640FFFFFFCF02004200F0B587B0FA +:1004B00001A8FFF7FDFCFFF73BFC002807D001ABCC +:1004C0009B7B022B01D0012302E0002300E00023EC +:1004D00001AA019E94882000D279002A21D0022509 +:1004E000002B20D000281FD00020FFF7C1FB3200D6 +:1004F0000023002101F0C8FD06000F002A000023A0 +:100500002000002101F0C0FD02000B00C9075408C3 +:100510000C435D08300039000019694101F094FD79 +:1005200002E00125DCE7002007B0F0BDF0B585B0A2 +:100530000400304B1B683F229A5C002A53D00028ED +:1005400055D03E229B5C834200D801BE294B1A68DD +:100550003F23D35CA34201D2002545E002A920003D +:10056000FFF7F6FD00280BD000230027002500260A +:10057000002B36D0002D37D0002F14D13D0033E0B2 +:100580002000FFF72BFD002807D002AB1B79022BC0 +:1005900001D0012302E0002300E0002302AA167824 +:1005A00055789778E4E72000FFF762FB32000023DC +:1005B000002101F069FD009001913A00002328001C +:1005C000002101F061FD02000B00C90754080C4333 +:1005D0005D08009801990019694101F035FD050099 +:1005E00002E0002500E00025280005B0F0BD050070 +:1005F000FAE7C0460C66010810B504000D4B1A68F6 +:100600003E23D35C834200D801BE002C09D0094BA5 +:100610001A683F23D35CA34208D22000FFF728FBCF +:1006200010BDFFF743FF0028FAD1F6E72000FFF7DF +:100630007DFFF8E70C66010870B50600FFF732FA97 +:100640000500012484403000FFF7FAF9FFF7D4FFDA +:1006500064082018E84070BD10B50020FFF7ECFFDB +:100660000400FFF76BF9411C4808001901F042FC37 +:1006700010BD10B5FFF7F0FF0400FFF7DFF8411CD5 +:100680004808001901F036FC10BD000030B5194BC8 +:100690001B682C229A5C1F2A15D884080722250083 +:1006A00095432A1E22D103321040C000FC32824002 +:1006B0001B682033A4001B191C6881406140114055 +:1006C0006140196012E03C229A5E0BB29A420ED051 +:1006D00007220240074B1B68186880231B06134340 +:1006E000802292019446614489000B5030BD01BEC6 +:1006F000EEE7C0460C66010810B50A4B1B682C22B9 +:100700009A5C1F2A0AD91A6880239B019C4661447F +:1007100089008B585B005B088B5010BD998FFFF7E9 +:10072000B5FFFAE70C6601080B4B1A683C21535ED3 +:10073000116880229201821892005258002A01DB2F +:1007400018B2704780239B019C4660448000425849 +:1007500007231340F4E7C0460C6601080A4B1B68E8 +:100760003C215A5E072108401B68882149018C46BC +:10077000634480001B181968002901DB90B27047A0 +:100780001A689205920DF9E70C660108094B9A6800 +:10079000094B9A4204D01030084B8000C058704773 +:1007A000002905D01030044A830098589950F6E784 +:1007B00001BEF7E700ED00E00000000800000010B7 +:1007C000F0B583B0041E019100D182E04368032B91 +:1007D00000D901BE0023E05E00283EDB6188FFF700 +:1007E00055FF0023E25E6168002A18DB93083A4E49 +:1007F000C0339B009F5903201040C000FF2215000A +:100800008540AF4389010A4082403A439A51334BB5 +:100810009A68334B9A4219D0002003B0F0BD0F23E1 +:100820001340083B9B0806339B002C4884466344D6 +:100830005E6803200240D200FC3007009740BE43B0 +:1008400089010840904030435860E0E70023E05EB3 +:100850000199FFF79BFF0020DFE761880222A35E7A +:100860006268002B17DB9B081B4EC0339B009F590F +:1008700003200840C000FF210D008540AF439201D6 +:100880001140814039439951144B9A68144B9A4254 +:1008900018D01448C1E70F230B40083B9B080633D0 +:1008A0009B000E48844663445E6803200840C000F5 +:1008B000FF210F008740BE43920111408140314328 +:1008C0005960E1E70023E05E0199FFF75FFF05480B +:1008D000A3E70448A1E7C04600E100E000ED00E026 +:1008E000000000080100560070B504000A4B1968AA +:1008F0000120404201F0FEFA050005E0064B1868B1 +:100900006843EFF7F9FD641BAC42F7D8024B186857 +:100910006043EFF7F1FD70BD9802000810B5034B7E +:100920001B785843EFF7E8FD10BDC0469C02000855 +:1009300010B5FFF7F3FF10BD054B802212069A6435 +:100940009B6C002B01DB002070470248FCE7C0468F +:1009500000002740030046000D4B802212019858EA +:100960005B68FF221A4202D080231B061843084A04 +:10097000084BD3581B0402D080235B021843044A5F +:10098000044BD3581B0C02D080239B0218437047A2 +:100990000000264004080000FEE7000010B50268D1 +:1009A000094B1A6242685A6282689A62C268DA62C5 +:1009B00002691A6342695A6382699A63C269DA6397 +:1009C000FFF7EAFF10BDC046E4060008F0B5C646D2 +:1009D00000B5002833D019238B429B415B42314C38 +:1009E00022681668AC27D25BB61832680325AA4382 +:1009F0002B401A43326026683268F65B92191768FA +:100A0000294E3740176027683A689046AE229446D0 +:100A1000BF5A3A0042441768AF433B431360226811 +:100A200013686446125B9B181A6832401A600028EB +:100A300007D010291DD9212927D801221AE06423C3 +:100A4000CAE7184B1B6855229A5C8A421FD256226D +:100A50009A5C8A421DD257229A5C8A421BD2582243 +:100A60009A5C8A4219D259229B5C8B4217D3553A21 +:100A700000E000220B4B1B6859680B680F20834372 +:100A800013430B6080BCB846F0BD0222F2E700229F +:100A9000F0E70122EEE70222ECE70322EAE7052273 +:100AA000E8E7C0460C660108FFFCFFFFB0235B05CA +:100AB0005B78002B04D0B0235B055878C0B2704738 +:100AC0002120FCE7B0235B059B899BB2002B04D05F +:100AD000B0235B05988980B2704780204000FBE717 +:100AE00070B5FFF7EFFF80235B0098421AD0B0206B +:100AF0004005174BC358174A1340174C21680A6822 +:100B00009C25495952181168C025AD0029400B4356 +:100B1000136022681368A02152589B180F4A82580C +:100B20001A6070BD0C4C23681A689C215B58D2185F +:100B300013680F2083439A390B43136023681A68A4 +:100B4000A0241B59D218136883430B431360E8E7B2 +:100B500048180000FFFCFFFF0C6601084418000065 +:100B600070B5FFF7AFFF80235B0098421AD0B0202A +:100B70004005134BC358134A1340134C21680A68AD +:100B80009C25495952181168C025AD0029400B43D6 +:100B9000136022681368A02152589B180B4A825890 +:100BA0001A6070BD084B1A6813689C2152589B1834 +:100BB0001968074A11408022D2010A431A60F0E7FF +:100BC00050180000FFFCFFFF0C6601084C180000E5 +:100BD000FF8FFFFF10B5FFF775FF80235B00984282 +:100BE00012D0B02252050F4BD3580F4A13400F4A70 +:100BF00011680A689C20095852181168C0208000AA +:100C000001400B43136010BD084B1A6813689C2108 +:100C100052589B181968064A1140C022D2010A4353 +:100C20001A60F0E71C180000FFFCFFFF0C660108CB +:100C3000FF8FFFFF70B5FFF745FF80235B009842F1 +:100C40001BD0B0204005184BC358184A1340184C0D +:100C500021680A689C25495952181168C025AD00C1 +:100C600029400B43136022681368A02152589B1837 +:100C7000C122520182581A6070BD0D4C23681A6857 +:100C80009C215B58D21813680F20834399390B437A +:100C9000136023681A68A0241B59D2181368834371 +:100CA0000B431360E8E7C04624180000FFFCFFFF79 +:100CB0000C66010870B5204B1A6813689C215258C5 +:100CC0009B181C68C0231B011C40FFF7FBFE802300 +:100CD0005B0098421FD01849086803689C2280581E +:100CE0001B181868154D284018600868036880585C +:100CF0001B181868C0252D012E00A643304318602C +:100D000009680B688A589B1818682840001B431E06 +:100D10009841C0B270BD0020FBF7EAFF0400FFF766 +:100D2000C5FE222803D8002C03D10120F2E70120C0 +:100D3000F0E70020EEE7C0460C660108FFF3FFFF76 +:100D400030B500283CD0C368002B3BD00368002B93 +:100D50003AD005791E4BAA00D258002A28D0140098 +:100D600000E01A005369002B07D0824205D0197E9B +:100D7000027E9142F5D81C00F3E7824226D0236917 +:100D8000002B08D0636943610461002B00D0186117 +:100D90006061012015E0027E237E9A42F2D2446116 +:100DA0000023036120610A4BAD00E850012008E0F8 +:100DB000074BAD00E850002343610361012000E0D0 +:100DC000002030BD0020FCE70020FAE70020F8E713 +:100DD0008C66010870B582B006000D00042800D9A9 +:100DE00001BE6B1EDBB2012B04D9042D02D0082DED +:100DF00000D001BE284BB200D458042D1ED0012DC6 +:100E00001ED0022D32D026006469002CFBD10020B8 +:100E100033E06469002C17D0204B984212D0A368AD +:100E20002B42F6D1E3681A6800925B68019323684D +:100E30002900684698471A4B1C60EAE70020E9E75A +:100E40000020E7E7012DEAD1012D01D002B070BDED +:100E5000124B984204D0134BB6000022F250F5E733 +:100E6000104BB6000E4A1268F250EFE70C4B1E68AA +:100E7000002ECCD03669CAE73669002EE6D0B368BA +:100E80002B42F9D1F3681A6800925B6801933368CA +:100E9000290068469847EFE78C660108FF0042008A +:100EA000886601087466010810B5EFF72EFB074B42 +:100EB0005968074C2140E82292010A435A605A6857 +:100EC00022405A605B68EFF724FB10BD000026400B +:100ED000FF00FC0FF0B5C64600B50700012800D999 +:100EE00001BEFFF7E3FD85B2FFF7ECFD0600002031 +:100EF000FBF7FEFE041E17D180235B009E4201D04B +:100F00002A4C12E0222D42D8294B1B6858682949E7 +:100F10004358294A134098463A0680235B041A40F6 +:100F200043461343435000E0204C80235B009E4225 +:100F30002FD080235B009E4225D01D4B1A6833239F +:100F4000D35C002B00D101BE194B1B681D6A8023A6 +:100F50005B009E4220D0002F24D0184A0121280097 +:100F6000FBF746FC00280ED1114B1A68BC23D3585E +:100F70005B191B68002BF7DBEB681B0E1B06A0221E +:100F80001206934210D0200080BCB846F0BD074C3A +:100F9000CBE7222DD1D8CCE7002F01D0084ADDE7DE +:100FA000084ADBE7084AD9E70400ECE704004200FE +:100FB0000C66010818F00000FFFFFFFE0300000CA4 +:100FC00001010030010000300100000C00283BD07E +:100FD0001E4B1B681A688821595852181268026201 +:100FE0001A688C21595852181268426246229A5C3B +:100FF000002A28D09968E0228A58D20623D5DA68D8 +:10100000F223DB01D3580360104B1B68D968F02230 +:10101000D2018A584260D9680D4A8A588260D968DC +:101020000C4A8A58C260D9680B4A8A580261D9684A +:101030000A4A8A584261D968094A8A588261DA683C +:10104000084BD358C361704701BEC1E70C66010865 +:1010500004780000087800000C7800001078000088 +:10106000147800001878000010B500283BD01F4B02 +:1010700019680A68882409595218016A11601968A8 +:101080000A68043409595218416A11601B684622E3 +:101090009A5C002A26D09968E0228A58D20621D587 +:1010A000D9684468F022D2018C50D9688468104A0B +:1010B0008C50D968C4680F4A8C50D96804690E4AAC +:1010C0008C50D96844690D4A8C50D96884690C4A9F +:1010D0008C50D968C4690B4A8C50DA680168F223D5 +:1010E000DB01D15010BD01BEC1E7C0460C6601084E +:1010F00004780000087800000C78000010780000E8 +:101100001478000018780000F0B5C64600B5070056 +:10111000FFF7CCFC0500012F00D901BE7C4B5B68BA +:10112000002B00D184E001210120FFF753FE041EB3 +:101130006FD1EFF7EAF98046754B5B68002B03D05F +:1011400004210120FFF746FE724B1A68136ABA2188 +:10115000515ACA00521A9B181A68002AF4DADB683E +:10116000DA0000D566E0802080051843694B1B68D3 +:101170001A6ABA215E5AF500AD1B5219D0601A6A7C +:101180005D5AE800401B1218002050601A6A595A34 +:10119000CB005B1AD3185B68FFF794FC80235B00DD +:1011A000984200D17CE05B4B1A683323D35C002B60 +:1011B00000D101BE574B1B681A6ABC215B589B18B3 +:1011C0001B68002B00DB6FE0534C524B1A68136A0C +:1011D000BA21515ACA00521A9B181A68002AF4DA26 +:1011E000DD68EB0000D57FE04C4B1D40494B1B6890 +:1011F0001A6ABA201F5AF900C91B5218D5601A6A18 +:10120000195ACB005B1AD31800225A604046EFF7F8 +:1012100080F9002C00D06CE03D4B5B68002B03D0C4 +:1012200008210120FFF7D6FD200080BCB846F0BDA4 +:1012300000247EE71B0F1E073948FFF7C7FE212D4C +:1012400017D0344D2B68196888229B58C9180B6831 +:1012500034480340783213430B6029680B688C25AF +:1012600049595B18196801400A431A602C4B3343F3 +:1012700079E7284D2B68196888229B58C9180B6894 +:10128000284803409022120113430B6029680B6821 +:101290008C2549595B18196801400A431A60E5E733 +:1012A000380002F04DF890E71A4B1A683323D35CEC +:1012B000012B00D801BE174B1B681A6ABA21595A74 +:1012C0005218BC215B589B181B68002B0ADB164A7E +:1012D0001369B8390B431361012F01D030BF74E794 +:1012E00020BF72E70C4C70E728010009FFF7BCFE35 +:1012F0007AE7074B5B68002B03D002210120FFF740 +:1013000069FD054B9C4200D18EE7084C8CE7C04636 +:101310008C6601080C66010805004200FFFFFFDF34 +:101320004C660108FF00FFFF00ED00E0FF004200F7 +:10133000024B5B69072018407047C04600002640FA +:10134000074A084BD2581F231340B0214905E82211 +:10135000D200885CC01A431E9841C0B27047C04694 +:10136000000026401CFF0000044B186880231B046B +:10137000184043425841C0B27047C0460000264062 +:1013800010B5204B19680B6890228A589A18146877 +:1013900003202040032804D01268D20710D502246D +:1013A00000E0042494228A589B18196803220A40FA +:1013B000032A07D01B68DB0711D520231C4303E059 +:1013C0000124EFE740231C43FFF7CEFF00280DD098 +:1013D000FFF7B6FF002805D0802020430CE0102343 +:1013E0001C43F1E780200001204305E0FFF7A0FF48 +:1013F000022802D08020204310BD8020000120431D +:10140000FAE7C0460C66010810B5FFF7B9FF802364 +:101410001B011840431E9841C0B210BD10B5FFF724 +:10142000A3FF002810D01C4A13681C490B4013600E +:101430000820FFF773FA6423174A1268002A09DBB1 +:10144000002B07D0013BF7E7134A136814490B4000 +:101450001360EDE7002B01D1124810BD0E4A13684E +:1014600011490B4013600120FFF758FAFFF77CFF8A +:10147000002801D10020F0E7FFF762FF012801D02A +:101480000020EAE7B0225205084BD158024A084B27 +:10149000D1500020E1E7C04600002640FFFFFBAC32 +:1014A000FFFFFBAD02004200FFFFFFFB1018000032 +:1014B000307F000010B5FFF757FF002808D0054B1C +:1014C000054A10681840C01A43425841C0B210BDC6 +:1014D000024BF5E7000004530000264000000452D0 +:1014E000F8B50400012800D901BEFFF7E3FB00288E +:1014F00002D12D4D2800F8BDEFF707F80600002CAB +:1015000014D12A4A2A4B0021D150B0225205E82397 +:10151000DB00D75CFFB20120FFF7DCFC051E02D028 +:10152000002D2AD11DE0FFF7DBFAF9E7FFF7C2FF34 +:10153000002826D01D4A1E4B5021D150B022520502 +:101540001C4BD75CFFB219491B4A8B581F208343A1 +:10155000143803438B500838FFF7E0F9FFF700FB1E +:1015600000251248144943581F2293433A4013431D +:101570004350002C0DD1FFF72DFB3000EEF7C9FFD3 +:10158000B8E7B02252050D4BD158084A084BD1504C +:10159000D4E70720FFF7C2F9FFF74CFB0020FFF765 +:1015A00099FC0500E9E7C046030042000000264020 +:1015B000307F0000410700001CFF000010180000F1 +:1015C000024B5B685B0C012018407047000026400E +:1015D000084B5A6C120AFF2313403A2B00D0704775 +:1015E00004494A6C044B1A40E8239B0113434B64A3 +:1015F000F5E7C04600002740FFC5FFDF04494A6CFD +:10160000044B1A40E8239B0113434B647047C046C8 +:1016100000002740FF00FFFFF0B5D6464F46464684 +:10162000C0B582B007000C0001921E00012B00D94A +:1016300001BE3B0B00D001BE264B1A687223D35A61 +:101640009B08013B244A134322009A4301D16300C3 +:1016500000D401BEF02212013B0063401D00154082 +:10166000134207D01D4D280002B0E0BCBA46B14677 +:10167000A846F0BDEEF749FF8046164B1868816812 +:101680007023C35AC9187223C25A9308013B2340DE +:101690009B009A466E23C35A1C40240A62431300DF +:1016A00053445B181A68920A9102FF223A4001984B +:1016B00000280DD080246400224376028024A400F8 +:1016C000264032430A431A604046EEF722FFCAE73B +:1016D0002C00F1E70C660108000F00400100CE006D +:1016E000F0B5C64600B504000E001500012A00D969 +:1016F00001BE234B1A687223D35A9B08013B214A2F +:10170000134322009A4304D11F4B22001A409A42ED +:1017100000D001BE1A4B1A683023D35C1F2B03D8AC +:101720001A4880BCB846F0BDEEF7EFFE144B1F68B8 +:10173000B9687023FB5AC9187223FA5A9308013BFF +:1017400023409B0098466E23FF5A3C40240A624384 +:10175000130043445B181A680D490A40002E0CD050 +:101760000224FF346D02802189000D4025432A4365 +:101770001A60EEF7CEFE0020D3E70124F2E7C04660 +:101780000C660108001F0040001000400100CE0060 +:10179000FFFCFFFF70B504001A4B1A687223D35A7E +:1017A0009B08013B184A134302009A4304D1174B8C +:1017B00002001A409A4200D001BE124B1A68302330 +:1017C000D35C1F2B01D8124870BDEEF79EFE0D4B67 +:1017D0001A6891687023D35AC9187223D35A9D0886 +:1017E000013D6E26925B2240120A53432C40A40016 +:1017F0001B195B181A6807490A401A60EEF789FE40 +:101800000020E1E70C660108001F004000100040C6 +:101810000100CE00FEFCFFFF0449C02252008858A0 +:10182000C0231B0603438B507047C0460000264070 +:10183000044AC0235B00D058800F431E9841C0B2B9 +:101840007047C046000026400749C02252008B580E +:101850009B009B088020C00503438B508858802341 +:101860001B0603438B5070470000264010B5040050 +:1018700080235B02984200D301BEFFF7D9FF002806 +:1018800009D10549C42252008B581B0C1B042404A7 +:10189000240C23438B5010BD0000264010B50400DB +:1018A0000F2800D901BEFFF7C3FF00280BD106495E +:1018B000C42252008B58054803402404F020000342 +:1018C000044023438B5010BD00002640FFFFF0FF73 +:1018D000034AE023DB000121D150D3587047C046B2 +:1018E0000000264010B50020FBF70AF910BD704734 +:1018F00010B50020FEF7A0FE041E00D110BD154B50 +:101900001860FEF71BF8411C200000F0F3FA0400F9 +:10191000114B1860FDF792FF411C200000F0EAFA1D +:1019200004000E4B1860013C0D49200000F0E2FA63 +:1019300001300C4B1870FA218900200000F0DAFA0F +:101940000130094B18600020FEF776FE074B186047 +:10195000D4E7C046900200089402000888020008FC +:1019600040420F009C020008980200088C02000808 +:1019700010B52248FAF7C6FB214CB022D200A3587A +:101980005B005B08A350E02189006358302083434B +:10199000635080235B04A3501A4B1B4AE25004336C +:1019A000A0229201E250194BFF22E250FFF74CFFB8 +:1019B000C0225200A35801218B43A350FFF797FF89 +:1019C000FFF796FF124B1B681A6ABA201C5AE100F7 +:1019D000091B52180021D1601A6A185AC3001B1A39 +:1019E000D31859600B4A80310320FBF7EBF80A4803 +:1019F000FAF724FF0948FAF777FF10BD685B01107A +:101A00000000264084050000010002008C05000053 +:101A10000C66010888060008A0660108A45C011095 +:101A2000034A90235B01D358032018407047C046F7 +:101A30000000204010B5EEF768FD084C90214901E8 +:101A40006258074B1A40074B13436350034B5B68C4 +:101A5000DB06FBD5EEF75DFD10BDC0460000204063 +:101A6000FCFF00000100FA0570B50400830500D0FA +:101A700001BEEEF74AFD0500FFF7D2FF032813D0A1 +:101A80000B4B802292009C50902040011958094A2B +:101A90001140094A0A431A50054B5B68DB06FBD527 +:101AA0002800EEF736FD70BDFFF7C4FFE8E7C0463B +:101AB00000002040FCFF00000300FA0510B500F014 +:101AC000CFF800F00DF800F0BBF800F045F800F09A +:101AD0004BF810BD10B500F02DF800F05FF810BD08 +:101AE00010B50F210120FDF763FE00220F21012018 +:101AF000FDF734FD0F210120FDF718FE0021002025 +:101B0000FDF756FE002200210020FDF727FD0021F1 +:101B10000020FDF70BFE07210020FDF749FE002203 +:101B200007210020FDF71AFD07210020FDF7FEFD2B +:101B300010BD000010B50548F8F72CFE0448F8F772 +:101B400029FE0448F8F726FE10BDC046E05C0110EF +:101B5000D85C0110DC5C011010B5002200212F20A0 +:101B6000FDF7AAFD10BD000010B5084A084C04217D +:101B70002000FAF763FD074A06212000FAF75EFD10 +:101B8000054A07212000FAF759FD10BD805D0110BC +:101B900000033140485D0110105D011010B5184878 +:101BA000F8F7F8FD1748F8F7F5FD1748F8F7F2FDD4 +:101BB0001648F8F7EFFD1648F8F7ECFD1548F8F76A +:101BC000E9FD1548F8F7E6FD1448F8F7E3FD144879 +:101BD000F8F7E0FD1348F8F7DDFD1348F8F7DAFDF4 +:101BE0001248F8F7D7FD1248F8F7D4FD1148F8F776 +:101BF000D1FD1148F8F7CEFD1048F8F7CBFD10BD28 +:101C0000B85D0110BC5D0110F85C0110B45D0110FD +:101C10007C5D0110445D0110E45C0110E85C011082 +:101C2000EC5C0110F05C0110F45C0110FC5C011034 +:101C3000005D0110045D0110085D01100C5D0110D4 +:101C4000034B332203495A5003495A507047C04648 +:101C5000000030400820000010200000FEE70000D7 +:101C600030B583B0072200213220FDF725FD9621F3 +:101C70000020FEF7ABFEFEF76FFE00281BD1794A6D +:101C8000FF231B02D4583F231C40FEF755FE0028BB +:101C900006D00120FEF742FE724B9B6C002B27DB27 +:101CA000704AFF231B02D450FDF746FFFDF738FFB3 +:101CB0000120FDF759FF0120FFF712FCFFF7AEFBF3 +:101CC000FFF79CFCFFF784FCFEF744F8002100209E +:101CD000FDF7C8FE0020FDF73DFE0120FDF71EFECA +:101CE0000020FDF799FD604B1A683F23D45C06E0A5 +:101CF0000620FFF7B3FF2000FEF798F9013C002C07 +:101D0000F9D100210120FDF767FF0020FDF798FEC3 +:101D1000002800D18BE000210020FDF75DFF0021AD +:101D20000020FDF76FFE514C002500950023002296 +:101D300000212000FAF7AEFB0095002300220121CC +:101D40002000FAF7A7FB4A48FDF7CAFE002800D09A +:101D500079E00120FDF7D0FD0020FDF7FBFD00201C +:101D6000FDF7DCFD0020FDF757FD00210120FDF708 +:101D700033FF00210020FDF72FFF00210220FDF797 +:101D80002BFF00210320FDF727FF00210420FDF792 +:101D900023FF00210520FDF71FFF3648FDF7F8FF60 +:101DA000002853D13448FEF7C1F8002851D1002152 +:101DB0000020FDF727FE00210020FDF753FE2F49EC +:101DC0000120FEF759F9002846D12D490120FEF7E0 +:101DD000E9F9002843D1FDF783FD0020FDF74CFD14 +:101DE0000020FDF761FDFDF76FFD0120FDF732FDDD +:101DF000FDF796FE0120FDF7B7FE64210020FEF7F7 +:101E0000E5FDFFF775FD1F48F8F7C4FC1E48F8F71D +:101E1000C1FC1E48F8F7BEFC1D48F8F7BBFC1D4886 +:101E2000F8F7B8FC1C48F8F7B5FC03B030BDFDF777 +:101E300001FF1223FF33984200D06CE701210020FC +:101E4000FDF7E0FD67E70520FFF708FF0420FFF737 +:101E500005FF0420FFF702FF0320FFF7FFFE03202A +:101E6000FFF7FCFE000027400C660108000031402F +:101E700040420F002C5F0110400D0300585F01101D +:101E800010270000405F0110445F0110485F0110FF +:101E90004C5F0110505F0110545F011010B50448F1 +:101EA000FEF74EFF002801D0002010BD0148FCE7DE +:101EB000A00200080000020610B5F8F769FC041E35 +:101EC00009D0002C0BD0FFF7F9FDFFF703FE002C23 +:101ED0000AD0200010BDF9F749F90400F1E70449E0 +:101EE0000020F9F791F9EEE7FFF7D8FF0400F0E7DB +:101EF000E40C0000002243088B4274D303098B4298 +:101F00005FD3030A8B4244D3030B8B4228D3030CC9 +:101F10008B420DD3FF22090212BA030C8B4202D36B +:101F20001212090265D0030B8B4219D300E0090A93 +:101F3000C30B8B4201D3CB03C01A5241830B8B429C +:101F400001D38B03C01A5241430B8B4201D34B0385 +:101F5000C01A5241030B8B4201D30B03C01A5241EA +:101F6000C30A8B4201D3CB02C01A5241830A8B426F +:101F700001D38B02C01A5241430A8B4201D34B0258 +:101F8000C01A5241030A8B4201D30B02C01A5241BC +:101F9000CDD2C3098B4201D3CB01C01A5241830970 +:101FA0008B4201D38B01C01A524143098B4201D3AA +:101FB0004B01C01A524103098B4201D30B01C01AD5 +:101FC0005241C3088B4201D3CB00C01A524183084F +:101FD0008B4201D38B00C01A524143088B4201D37C +:101FE0004B00C01A5241411A00D2014652411046DC +:101FF0007047FFE701B5002000F006F802BDC046BB +:102000000029F7D076E770477047C0461C210123AE +:102010001B04984201D3000C10391B0A984201D3CB +:10202000000A08391B09984201D30009043902A2A9 +:10203000105C40187047C046040302020101010110 +:102040000000000000000000002B11D1002A0FD179 +:10205000002900D1002802D00021C943080007B49C +:10206000024802A14018029003BDC0469DFFFFFF39 +:1020700003B4684601B5029800F034F8019B9E460F +:1020800002B00CBC7047C046F0B5CE469946030C72 +:102090009C46130447461B0C1D000E0061460404B9 +:1020A000240C80B50700100C4B436543414360434B +:1020B0002C0CC01820188C46834203D980235B0265 +:1020C0009846C444494679435643030C2D042D0CCD +:1020D0008919634400044019C918C0BCB946B04608 +:1020E000F0BDC046F0B557464E464546DE46E0B523 +:1020F00004000D009246994683B08B4230D82DD013 +:102100004946504600F0BAF829000600200000F0C9 +:10211000B5F8331A9846203B34D49B4653465A466A +:10212000934042461F00534693401E00AF423BD8A7 +:10213000AF4200D179E05B46A41BBD41002B00DA21 +:1021400076E0002200230092019301235A46934037 +:102150000193012342469340009329E08242CFD964 +:1021600000220023009201930C9B002B01D01C60E5 +:102170005D600098019903B0F0BCBB46B246A94629 +:10218000A046F0BD42469B4620239B1A5246DA40A9 +:10219000414613004A468A40170042461F435346B1 +:1021A00093401E00AF42C3D9002200230092019346 +:1021B0004346002BD8D0FB0772081A4346467B08DB +:1021C0000EE0AB4201D1A2420CD8A41A9D410120DD +:1021D00024196D410021013E24184D41002E06D0E6 +:1021E000AB42EED9013E24196D41002EF8D1009882 +:1021F00001995B4600196941002B24DB2B005A46EC +:102200004446D3402A00E2401C005B461500002BE8 +:102210002ADB26009E40330026004746BE4032009F +:10222000801A9941009001919EE7A342BCD882E7B1 +:102230004246202300219B1A002200910192012294 +:10224000DA40019285E7424620239B1A2A0046463F +:102250009A402300F340444613432A00E2401C0006 +:102260005B461500002BD4DA42462F0020232600BF +:1022700097409B1ADE403B003343CDE710B5002961 +:1022800003D1FFF7C3FE203002E00800FFF7BEFED7 +:1022900010BDC0467FB514001A00094B05001B682D +:1022A0000E00D868074B002C01D1074B1C000749D2 +:1022B000019302942B00009600F05CFC00F0F4FD0A +:1022C000140300085D5F0110985F01106A5F011040 +:1022D00010B5034B0A000100186800F003F810BDA8 +:1022E0001403000870B50B0C150C002B1ED1002D2B +:1022F0000CD189B294B24C43210000F09BF9051E29 +:102300001BD02200002100F07BFD16E02B1C0C1CD2 +:1023100089B292B24A43A1B29CB24C43130CE41866 +:10232000230C07D1240492B21443E5E7002D01D118 +:10233000141CEDE70C2300250360280070BD936892 +:1023400010B5013B9360002B04DA9469A34207DBCC +:102350000A2905D01368581C10601970080010BDB8 +:1023600000F034FC0100F9E7F8B506000F00140096 +:10237000D518AC4201D1002007E021783A003000A6 +:10238000FFF7DDFF0134431CF3D1F8BDF0B5A1B078 +:102390000F0015001E000390002804D0036A002BD4 +:1023A00001D100F0CFFB7B6EDB0705D4BB899B0519 +:1023B00002D4B86D00F062FDBB891B0702D53B69F2 +:1023C000002B13D13900039800F042FC00280DD0F7 +:1023D0007B6EDB0703D50120404221B0F0BDBB89F5 +:1023E0009B05F8D4B86D00F04AFDF4E7002308AC73 +:1023F0006361203363761033A37607962E0033781B +:10240000002B01D0252B48D1731B0593AE420BD076 +:102410002A0039000398FFF7A7FF013000D1AFE091 +:102420006369059A9B1863613378002B00D1A7E09C +:10243000012200235242626004A954325218751CD2 +:102440002360E360A3601370A365594B0522180055 +:102450002978059300F014FD6E1C00281FD1226816 +:10246000D30604D5532304A95B1820211970130740 +:1024700004D5532304A95B182B2119702B782A2B20 +:1024800016D02E0000210A20E3683278751C303AFD +:10249000092A4ED9002911D117E00136AFE7059B73 +:1024A0002268C01A01238340134335002360CCE720 +:1024B000079B191D1B680791002B01DB0B9304E0A0 +:1024C0005B42E36002231343236033782E2B0AD14F +:1024D00073782A2B35D1079B02361A1D1B68079289 +:1024E000002B2BDB0993334D03222800317800F0B9 +:1024F000C7FC002806D04023401B834022680136D9 +:1025000013432360317806222B48751C217600F096 +:10251000B7FC002843D0294B002B25D10722079B6D +:1025200007339343083307936369049A9B186361E5 +:1025300064E743432E0001219B18A6E701235B4279 +:10254000D0E700230A201A00013663603178751C39 +:102550003039092903D9002BC5D00992C3E742437A +:102560002E0001235218F1E707AA009221003A0039 +:10257000134B039800E000BF0490049B0133D3D1B8 +:102580007B6EDB0705D4BB899B0502D4B86D00F0D8 +:1025900076FCBB895B0600D51DE70D981DE707AAF1 +:1025A000009221003A00064B039800F02DF9E3E772 +:1025B000995F01109F5F0110A35F011000000000F0 +:1025C0006923011010B5044C13000A0001002068B3 +:1025D000FFF7DCFE10BDC0461403000810B5034B26 +:1025E0000100186800F068FC10BDC0461403000824 +:1025F00070B50F4E0D0031680400002902D100F0C3 +:102600002BFC30602900200000F026FC431C0AD07F +:102610000323C51C9D43A84207D0291A200000F0BF +:102620001BFC013001D101256D42280070BDC04660 +:102630002C680108F7B50322CB1C9343083306002E +:102640001F000C2B34D20C27B94233D8300000F0D5 +:10265000EBF9344D2B681C00002C30D139003000D0 +:10266000FFF7C6FF0400431C59D12C682500002D3C +:102670004CD1002C4DD023682900E3183000019381 +:1026800000F0EAFB019B834243D123680337FF1A22 +:1026900003239F4308370C2F00D20C27390030004A +:1026A000FFF7A6FF013034D02368DB19236013E065 +:1026B000002BC9DA0C23002533602800FEBD2168F9 +:1026C000C91B20D40B2917D9E2192760A34211D1C5 +:1026D0002A606368116053603000250000F0ACF997 +:1026E00007220B35231D9543EA1A9D42E5D05B1B5B +:1026F000A350E2E75A60ECE76268A34201D12A6086 +:10270000EAE75A60E8E723006468A5E72C006D68F3 +:10271000ADE70C233000336000F08EF9CDE7276081 +:10272000DAE7C04628680108F7B5160001938A6801 +:102730000B690C000090934200DA13002200336012 +:1027400043321278002A01D00133336023689B069C +:1027500002D53368023333602268062315001D401A +:102760001A4227D0230043331B785A1E9341226814 +:10277000920630D4220001990098089D4332A84760 +:10278000013025D00622236800251340042B05D1F3 +:102790003368E568ED1AEB43DB171D40A368226937 +:1027A000934201DD9B1AED180026B54220D100208E +:1027B00010E00135E36832689B1AAB42D2DD22009B +:1027C000012301990098089F1932B8470130F0D1D0 +:1027D00001204042FEBD3020E11843310870210045 +:1027E0005A1C45310978A218433202331170C1E7EF +:1027F0002200012301990098089F1A32B84701303E +:10280000E6D00136D1E70000F0B58BB006920A00A1 +:1028100043320793059004920A7E0C00109B782A9D +:1028200009D8622A0BD8002A00D1BEE07C49039166 +:10283000582A00D193E026004236327022E0100080 +:1028400063381528F7D800F01BFD16001F00F6FFAF +:10285000F6FFF6FFF6FF1F00F6FFF6FFF6FFF6FFA6 +:10286000A30036008300F6FFF6FFB400F6FF360043 +:10287000F6FFF6FF870026001A684236111D196020 +:10288000136833700123A2E018680968021D0D0661 +:102890000BD505681A60002D03DA2D23049A6D42CA +:1028A00013705F4B0A2703931BE005681A60490603 +:1028B000F1D52DB2EFE70D681968081D18602E06D6 +:1028C00001D50D6803E06D06FBD50D68ADB2544B24 +:1028D000082703936F2A00D00237230000224333D6 +:1028E0001A706368A360002B03DB042122688A430B +:1028F0002260002D02D1049E002B0CD0049E2800E3 +:102900003900FFF77DFB039B013E5B5C33702B00BE +:1029100005009F42F3D9082F09D12368DB0706D5AC +:10292000626823699A4202DC3023013E3370049BC3 +:102930009B1B2361079B210000930598069B09AA16 +:10294000FFF7F2FE013047D1012040420BB0F0BD4D +:10295000202209680A43226078223249039121002B +:1029600045310A701968226820C9100602D4500641 +:1029700000D5ADB21960D30702D5202313432360DD +:102980001027002DA9D12022236893432360A4E7B8 +:102990001A680D68101D4969186013682E0601D564 +:1029A000196002E06D06FBD519800023049E2361A7 +:1029B000C0E71A68111D19601668002130006268AE +:1029C00000F05EFA002801D0801B6060636823611C +:1029D0000023049A1370ADE7320023690699059825 +:1029E000079DA8470130AFD023689B0715D4099BEA +:1029F000E0689842AADA1800A8E7220001230699A5 +:102A00000598079E1932B04701309DD00135E36823 +:102A1000099A9B1AAB42F0DCE9E70025F7E7C046CC +:102A2000AA5F0110BB5F011010B5024800F026FA42 +:102A300010BDC0466C69010810B5024800F01FFACD +:102A400010BDC0466C690108002310B50400036086 +:102A500043608360818143661900C28103614361E1 +:102A6000836108225C3000F0CBF9054B246263627D +:102A7000044BA362044BE362044B236310BDC046C6 +:102A8000B9300110E1300110193101104531011048 +:102A900010B5034A0349044800F07CF810BDC04655 +:102AA000BC02000861300110C802000841680B4BED +:102AB00010B50400994201D000F0D2FAA168084B89 +:102AC000994202D0200000F0CBFAE168054B994210 +:102AD00002D0200000F0C4FA10BDC04630680108E2 +:102AE000986801080069010810B5094B094A0421DA +:102AF0001A6009480022FFF7A7FF012209210748B1 +:102B0000FFF7A2FF022212210548FFF79DFF10BD2B +:102B100068690108912A0110306801089868010865 +:102B20000069010810B5024800F0A8F910BDC046C0 +:102B30006D69010810B5024800F0A1F910BDC0464A +:102B40006D69010810B50400FFF7ECFF236A002B44 +:102B500002D0FFF7EFFF10BD044B2362044B1B684C +:102B6000002BF6D1FFF7C0FFF3E7C046AD2A0110F6 +:102B7000686901080EB417B5054C05AB04CB01001C +:102B800020680193FFF702FC1EBC08BC03B0184785 +:102B900014030008F7B51400002600900191A56801 +:102BA0006768013F04D52468002CF8D13000FEBDD1 +:102BB000AB89012B08D90E22AB5E013304D029006A +:102BC0000098019B984706436835EAE7F8B5060088 +:102BD0000D001400002804D0036A002B01D1FFF778 +:102BE000B1FFA369A360A3891B0728D52369002B24 +:102BF00025D023692068EFB2C01A6369EDB2834221 +:102C000005DC2100300000F02BFA00281DD1A3685C +:102C10000130013BA36023685A1C22601F70636966 +:102C2000834204D0A389DB0707D50A2D05D12100F3 +:102C3000300000F015FA002807D12800F8BD210067 +:102C4000300000F005F80028D3D001256D42F4E7EC +:102C5000304B70B5050018680C00002804D0036ADA +:102C6000002B01D1FFF76EFF0C23E25E93B2110738 +:102C700023D4D90607D4092301202B60373313430B +:102C8000A381404270BD5B0713D5616B002908D05A +:102C900023004433994202D0280000F00DF90023AC +:102CA00063632422A3899343A38100236360236980 +:102CB00023600823A2891343A3812369002B0BD12E +:102CC000A0218022A389890092000B40934203D067 +:102CD0002100280000F048F80C22A35E01201A0011 +:102CE00099B2024003420FD00022A26062695242B0 +:102CF000A261002022698242C4D10906C2D54022C5 +:102D00001343A3810138BDE7880700D46269A2603C +:102D1000EFE7C0461403000870B50E001D000E2337 +:102D2000C95E140096B000290CDAB2898023110024 +:102D300019401A4213D00021403B00202960236033 +:102D400016B070BD6A4600F063F80028EDDBF02392 +:102D500001991B021940034BC9184B42594180236A +:102D6000DB00EAE700E0FFFFF7B502268B890500EC +:102D70000C00334206D02300473323602361012334 +:102D80006361F7BD6A4601ABFFF7C6FF0099070014 +:102D90002800FFF74FFC002808D10C22A35E9A05FB +:102DA000EFD4032293431E43A681E4E78023A28944 +:102DB00020601343A381009B20616361019B002B72 +:102DC0000CD028000E23E15E00F034F8002805D076 +:102DD0000323A2899A43023B1343A381A3893B4364 +:102DE000A381CEE730B500240139A24201D10020F1 +:102DF00005E0035D01340D5DAB42F6D0581B30BDDC +:102E000003008218934200D1704719700133F9E72B +:102E1000002370B5064D0400080011002B6000F07F +:102E200041FA431C03D12B68002B00D0236070BDF6 +:102E300070690108002370B5064D040008002B607E +:102E400000F040FA431C03D12B68002B00D0236014 +:102E500070BDC04670690108002370B5064D0400BE +:102E600008002B6000F046FA431C03D12B68002BAE +:102E700000D0236070BDC04670690108704770477C +:102E8000C9B28218904201D10020704703788B426A +:102E9000FBD00130F6E7002310B59A4200D110BDF7 +:102EA000CC5CC4540133F8E7062010B500F0B4F947 +:102EB000012000F02DFA000070B50500002910D0A7 +:102EC0000C1F2368002B00DAE4182800FFF7ACFD84 +:102ED0001D4A1368002B05D1636014602800FFF7BA +:102EE000ABFD70BDA34208D9206821188B42F3D1F5 +:102EF00019685B6809182160EEE71A005B68002B0F +:102F000001D0A342F9D911685018A0420BD1206812 +:102F10000918501811608342E0D118685B684118A5 +:102F200011605360DAE7A04202D90C232B60D5E789 +:102F3000206821188B4203D119685B680918216049 +:102F400063605460CAE7C04628680108F7B58B89FA +:102F500005000C001A075CD44A68002A04DC0A6CDD +:102F6000002A01DC0020FEBDE76A002FFAD0002213 +:102F700080202E682A601A004001216A0240034224 +:102F800034D0606DA3895B0706D56368C01A636B94 +:102F9000002B01D0236CC01A020000232800E76A2E +:102FA000216AB847A289431C06D129681D292CD85B +:102FB0002A4B0B41DB0728D400236360236923607D +:102FC000D20405D5431C02D12B68002B00D16065CB +:102FD000616B2E600029C5D023004433994202D092 +:102FE0002800FFF769FF00206063BCE70123280089 +:102FF000B847431CC6D12B68002BC3D01D2B01D072 +:10300000162B01D12E60ADE7A28940231343A38183 +:10301000A9E70E69002EA5D00F680E60BA1B0192B9 +:1030200000229B0700D14A69A260019B002B99DD19 +:10303000A36A32001F002800019B216AB8470028BC +:1030400006DC40230120A28940421343A3818AE782 +:10305000019B36181B1A0193E7E7C046FEFFBFDF4E +:103060000B6970B505000C00002B02D1002528006B +:1030700070BD002804D0036A002B01D1FFF762FD68 +:103080000C22A35E002BF1D0626ED20704D49B0504 +:1030900002D4A06DFFF7F2FE28002100FFF756FFD3 +:1030A000636E0500DB07E2D4A3899B05DFD4A06D26 +:1030B000FFF7E5FEDBE7000070B50C000E25495F69 +:1030C00000F06CF8002803DB636D1B18636570BDAE +:1030D000A389024A1340A381F9E7C046FFEFFFFF2F +:1030E000F8B51F008B8905000C001600DB0505D51F +:1030F0000E23C95E0022022300F03CF8A389054A92 +:1031000028001340A38132000E23E15E3B0000F053 +:10311000A3F8F8BDFFEFFFFF70B50C000E25495F67 +:1031200000F028F8A389421C03D1054A1340A3816B +:1031300070BD802252011343A3816065F8E7C04649 +:10314000FFEFFFFF10B50E23C95E00F001F810BDC0 +:10315000002370B5064D040008002B6000F09AF8BB +:10316000431C03D12B68002B00D0236070BDC046E8 +:103170007069010870B50400080011001A000023EE +:10318000054D2B6000F0AEF8431C03D12B68002BDB +:1031900000D0236070BDC0467069010870B504009E +:1031A000080011001A000023054D2B60F0F7A8FF5E +:1031B000431C03D12B68002B00D0236070BDC04698 +:1031C0007069010870B504000D001F2904D9162389 +:1031D00003600120404270BDC36B002B04D08A0005 +:1031E0009B181A68002A08D1200000F031F82A0044 +:1031F0000100200000F01AF8EDE70020012AEAD0D3 +:10320000511C03D1162301302360E4E70024280079 +:103210001C6090472000DEE710B5034B01001868E2 +:10322000FFF7D0FF10BDC04614030008002370B59F +:10323000064D0400080011002B6000F04BF8431C01 +:1032400003D12B68002B00D0236070BD706901088A +:1032500010B500F02FF810BD70B504000800110083 +:103260001A000023054D2B60F0F730FF431C03D1FB +:103270002B68002B00D0236070BDC0467069010828 +:1032800003B47146490840004900095E49008E4474 +:1032900003BC704758220120014B40421A6070471E +:1032A0007069010858220120014B40421A607047A2 +:1032B0007069010858220120014B40421A60704792 +:1032C000706901085822024B00201A607047C046FE +:1032D0007069010858220120014B40421A60704772 +:1032E0007069010858220120014B40421A60704762 +:1032F00070690108044A03001068002802D0C3184E +:10330000136070470148FAE7746901087869010899 +:10331000FEE7C046F8B5C046F8BC08BC9E467047FC +:10332000F8B5C046F8BC08BC9E46704700000000D7 +:1033300001B40248844601BC604700BF0104000894 +:1033400001B40248844601BC604700BF650500081F +:103350005B494E465D205374617274696E672055F7 +:10336000736572204170706C69636174696F6E205F +:103370002877616974292E2E2E0A0D005B494E466E +:103380005D20537461727420736C6F7420416464A7 +:10339000726573733A2030782530386C780A0D00E6 +:1033A0005B494E465D204C61756E6368696E6720AF +:1033B000617070206F6E20434D3420636F72650A18 +:1033C0000D0000005B494E465D204D4355426F6F36 +:1033D0007420426F6F746C6F616465722066696EF1 +:1033E00069736865642E0D0A4465696E6974696164 +:1033F0006C697A696E672068617264776172652EA4 +:103400002E2E0A0D000000005B4552525D20466CD6 +:1034100061736820646576696365204944206E6F36 +:103420007420666F756E640A0D0000005B45525291 +:103430005D204661696C656420746F207265676900 +:103440007374657220737973706D417070536C651D +:10345000657043616C6C6261636B48616E646C653E +:10346000720A0D005B494E465D201B5B324A1B5BB6 +:103470003B480A0D000000005B494E465D204D436D +:1034800055426F6F7420426F6F746C6F6164657228 +:1034900020537461727465640A0D00005B494E46E6 +:1034A0005D2045787465726E616C204D656D6F723C +:1034B0007920696E697469616C697A656420772F17 +:1034C00020534644502E0A0D000000005B45525226 +:1034D0005D2045787465726E616C204D656D6F720C +:1034E0007920696E697469616C697A6174696F6E5B +:1034F00020772F2053464450204641494C45443ABA +:103500002030782530386C780A0D00005B494E4633 +:103510005D2055736572204170706C6963617469D8 +:103520006F6E2076616C6964617465642073756385 +:103530006365737366756C6C790A0D005B45525256 +:103540005D20426F6F74206F66206E657874206115 +:103550007070206661696C65640A0D005B455252AB +:103560005D204661696C656420746F20696E6974C2 +:10357000205744540A0D00005B4552525D204D43D4 +:1035800055426F6F7420426F6F746C6F6164657227 +:1035900020666F756E64206E6F6E65206F662062A8 +:1035A0006F6F7461626C6520696D616765730A0D88 +:1035B0000000000028696D6167655F6E756D2920E8 +:1035C0003C203078465500002E2E2F2E2E2F6D7465 +:1035D000625F7368617265642F6D6375626F6F748B +:1035E0002F76312E392E312D637970726573732FDA +:1035F000626F6F742F626F6F747574696C2F737262 +:10360000632F626F6F747574696C5F7075626C693B +:10361000632E630028737761705F74797065292069 +:103620003C2030784655000062616400676F6F642B +:1036300000000000756E7365740000007065726DA7 +:103640000000000074657374000000004255473BA1 +:103650002063616E27742068617070656E000000E1 +:1036600072657665727400005B494E465D20536555 +:10367000636F6E6461727920696D616765206F6642 +:1036800020696D6167652070616972202825642E4C +:103690002920697320756E726561636861626C656B +:1036A0002E20547265617420697420617320656DE9 +:1036B0007074790A0D000000626F6F745F73776138 +:1036C000705F747970655F6D756C74693A205072C3 +:1036D000696D61727920696D616765005B494E466D +:1036E0005D2025733A206D616769633D25732C2049 +:1036F000737761705F747970653D307825782C2020 +:10370000636F70795F646F6E653D307825782C202B +:10371000696D6167655F6F6B3D307825780A0D00D4 +:10372000626F6F745F737761705F747970655F6DDE +:10373000756C74693A205365636F6E6461727920A9 +:10374000696D6167650000005B494E465D205377F7 +:10375000617020747970653A2025730A0D000000AD +:103760005B494E465D205377617020747970653AED +:10377000206E6F6E650A0D00626F6F745F777269FD +:1037800074655F737761705F696E666F000000003B +:1037900077C295F360D2EF7F3552500F2CB6798007 +:1037A00004010403040204010401040301030304EB +:1037B00001040000000000006FC75E10DE8EBD2017 +:1037C000B149E330BC1D7B41D3DA25516293C66118 +:1037D0000D549871783BF68217FCA892A6B54BA2BF +:1037E000C97215B2C4268DC3ABE1D3D31AA830E396 +:1037F000756F6EF32A8648CE3D0201002A8648CEB8 +:103800003D03010700000000656C656D5F737A2061 +:10381000213D2030750000002E2E2F2E2E2F6D748E +:10382000625F7368617265642F6D6375626F6F7438 +:103830002F76312E392E312D637970726573732F87 +:10384000626F6F742F626F6F747574696C2F73720F +:10385000632F6C6F616465722E630000616C696731 +:103860006E20213D203075007072696D61727900A3 +:103870007365636F6E646172790000005B4552523C +:103880005D20496D61676520696E2074686520253B +:103890007320736C6F74206973206E6F742076616F +:1038A0006C6964210A0D00007263203D3D203000E8 +:1038B0005B57524E5D2025642073746174757320CC +:1038C0007772697465206661696C732070657266D1 +:1038D0006F726D696E672074686520737761700A16 +:1038E0000D0000005B4552525D2070616E696321DE +:1038F0000A0D0000300000005B57524E5D2046610B +:10390000696C65642072656164696E6720736563C4 +:10391000746F72733B20424F4F545F4D41585F4963 +:103920004D475F534543544F52533D2575202D203D +:10393000746F6F20736D616C6C3F0A0D00000000A6 +:103940005B57524E5D204661696C6564207265610B +:1039500064696E6720696D6167652068656164658B +:1039600072733B20496D6167653D25750A0D000046 +:103970005B4552525D204669726D77617265202BFE +:1039800020746C767320696E20736C6F74202575BB +:10399000206F7665726C6170732077697468206C33 +:1039A00061737420736563746F722C207768696328 +:1039B0006820636F6E7461696E7320747261696CE4 +:1039C00065722C2065726173696E67207468697313 +:1039D00020696D6167650A0D000000005B57524E5B +:1039E0005D204661696C65642072656164696E671B +:1039F00020626F6F74207374617475733B20496D1E +:103A00006167653D25750A0D000000005B494E4663 +:103A10005D20496D6167652075706772616465201E +:103A20007365636F6E6461727920736C6F74202D9F +:103A30003E207072696D61727920736C6F740A0D2B +:103A4000000000005B494E465D2045726173696E5F +:103A50006720746865207072696D61727920736C7B +:103A60006F740A0D000000005B494E465D20436FF5 +:103A70007079696E6720746865207365636F6E6422 +:103A800061727920736C6F7420746F207468652084 +:103A90007072696D61727920736C6F743A2030783E +:103AA000256C782062797465730A0D002E745C3A77 +:103AB000122E9F9F626F6F745F636F70795F696D85 +:103AC00061676500626F6F745F706572666F726DBB +:103AD0005F75706461746500626F6F745F737761A6 +:103AE000705F696D61676500626F6F745F636F6DB2 +:103AF000706C6574655F7061727469616C5F737717 +:103B000061700000626F6F745F77726974655F73D4 +:103B10007A000000626F6F745F7072657061726529 +:103B20005F696D6167655F666F725F757064617410 +:103B300065000000636F6E746578745F626F6F7408 +:103B40005F676F5F666C6173680000002E2E2F2E1A +:103B50002E2F6D74625F7368617265642F6D63757B +:103B6000626F6F742F76312E392E312D637970721A +:103B70006573732F626F6F742F626F6F74757469E2 +:103B80006C2F7372632F737761705F7363726174EC +:103B900063682E63000000005B57524E5D20557035 +:103BA00067726164652064697361626C6564206634 +:103BB0006F7220696D6167652025750A0D00000030 +:103BC0005B57524E5D2043616E6E6F742075706757 +:103BD000726164653A206D6F726520736563746FFE +:103BE0007273207468616E20616C6C6F7765640A13 +:103BF0000D0000005B57524E5D2043616E6E6F7486 +:103C000020757067726164653A20736C6F747320FD +:103C100068617665206E6F6E2D636F6D706174697B +:103C2000626C6520736563746F72730A0D00000027 +:103C30005B57524E5D2043616E6E6F7420757067E6 +:103C4000726164653A206E6F7420616C6C207365DC +:103C500063746F72732066697420696E736964653A +:103C600020736372617463680A0D00005B57524EE3 +:103C70005D2043616E6E6F7420757067726164655C +:103C80003A20736C6F747320617265206E6F7420BC +:103C9000636F6D70617469626C650A0D00000000ED +:103CA00073637261746368006E6F6E65000000007C +:103CB0007072696D61727920736C6F74000000001E +:103CC0005072696D61727920696D616765000000ED +:103CD00053637261746368005B494E465D20426FB6 +:103CE0006F7420736F757263653A2025730A0D0037 +:103CF0005B494E465D20426F6F7420736F7572632F +:103D0000653A206E6F6E650A0D0000005B494E46F5 +:103D10005D205374617274696E67207377617020DF +:103D20007573696E67207363726174636820616C78 +:103D3000676F726974686D2E0A0D0000626F6F7490 +:103D40005F737761705F736563746F7273000000F7 +:103D5000737761705F7374617475735F736F75727D +:103D6000636500000105010001050302040104016F +:103D7000030403025B4552525D204465746563741D +:103D8000656420696E636F6E73697374656E742009 +:103D9000737461747573210A0D0000005B45525203 +:103DA0005D20747261696C657220636F7079206642 +:103DB00061696C65640A0D005B494E465D20457281 +:103DC0006173696E6720747261696C65723B20660D +:103DD000615F69643D25750A0D00000030203D3D9E +:103DE000207263002E2E2F2E2E2F6D74625F73684B +:103DF000617265642F6D6375626F6F742F76312EFB +:103E0000392E312D637970726573732F626F6F7401 +:103E10002F626F6F747574696C2F7372632F737771 +:103E200061705F7374617475735F6D6973632E6322 +:103E300000000000737761705F7374617475735F65 +:103E4000696E697400000000EFBEADDE0100000085 +:103E5000583E0110B43E01103059301306072A862F +:103E600048CE3D020106082A8648CE3D03010703DD +:103E7000420004FF36BA0D0127531A8E9B4BCAF439 +:103E8000F82FB7D18706D162D57215ACFBDF439C02 +:103E9000EAF7499A1A96FEBFA4234856BC05BF729A +:103EA000A426C9AC6546CD366C5E30FAFE2257C6F4 +:103EB00018F834005B00000008000000010000005A +:103EC000000000000000000000000000AA420010F6 +:103ED0004E4200105642001056420010664200103A +:103EE000664200108242001082420010F44100102D +:103EF000FE43001068430010704300107C43001024 +:103F00008E430010A2430010BC430010DA4300109F +:103F100022430010010000000E000000110000000C +:103F20000000000000000000000000000000000091 +:103F30000100000000000000000000000000000080 +:103F40000000000000000000010000000E00000062 +:103F50001100000000000000000000000000000050 +:103F60000000000001000000000000000000000050 +:103F70000000000000000000000000000100000040 +:103F80000E00000011000000000000000000000012 +:103F90000000000000000000010000000000000020 +:103FA0000000000000000000000000000000000011 +:103FB000010000000E0000001100000000000000E1 +:103FC00000000000000000000000000001000000F0 +:103FD00000000000000000000000000000000000E1 +:103FE00000000000010000000600000011000000B9 +:103FF00000000000000000000000000000000000C1 +:1040000001000000000000000000000000000000AF +:10401000000000000000000000000000010000009F +:104020000100000000000000000000008005314099 +:104030000200000011000000800531400100000076 +:104040001100000080053140000000001100000058 +:10405000000631400400000011000000A1470010DC +:10406000A547001031480010EB470010A74700108B +:104070009D470010974700107D47001066616C73E4 +:10408000650000002E2E2F2E2E2F6D74625F736838 +:10409000617265642F6D6375626F6F742F76312E58 +:1040A000392E312D637970726573732F626F6F745F +:1040B0002F637970726573732F706C6174666F72A1 +:1040C0006D732F6D656D6F72792F50534F43362F7F +:1040D000666C6173685F6D61705F6261636B656E72 +:1040E000645F706C6174666F726D2E680000000012 +:1040F000666C6173685F617265615F6765745F615B +:1041000070690000C14D0010C54D00108F4E0010A9 +:10411000434E0010CF4D0010BD4D0010C74D001094 +:10412000AD4D0010010000000800000064430110C4 +:10413000010000000800000084430110010000009D +:1041400001000000E001000801000000080000007C +:104150002445011001000000080000004445011042 +:10416000010000000000000000000000010000004D +:104170000800000064450110010000000800000074 +:104180008445011001000000000000000000000054 +:104190000100000008000000A4450110010000001B +:1041A00008000000C44501100100000000000000EC +:1041B000000000000100000008000000E4450110BC +:1041C000010000000800000004460110010000008A +:1041D00000000000000000000100000008000000D6 +:1041E00024460110010000000800000044460110B0 +:1041F00001000000000000000000000001000000BD +:1042000008000000644601100100000008000000E2 +:1042100084460110010000000000000000000000C2 +:104220000100000008000000A44601100100000089 +:1042300008000000C446011001000000000000005A +:10424000000000000100000008000000E44601102A +:1042500001000000080000000447011001000000F8 +:104260000000000000000000010000000800000045 +:10427000244701100100000008000000444701101D +:10428000010000000000000000000000010000002C +:1042900008000000A4430110010000000800000015 +:1042A000C4430110010000000000000000000000F5 +:1042B0000100000008000000E443011001000000BC +:1042C000080000000444011001000000000000008C +:1042D000000000000100000008000000244401105C +:1042E000010000000800000044440110010000002B +:1042F00000000000000000000100000008000000B5 +:104300006444011001000000080000008444011012 +:10431000010000000000000000000000010000009B +:1043200008000000A4440110010000000800000083 +:10433000C444011001000000000000000000000063 +:104340000100000008000000E4440110010000002A +:1043500008000000044501100100000000000000FA +:1043600000000000211D5C11D68032342211C2569B +:10437000D3C1034AB99013327FBFB46BBD0C0EB7E3 +:1043800000000000347E00859981D5446447075AB7 +:10439000A07543CDE6DF224CFB23F7B5886337BD1C +:1043A00000000000635FA86C468343FAFAA99311EA +:1043B000B6075774772A9D03897ED73C7B8C62CFE2 +:1043C00000000000442C1359CCFA849E51B948BC1B +:1043D00057C7B37CFC0A38242E3A2825BC0A43B8B8 +:1043E000000000005925ABC1EE703CE1F3DB451D38 +:1043F0004A807535E81F4D2D9A05F4CB6B10F05AA5 +:10440000000000003595E1DC1586C37BECDC27D18C +:1044100056A1140D590BD6774E44A2F89442711F41 +:10442000000000003086B2B0C82F7BFE96EFCBDBD9 +:10443000BC9E3BC51B0386DD5BF58D46589579D642 +:1044400000000000843214DA9B4F0739B53EFB06AA +:10445000EEA74040761FDF7161FD8BBE808BAB8B7A +:1044600000000000C934B3B4BC9FB05EE65848A851 +:1044700077BB132F41C6F734CC89210ACA33DD1F1D +:1044800000000000CC81EFA4F2100BCD83F76E7218 +:104490004ADFDDE867230A53031662D20B76FD3C40 +:1044A00000000000CB14A1FAA018BE07032AE1D730 +:1044B000B06CA0DED1C0B0C66324CD4E33382CB171 +:1044C00000000000EECD7D200CFEACC309979FA23A +:1044D000B645F77BCA99F3D22002EB0443185B7B05 +:1044E000000000002BDD779160EAFDD37DD3B5D6C7 +:1044F00090170E1A00F428C1F253F6634958DC6194 +:1045000000000000A82001FBF1BD5F45D07F06DA66 +:1045100011CBBAA6A74100A41B303379F4FF27CAF8 +:1045200000000000E0F9B8D03DD2D3FA1EFD992674 +:1045300019FE136E1C0E4C487CA217013DA31357A5 +:10454000000000009F165C8FAAED0F58BFC54334D2 +:1045500093052A4CE4E36CCAC614C225D3436CD736 +:1045600000000000C35A981EC8A542A39849567877 +:10457000F8EFED651BBB64B64C545FD12F0C33CC08 +:1045800000000000FA79CB2E08FFD8E62E1FD4D702 +:1045900057E93945D8D63B0A1C87B76AEB30D805AE +:1045A00000000000AD79749AE6BBC2C2B45BA66796 +:1045B000C191E764F0DF3882192C4CCAD12E39C57D +:1045C000000000009936784EAE5B027614F68BF848 +:1045D000F4926B42BA4D7135E70C2C989BA51FAE37 +:1045E00000000000AF1C4BDF5BF251B70574B15AFD +:1045F000C60F0E61E8240962AFFCDB4543E180553C +:10460000000000003C82FEADC3E5CFD824A26217B3 +:1046100076F05AFA3EB8E5ACB76638AA97FD86053B +:104620000000000059D30C3CD166B0F1BC59B48DE8 +:104630009010B7A296479BE6558AE4EEB149DB7825 +:10464000000000004197EDDEFFB3DF4810B983B7EB +:10465000EBBE408DAFD3D3CD0E82793D9B831BF053 +:10466000000000003F22BB54D33156FC8036E5E009 +:1046700089968E71E1EF0AEDD0114AFF1500572798 +:104680000000000013CA3DF7649B6E8590E3706BD9 +:1046900041D7ED8F02444480CE13379294738079D2 +:1046A00000000000B74D707D310F1C586D358847F4 +:1046B000C424783FBAF0CD9181B3DEB604CEC6F7FC +:1046C00000000000E99C2DE8D2008F10D55E7C0E22 +:1046D0000C6E5802AE8121CE43F4243D9EBCF0F412 +:1046E00000000000D610C2744A8F8ACF8967F42B6D +:1046F000382B3517F5E70CA9FA775CBDE033192B99 +:1047000000000000E73E962253E1E9BEE013BCA1A1 +:1047100016EC011A9A00C97AC373A545E1F45EC18B +:1047200000000000A895D6D932302BD07742090579 +:10473000612A7E827384A205886465F9032D90B393 +:10474000000000000AE72E8555807C790FC1AC7807 +:10475000B4AFFB6ED3C3288E79181F583446CF49A7 +:1047600000000000B4FF552343390B27BAD8BFD748 +:10477000B7B04450563241F5ABB3040C850A05B4CA +:10478000211D5C11D68032342211C256D3C1034A96 +:10479000B99013327FBFB46BBD0C0EB7347E008569 +:1047A0009981D5446447075AA07543CDE6DF224C72 +:1047B000FB23F7B5886337BD3D2A5C5C4529DD13D3 +:1047C0003EF0B8E0A216FFFFFFFFFFFFFFFFFFFF75 +:1047D000FFFFFFFF010000000000000000000000DC +:1047E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +:1047F000000000000100000008000000344A011021 +:104800000100000008000000544A011001000000EF +:1048100001000000E00100080100000008000000A5 +:10482000F44B01100100000008000000144C0110BE +:104830000100000000000000000000000100000076 +:1048400008000000344C01100100000008000000C6 +:10485000544C0110010000000000000000000000A6 +:104860000100000008000000744C0110010000006D +:1048700008000000944C011001000000000000003E +:10488000000000000100000008000000B44C01100E +:104890000100000008000000D44C011001000000DD +:1048A00000000000000000000100000008000000FF +:1048B000F44C01100100000008000000144D01102C +:1048C00001000000000000000000000001000000E6 +:1048D00008000000344D0110010000000800000035 +:1048E000544D011001000000000000000000000015 +:1048F0000100000008000000744D011001000000DC +:1049000008000000944D01100100000000000000AC +:10491000000000000100000008000000B44D01107C +:104920000100000008000000D44D0110010000004B +:10493000000000000000000001000000080000006E +:10494000F44D01100100000008000000144E011099 +:104950000100000000000000000000000100000055 +:1049600008000000744A0110010000000800000067 +:10497000944A011001000000000000000000000047 +:104980000100000008000000B44A0110010000000E +:1049900008000000D44A01100100000000000000DF +:1049A000000000000100000008000000F44A0110AF +:1049B0000100000008000000144B0110010000007D +:1049C00000000000000000000100000008000000DE +:1049D000344B01100100000008000000544B01108E +:1049E00001000000000000000000000001000000C5 +:1049F00008000000744B01100100000008000000D6 +:104A0000944B0110010000000000000000000000B5 +:104A10000100000008000000B44B0110010000007C +:104A200008000000D44B011001000000000000004D +:104A30000000000096C298D84539A1F4A033EB2DB0 +:104A4000817D0377F240A463E5E6BCF847422CE1A0 +:104A5000F2D1176BF551BF376840B6CBCE5E316BE4 +:104A60005733CE2B169E0F7C4AEBE78E9B7F1AFEA8 +:104A7000E242E34FC9D23AE803C56D5DBE35D0AE20 +:104A80001D7A9FCA331ED2CBAC882755F0B99CE063 +:104A900031DD998661F99B3296415838F95A2AB826 +:104AA000960EB24CC1782CC708991924B75928E939 +:104AB0008454E616DD3830DB702C0AA27C5C9DE95C +:104AC000D5460B5F830B604B377DB9C95E24F33D40 +:104AD000797F6C187FE51C4F6024F72AEDD8E291AE +:104AE0007F89499297A72E8D6AB339811389B59A28 +:104AF000B88D429C8D45E64B3F4F1E1F47655E5962 +:104B000022CC725FF1931A271E34C55B63F2A5585D +:104B10005C152EC6F47FBA585A846F5FADA6367EF8 +:104B2000DCF7E167044DAAEE57763AD34E7E26189D +:104B300022239FFF1D4C64C755023FE3D80290BB60 +:104B4000C3EC30409F6F64F4166948A4FA449C9506 +:104B50000C7D675E44918BD8D0D7E7E21FF948629D +:104B60006FA8935DEA3A9902D50B3DE31ED300315D +:104B7000E60C9F4456B2AAFD8815DF524C3527310A +:104B800044CDC06853F891A57194842A92CBD093F8 +:104B9000E988DAE424C639165DA31E6DBA07372604 +:104BA000362AFE6051BCF3D0DE50FC97802E0610F2 +:104BB000154DFAF72765695B66A2752E9C16005A9B +:104BC000B030251A42FB864280C1C4765B1D838EBD +:104BD00094015F82393770EF1FA1F0DB6A105BCE62 +:104BE000C49B6F10501111244F4C7961173A72BC5D +:104BF000FE72584370C8BA04B74BD2F7ABC6233A1B +:104C0000A0093A591D9D4CF95823CCDF02ED7B29B0 +:104C1000870FFA3C4069F2400BA398CEAFA8480238 +:104C20000D1C12629BAF098380AA58A7C612BE70E2 +:104C30009476E3E47D7DEF86FFE337DDDB868B084A +:104C4000277CD7F691544C254F9AFE285EFDF06DD7 +:104C5000370369D696D5DAAD9249F09FF973439E32 +:104C6000AFA7D1F3674107DF78953EA1223DD1E69A +:104C70003CA5E220BF6A5D5235D7BFAE5AA2BE96B0 +:104C8000F4F802C3A4204954EAB382DB2EDBEA0223 +:104C9000D1751C62F085F49E4CDC3989636DC45774 +:104CA000D8035D22707F2D526FC9DA4F9D64FAB42C +:104CB000FEA4C4D72A37B9C0AA59C68B3F58D9ED2C +:104CC000589965F7887D268C4AF9059F9D739AC986 +:104CD000E746DC00F2D055DF000AF54A6ABF56818C +:104CE0002D20EBB511C12852ABE3D14024347945D6 +:104CF00057A51203EECFB87EF792968D3D018C0D2D +:104D000023F2E305592EE384527A3476E5A1B015F7 +:104D100090E2533CD498E7FAA57D8B539135D200AD +:104D2000D11B9F1B3F69089A72F0A911B3FE0E14A4 +:104D3000DA7C0ED383F6E8F887F7FC6D90BE7F3FF0 +:104D40007A2BD713CF32F22D946D42FDAD9AE35FEB +:104D500042BB84EDFC952973A1673E02E3305435D4 +:104D60008E0ADD6703D7A197613BF80CF2333C58FC +:104D7000553423A3995D165F7BBCBBCE61EE4E8A92 +:104D8000C151CC501F0D4D1B53231DB3DA2A386679 +:104D90005284E1955B9B830A814FADAC0FFF42418A +:104DA0006EA9A2A02FA14F1F8982AA3EF3B80F6B54 +:104DB0008F8CD668F1B3BB5169A21193654F0F8DEB +:104DC000BD260FE8B9CBEC6B34C33D9DE45D1E10EE +:104DD000D544E254289EB1F16E4CADB3B7E3C2584E +:104DE000C0FB3443259CDF350741BD19B66E10EC7E +:104DF0000EECBBD6C8CFEF3F831A88E80B29B5B9B4 +:104E0000E0C9A3AE88461E77CD7EB310B621D0D4BC +:104E1000A31608EEA1CAA8B3BF29998ED1F205C185 +:104E2000CF5D91489F0149DB82DF5F3AE10690AD9B +:104E3000E338A4C44B60D2273E3CCE3BF6B053CC03 +:104E4000B0061D65BC86987655BDEBB3E7933AAACC +:104E5000D835C65A96C298D84539A1F4A033EB2D5F +:104E6000817D0377F240A463E5E6BCF847422CE17C +:104E7000F2D1176BF551BF376840B6CBCE5E316BC0 +:104E80005733CE2B169E0F7C4AEBE78E9B7F1AFE84 +:104E9000E242E34F512563FCC2CAB9F3849E17A7CF +:104EA000ADFAE6BCFFFFFFFFFFFFFFFF00000000C1 +:104EB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +:104EC00000000000000000000000000001000000E1 +:104ED000FFFFFFFF982F8A4291443771CFFBC0B587 +:104EE000A5DBB5E95BC25639F111F159A4823F92B5 +:104EF000D55E1CAB98AA07D8015B8312BE8531240E +:104F0000C37D0C55745DBE72FEB1DE80A706DC9BCE +:104F100074F19BC1C1699BE48647BEEFC69DC10F7A +:104F2000CCA10C246F2CE92DAA84744ADCA9B05CB6 +:104F3000DA88F97652513E986DC631A8C82703B079 +:104F4000C77F59BFF30BE0C64791A7D55163CA0687 +:104F500067292914850AB72738211B2EFC6D2C4D93 +:104F6000130D385354730A65BB0A6A762EC9C28181 +:104F7000852C7292A1E8BFA24B661AA8708B4BC217 +:104F8000A3516CC719E892D1240699D685350EF441 +:104F900070A06A1016C1A419086C371E4C774827F8 +:104FA000B5BCB034B30C1C394AAAD84E4FCA9C5B6E +:104FB000F36F2E68EE828F746F63A5781478C884BF +:104FC0000802C78CFAFFBE90EB6C50A4F7A3F9BEA1 +:104FD000F27871C60000051207000B1201001312CF +:104FE0000900171202001B1205002B120A002F12D3 +:104FF000030033120600371204003B120400431270 +:105000000B00471202004B120100531205005B1205 +:105010000600631206006B120C006F1200000412EF +:1050200007000A12010012120900161202001A12D9 +:1050300005002A120A002E12030032120600361250 +:1050400004003A12040042120B00461202004A12F7 +:105050000100521205005A120600621206006A127E +:105060000C006E120000021207000812010010125C +:10507000090014120200181207002012050028125D +:105080000A002C12030030120600341204003812F9 +:10509000040040120B00441202004812010050129A +:1050A0000500581206006012060068120C006C120F +:1050B0000000031207000912010011120900151265 +:1050C0000200191207002112050029120A002D12F0 +:1050D0000300311206003512040039120400411297 +:1050E0000B0045120200491201005112050059122D +:1050F00006006112060069120C006D120505060615 +:105100000606000000000000000085858585858575 +:105110008585808080808080808080808080820102 +:1051200001010101010101818181818181818181EF +:105130008181818181838384848484840809070434 +:105140000405050202020202020202020202020237 +:10515000020303030303030303030303030303869D +:105160008686868686868600000000000000000095 +:10517000000001010101010101000000000C0D0E01 +:105180000F10111213292A2B2C2D2E2F30B393D34D +:10519000B494D4B595D5B696D6BB9BDBBC9CDCBD90 +:1051A0009DDDBE9EDEBF9FDFC0A0E0C1A1E1C2A227 +:1051B000E2C3A3E3C4A4E4C5A5E5C6A6E608090ABC +:1051C0000B4E4F505152535455565758595A5B062F +:1051D00007464700847785788679877A887B897C3B +:1051E0008A7D8B7E8C7F8D808E818F829083000064 +:1051F0004D00000092910000030105040200000030 +:10520000F3F4F5F6F7F8F9FA1415161718191A1B2E +:10521000000C0D0E0F10111213292A2B2C2D2E2FDE +:1052200030B797D7B898D8B999D9BA9ADAC7A7E753 +:10523000C8A8E8C9A9E9CAAAEACBABEBCCACECCDCB +:10524000ADEDCEAEEECFAFEFD0B0F0D1B1F1D2B286 +:10525000F208090A0B4A5C5D5E5F60616263646527 +:10526000666768694B4C0000000C0D0E0F101112A0 +:1052700013B393D3B494D4B595D5B696D6B797D780 +:10528000B898D8B999D9BA9ADABB9BDBBC9CDCBD7B +:105290009DDDBE9EDEBF9FDFC0A0E0C1A1E1C2A236 +:1052A000E208090A0B6A84776B85786C86796D87CA +:1052B0007A6E887B6F897C708A7D718B7E728C7F21 +:1052C000738D80748E81758F827690839291F3F4C2 +:1052D000F5F6F7F8F9FA03010504024D494E4F506F +:1052E0005152535455565758595A5B06074B4C0068 +:1052F00000292A2B2C2D2E2F30B393D3B494D4B560 +:1053000095D5B696D6B797D7B898D8B999D9BA9A45 +:10531000DABB9BDBBC9CDCBD9DDDBE9EDEBF9FDFA0 +:10532000C0A0E0C1A1E1C2A2E208090A0B6A847729 +:105330006B85786C86796D877A6E887B6F897C70D7 +:105340008A7D718B7E728C7F738D80748E81758F58 +:10535000827690839291F3F4F5F6F7F8F9FA030167 +:105360000504024D495C5D5E5F6061626364656671 +:1053700067686946474B4C00000C0D0E0F10111268 +:10538000131415161718191A1B1C1D1E1F20212275 +:10539000232425262728292A2B2C2D2E2F30313265 +:1053A000333435363738393A3B3C3D3E3F40414255 +:1053B000434445B393D3B494D4B595D5B696D6B7F4 +:1053C00097D7B898D8B999D9BA9ADABB9BDBBC9C65 +:1053D000DCBD9DDDBE9EDEBF9FDFC0A0E0C1A1E1C0 +:1053E000C2A2E2C3A3E3C4A4E4C5A5E5C6A6E6C77A +:1053F000A7E7C8A8E8C9A9E9CAAAEACBABEBCCAC35 +:10540000ECCDADEDCEAEEECFAFEFD0B0F0D1B1F18F +:10541000D2B2F208090A0B6A84776B85786C8679B8 +:105420006D877A6E887B6F897C708A7D718B7E72C6 +:105430008C7F738D80748E81758F8276908392912C +:10544000F3F4F5F6F7F8F9FA030105040249484ABE +:105450004D464706074B4C00000C0D0E0F10111265 +:10546000131415161718191A1B1C1D1E1F20212294 +:10547000232425262728292A2B2C2D2E2F30313284 +:10548000333435363738393A3B3C3D3E3F40414274 +:10549000434445B393D3B494D4B595D5B696D6B713 +:1054A00097D7B898D8B999D9BA9ADABB9BDBBC9C84 +:1054B000DCBD9DDDBE9EDEBF9FDFC0A0E0C1A1E1DF +:1054C000C2A2E2C3A3E3C4A4E4C5A5E5C6A6E6C799 +:1054D000A7E7C8A8E8C9A9E9CAAAEACBABEBCCAC54 +:1054E000ECCDADEDCEAEEECFAFEFD0B0F0D1B1F1AF +:1054F000D2B2F208090A0B6A84776B85786C8679D8 +:105500006D877A6E887B6F897C708A7D718B7E72E5 +:105510008C7F738D80748E81758F8276908392914B +:10552000F3F4F5F6F7F8F9FA030105040249484ADD +:105530004D4E4F505152535455565758595A5B5C23 +:105540005D5E5F60616263646566676869464706C1 +:10555000074B4C0000BB9BDBBC9CDCBD9DDDBE9EB5 +:10556000DEBF9FDFC0A0E0C1A1E1C2A2E292910034 +:105570000006070000B393D3B494D4B595D5B6967E +:10558000D6B797D7B898D8B999D9BA9ADABB9BDB6E +:10559000BC9CDCBD9DDDBE9EDEBF9FDFC0A0E0C128 +:1055A000A1E1C2A2E2C3A3E3C4A4E4C5A5E5C6A6E3 +:1055B000E6C7A7E7C8A8E8C9A9E9CAAAEACBABEB3E +:1055C000CCACECCDADEDCEAEEECFAFEFD0B0F0D1F8 +:1055D000B1F1D2B2F24E4F50515253545556575822 +:1055E000595A5B5C5D5E5F606162636465666768B3 +:1055F000694B4C0000B393D3B494D4B595D5B6960B +:10560000D6B797D7B898D8B999D9BA9ADABB9BDBED +:10561000BC9CDCBD9DDDBE9EDEBF9FDFC0A0E0C1A7 +:10562000A1E1C2A2E2C3A3E3C4A4E4C5A5E5C6A662 +:10563000E6C7A7E7C8A8E8C9A9E9CAAAEACBABEBBD +:10564000CCACECCDADEDCEAEEECFAFEFD0B0F0D177 +:10565000B1F1D2B2F24E4F505152535455565758A1 +:10566000595A5B5C5D5E5F60616263646566676832 +:10567000694B4C0000010001020300010203040514 +:1056800006070001020304050607000102030405E2 +:10569000060708090A0B00000102030405060700BB +:1056A0000102030405060708090A0B0C0D0001009E +:1056B00001020304000000000102030001020304D0 +:1056C00005060708090A0B0C0D0001020304050674 +:1056D0000708090A0B0C0D00010203040506070068 +:1056E0005700560087008700DF00FB001B00030007 +:1056F0007F007F000C000E00010002000500080082 +:105700000800000012000000745701101201000090 +:1057100074570110120200007457011012030000A8 +:105720007457011012040000745701101205000094 +:1057300074570110050E0000050D00050D01050D43 +:1057400002050D03050D04050D050000050F0005FC +:105750000F01000000000000000000000000000039 +:105760000000000000000000000000000000000039 +:1057700000000000679F0010519F0010ED9D001079 +:10578000D19D0010C59E0010DD9D0010419E0010AF +:1057900015000000DCA6001010A7001016A70010CE +:1057A00010A7001010A70010E0A60010F8A6001027 +:1057B00010A7001000A7001010A7001010A70010DD +:1057C00010A7001010A7001010A7001004A70010C9 +:1057D00010A7001008A7001010A7001010A70010B5 +:1057E00010A7001010A7001010A7001010A700109D +:1057F0000CA70010FCA600101AA7001048A7001064 +:105800004EA7001048A7001048A700101AA70010C4 +:105810003CA7001048A7001040A7001048A70010A0 +:1058200048A7001048A7001048A7001048A700107C +:105830001AA7001048A700101AA7001048A70010C8 +:1058400048A7001048A7001048A7001048A700105C +:1058500048A7001044A700101AA70010000000007D +:105860000000080018001C001D001E001F00200082 +:105870002100220023002400250026002C002D00FA +:105880002F00300031003700380039003A003B006B +:105890003C003D000000000000001D00000008006A +:1058A0001000180020002800300038004000480098 +:1058B0005000580060006800700078000000000090 +:1058C00000000000000008000000000000000100CF +:1058D00001000100010001003F00400040004400C1 +:1058E0007E007E00F600F800F800F800F900F900EC +:1058F000FB00FD00FD00FF00000101010E01100191 +:105900001001300130013001F2AC001006AD001082 +:1059100006AD001006AD001006AD001006AD00107B +:1059200006AD001006AD001006AD001006AD00106B +:1059300006AD001006AD001006AD001006AD00105B +:1059400006AD001006AD001006AD001006AD00104B +:1059500006AD001006AD001006AD0010D2AC001070 +:105960000CAD0010D6AC0010DEAC0010E2AC0010A4 +:10597000E6AC0010EAAC0010EEAC0010F6AC001083 +:10598000FAAC0010FEAC001002AD0010FF1F0000CA +:105990000000604000006140000062400000634081 +:1059A0000000644000006540000066400000674061 +:1059B000000068400000694000006A4000006B4041 +:1059C00000006C40000102030405060708090A0BE9 +:1059D0000C0000002700280029002A002B002C00C2 +:1059E0002D002E0012002F00300031003200000088 +:1059F0000000000000000000000000005C650108DD +:105A000000000000000000000A000000000000008C +:105A10000C00000008000000000200000000000070 +:105A20000000000000000000000000000000000076 +:105A300014000000000000000B0000000000000047 +:105A4000000000003F0000000000000004BF001044 +:105A500020BF001008BF00100CBF00101CBF0010BA +:105A60001CBF00101CBF00101CBF00101CBF00108A +:105A70001CBF00101CBF00101CBF00101CBF00107A +:105A800014BF00101CBF001010BF00101CBF00107E +:105A90001CBF001018BF0010A0BF0010AEBF001048 +:105AA000AEBF0010AEBF0010AEBF0010AEBF001002 +:105AB000AEBF001050BF0010AEBF0010AEBF001050 +:105AC000AEBF0010AEBF0010AEBF0010AEBF0010E2 +:105AD000AEBF001050BF00106ABF0010AEBF001074 +:105AE000AEBF001082BF0010AEBF0010AEBF0010EE +:105AF000AEBF0010AEBF001076BF00100001020361 +:105B0000A00F0000B90B0000D0070000DD05000069 +:105B1000E8030000EF020000F4010000780100003B +:105B2000FA000000BC0000007D0000005E000000E4 +:105B30003F0000002F0000002000000018000000BF +:105B4000100000000C00000008000000060000002B +:105B5000040000000300000002000000020000003A +:105B6000010000000100000000002040000024406F +:105B70000000004000000000000023400000304012 +:105B80000000314000009F40000022400000104013 +:105B900000009D402020202020101010101D1D808E +:105BA00017007500FF0306020600360410200000EF +:105BB0007FC0000000040000000000000019324B0C +:105BC000647D0000000000804000080B1000000011 +:105BD0000000FF012002001F00800004FF081018D1 +:105BE000001000140018001C4044484C50000000F5 +:105BF000081000000800000004000000041000006D +:105C00000012000004210000002100000016000026 +:105C100040114002C41300138013A01340138813D3 +:105C2000A81320001C00000052D70010F6D6001068 +:105C3000FED60010FED600100ED700100ED70010B2 +:105C40002AD700102AD700109CD60010A6D8001022 +:105C500010D8001018D8001024D8001036D8001022 +:105C60004AD8001064D8001082D80010CAD700109B +:105C70007EE700108EE70010A0E70010B2E70010EA +:105C80008EE700108EE70010C4E700100EEB001046 +:105C90002EEB001024EB00101AEB001010EB00109C +:105CA00006EB0010030000000100000001000000EE +:105CB0000000000005036000040000000100000077 +:105CC0000000000001000000060460000800000061 +:105CD00000680108E5180110050000000500070034 +:105CE00005010F000B0701000B0702000B0707005F +:105CF0000B0801000B0802000B0100000B08030059 +:105D00000B0804000B0805000B0806000B08070031 +:105D1000010000000B0000001D000000000000005A +:105D20000000000000000000000000000100000072 +:105D30000000000000000000000000000000000063 +:105D4000000000000B060700010000000A00000030 +:105D50001D00000000000000000000000000000026 +:105D60000000000001000000000000000000000032 +:105D70000000000000000000000000000B0606000C +:105D800001000000060000001D00000000000000EF +:105D90000000000000000000000000000100000002 +:105DA00000000000000000000000000000000000F3 +:105DB000000000000B0604000B0000000B000100B7 +:105DC00001000000030000000000000000000018B7 +:105DD0000000000400000000B45E0110600000003C +:105DE00000000000FFFFFFFF0000000000000000B7 +:105DF00000000000DC00000000000000FFFFFFFFCB +:105E0000000000000000000000000000340000005E +:105E100000000000FFFFFFFF020000000000000084 +:105E200002000000EC000000000200000100000081 +:105E30000200000004000000020000003500000025 +:105E400000000000FFFFFFFF000000000000000056 +:105E5000000000000500000000000000FFFFFFFF41 +:105E6000000000000000000000000000040000002E +:105E700000000000FFFFFFFF000000000000000026 +:105E8000000000000600000000000000FFFFFFFF10 +:105E90000000000000000000000000000100000001 +:105EA00000000000FFFFFFFF0000000000000000F6 +:105EB000000000000400000000000004245E011047 +:105EC000845E01106C5E0110F45D0110000004009E +:105ED000DC5D01100C5E011000020000545E011038 +:105EE0003C5E01109C5E01100000000001000000FB +:105EF00002000000280A0000E0040700140500006A +:105F00000000000000000000000000000000000091 +:105F1000000000000000000001000000285F0110E8 +:105F20000200000046000000C05D0110F401000006 +:105F3000140004010A0009050800030063010000C1 +:105F4000040000000401000004020000040300003B +:105F500004040000040500001E010500002C20665A +:105F6000756E6374696F6E3A200061737365727445 +:105F7000696F6E2022257322206661696C65643A20 +:105F80002066696C6520222573222C206C696E6561 +:105F9000202564257325730A00232D302B200068EB +:105FA0006C4C006566674546470030313233343506 +:105FB0003637383941424344454600303132333474 +:105FC0003536373839616263646566000000000069 +:085FD00014C1FF7F0100000075 +:105FD800000000100000000880000000F85F0110B9 +:085FE800800000080006000023 +:085FF0002407000854620100BF +:105FF8009DD40010010000000000000040070008C8 +:10600800000000000000000000000000B4000008CC +:10601800C0000008CC000008D8000008E400000810 +:1060280000000000007F0000000000000080020067 +:10603800017F00000080020000001C0002800000B8 +:106048000002000000001C00077F000000801E0006 +:10605800006C0000038000000000440000000800FD +:10606800000000001CA379B7010000000600000032 +:106078001100000000000000000000000000000007 +:106088000000000001000000000000000000000007 +:1060980000000000000000000000000004000000F4 +:1060A80000000000E86201084C630108346301083D +:1060B800B862010800000000A0620108D06201086F +:1060C8000000000000630108186301086463010808 +:1060D800B0010008000000000000000000000000FF +:1060E80000000000000000000000000000000000A8 +:1060F8000000000000000000000000000000000098 +:106108000100000006000000000000000000001868 +:1061180000000008000000002C01000890010008A1 +:106128005A00000000000000FFFFFFFF0000000011 +:10613800080000000000000001000000AC01000899 +:1061480000000000000000000700A000010000009F +:1061580001000000012E01107C51011010520110A5 +:1061680068520110F0520110785301105854011070 +:10617800545501107055011074550110F455011053 +:10618800D4510110E0510110F0510110F4510110E7 +:10619800F851011000520110085201103457011033 +:1061A8004C5701104F570110385701103B57011039 +:1061B8003E5701104157011044570110475701102D +:1061C80009A300100E1400000000000000000000E9 +:1061D800C5A500100E14000000000000000000001B +:1061E80029AC00103E000000000000000000000084 +:1061F800890700008907000000093D0000093D00EB +:1062080000127A0000093D00A00F00000400000001 +:10621800650201100100000000000000206801086C +:106228000000000000000000FF0000000000000067 +:106238000300000030680108000000003068010811 +:1062480098680108006901080000000000000000CB +:106258000000000000000000000000000000000036 +:106268000000000000000000000000000000000026 +:106278000000000000000000000000000000000016 +:1062880000000000C8020008F5000010C900001056 +:1062980010B50004440B002827D0144B1A68136A61 +:1062A800BA21515ACA00521A9B181B68002BF4DAFB +:1062B8000F4B3E221A600F4B0F4A1A600F4BA32256 +:1062C800D200062199500E4A9C509B58074B1A68D9 +:1062D800136AB431515ACA00521A9B1800225A60E4 +:1062E800064A074BD358002BFADA10BD0C66010892 +:1062F80004012640080126401E1F00000000264019 +:106308001C05000010B54378FF2B00D010BD00F02D +:1063180047F9124B1A683323D35C032B00D801BE0C +:106328000E4B1A68136ABA21515A4A0052189B1820 +:10633800DA680B4B1A600B4B002119600A4B0131CC +:1063480019605268094B1A6013680B43136013688D +:10635800DB07FCD400F044F9D8E7C0460C66010816 +:106368003066010824660108286601082C660108C1 +:10637800F0B583B0009001914D4B1A683323D35C7C +:10638800002B00D101BE4A4B1B681F6ABC229C58D7 +:10639800E4196C3A9B5C002B68D000F0F1F8060019 +:1063A80003280ED000F0FCF80500424A424BD358AF +:1063B800002B3CDB414C032E51D0280000F010F993 +:1063C8006CE03B4B1A683323D35C062B00D801BE24 +:1063D800374B19680A6ABA23C85A43001B185B006E +:1063E800D218BC23CB589B181B68002B5BDB002002 +:1063F80000F0EEF8324B984257D0324B1A6800231F +:106408000021012000F0B4F8051E02D02B4C45E015 +:106418000135002000F0DCF8294B984202D02A4BC5 +:106428009D42F5D9284B9D42BCD9244C36E0274AD9 +:106438000121380000F0C4F8002801D01F4CBAE749 +:106448000198FFF725FF009B002B06D02368002B3F +:10645800FCDB00F09DF80400ADE71D4CABE7012123 +:10646800002000F0A5F80028F9D1A6E700F098F878 +:106478000600164A0121380000F0A2F8002809D1C8 +:10648800009B002B0DD02368002BFCDB00F080F86C +:10649800040000E0094C300000F0A2F8200003B02E +:1064A800F0BD0B4CF7E7054CF8E7044CF6E7C0469F +:1064B8000C660108000026401C050000050052007B +:1064C8000101880020660108EF49020010660108F2 +:1064D80001005000F0B5C64600B51C4B1B68596852 +:1064E8001B4A136904242343136101282CD030BFAD +:1064F80086235B00CB58002B23D1164C2768164BFC +:10650800A320C0001E58154A90461568144A2260F8 +:1065180006241C503E2042461060124A063098500D +:106528000D4A104BD358002BFADA86235B000E4A2B +:10653800CA50084B1F60084AA323DB00D650074BFC +:106548001D6080BCB846F0BD20BFD1E70C660108CD +:1065580000ED00E008012640000026400401264026 +:106568001E1F00001C050000AAAAAAAA000000001D +:1065780001B40248844601BC604700BF91C90010BD +:1065880001B40248844601BC604700BF211A0110CB +:1065980001B40248844601BC604700BFA9C200108C +:1065A80001B40248844601BC604700BF0B050010D7 +:1065B80001B40248844601BC604700BF21CC0010EA +:1065C80001B40248844601BC604700BFF1C700100F +:1065D80001B40248844601BC604700BFA9CC001042 +:1065E80001B40248844601BC604700BF130500108F +:1065F8000000000000000000000000000000000093 +:0866080000000000000000008A +:020000041600E4 +:08080000185F01100000000068 +:107C0000FC01000020122101000000000008001605 +:107C10000000001000000000000000000000000054 +:107C20000000000000000000000000000000000054 +:107C30000000000000000000000000000000000044 +:107C40000000000000000000000000000000000034 +:107C50000000000000000000000000000000000024 +:107C60000000000000000000000000000000000014 +:107C70000000000000000000000000000000000004 +:107C800000000000000000000000000000000000F4 +:107C900000000000000000000000000000000000E4 +:107CA00000000000000000000000000000000000D4 +:107CB00000000000000000000000000000000000C4 +:107CC00000000000000000000000000000000000B4 +:107CD00000000000000000000000000000000000A4 +:107CE0000000000000000000000000000000000094 +:107CF0000000000000000000000000000000000084 +:107D00000000000000000000000000000000000073 +:107D10000000000000000000000000000000000063 +:107D20000000000000000000000000000000000053 +:107D30000000000000000000000000000000000043 +:107D40000000000000000000000000000000000033 +:107D50000000000000000000000000000000000023 +:107D60000000000000000000000000000000000013 +:107D70000000000000000000000000000000000003 +:107D800000000000000000000000000000000000F3 +:107D900000000000000000000000000000000000E3 +:107DA00000000000000000000000000000000000D3 +:107DB00000000000000000000000000000000000C3 +:107DC00000000000000000000000000000000000B3 +:107DD00000000000000000000000000000000000A3 +:107DE0000000000000000000000000000000000093 +:107DF0000000000000000000C20200000000B33BD1 +:040000051000051BC7 +:00000001FF diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh b/third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh index ef6bf3bc30ad95..da17582944adc7 100755 --- a/third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh +++ b/third_party/infineon/psoc6/psoc6_sdk/ota/ota_base_build.sh @@ -1,7 +1,22 @@ -OUT_DIR=$1 -HEX_NAME=$2 -ANYCLOUD_DIR=third_party/infineon/psoc6/psoc6_sdk/libs/anycloud-ota/ +#!/bin/bash -mv "$OUT_DIR"/"$HEX_NAME".hex "$OUT_DIR"/"$HEX_NAME".unsigned.hex +SCRIPT_ROOT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")/" && pwd)" +# Windows: convert /cygdrive/d/git to D:/git +if [[ ${OS:-} == Windows_NT ]]; then + SCRIPT_ROOT_DIR="$(cygpath --mixed "$SCRIPT_ROOT_PATH")" +else + SCRIPT_ROOT_DIR="$SCRIPT_ROOT_PATH" +fi -./"$ANYCLOUD_DIR"/scripts/sign_script.bash "$OUT_DIR"/ "$HEX_NAME" python3 arm-none-eabi-objcopy "-O ihex" "" "$ANYCLOUD_DIR"/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/scripts/ imgtool_v1.7.0/imgtool.py create 0xFF 0x400 3584 1.0.0 0x00018000 0x001C0000 arm-none-eabi-objcopy "" +APP=${1:-"psoc6-lock"} # {psoc6-lock, psoc6-light, psoc6-all-clusters} +HEX_NAME=${2:-"chip-psoc6-lock-example"} # {chip-psoc6-lock-example, chip-psoc6-lighting-example, chip-psoc6-clusters-example} + +LIBS_DIR="$SCRIPT_ROOT_DIR/../libs" +MATTER_SCRIPTS_DIR="$SCRIPT_ROOT_DIR/../../../../../scripts" +OUT_DIR="$SCRIPT_ROOT_DIR/../../../../../out/infineon-$APP-ota" + +source "$MATTER_SCRIPTS_DIR/activate.sh" + +arm-none-eabi-objcopy -I ihex -O elf32-little "$OUT_DIR/$HEX_NAME".hex "$OUT_DIR/$HEX_NAME".elf +chmod +x "$OUT_DIR/$HEX_NAME".elf +"$LIBS_DIR"/ota-bootloader-abstraction/scripts/mcuboot/sign_script.bash "$OUT_DIR" "$HEX_NAME" python3 arm-none-eabi-objcopy "-O ihex" "elf_first" "$LIBS_DIR"/ota-bootloader-abstraction/makefiles/mcuboot/../../scripts/mcuboot/imgtool imgtool.py create 0xFF 0x400 3584 1.0.0 0x028000 0x1c0000 arm-none-eabi-objcopy "-k $LIBS_DIR/ota-bootloader-abstraction/scripts/mcuboot/keys/cypress-test-ec-p256.pem" diff --git a/third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh b/third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh index 4f1c67797967bb..c6d46fd5c2ad3e 100755 --- a/third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh +++ b/third_party/infineon/psoc6/psoc6_sdk/ota/ota_update_build.sh @@ -1,13 +1,30 @@ -OUT_DIR=$1 -HEX_NAME=$2 -ANYCLOUD_DIR=third_party/infineon/psoc6/psoc6_sdk/libs/anycloud-ota/ +#!/bin/bash -mv "$OUT_DIR"/"$HEX_NAME".hex "$OUT_DIR"/"$HEX_NAME".unsigned.hex +SCRIPT_ROOT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")/" && pwd)" +# Windows: convert /cygdrive/d/git to D:/git +if [[ ${OS:-} == Windows_NT ]]; then + SCRIPT_ROOT_DIR="$(cygpath --mixed "$SCRIPT_ROOT_PATH")" +else + SCRIPT_ROOT_DIR="$SCRIPT_ROOT_PATH" +fi + +APP=${1:-"psoc6-lock"} # {psoc6-lock, psoc6-light, psoc6-all-clusters} +HEX_NAME=${2:-"chip-psoc6-lock-example"} # {chip-psoc6-lock-example, chip-psoc6-lighting-example, chip-psoc6-clusters-example} + +LIBS_DIR="$SCRIPT_ROOT_DIR/../libs" +ROOT_DIR="$SCRIPT_ROOT_DIR/../../../../../" +OUT_DIR="$ROOT_DIR/out/infineon-$APP-ota-updateimage" + +source "$ROOT_DIR/scripts/activate.sh" + +arm-none-eabi-objcopy -I ihex -O elf32-little "$OUT_DIR/$HEX_NAME".hex "$OUT_DIR/$HEX_NAME".elf + +chmod +x "$OUT_DIR/$HEX_NAME".elf -./"$ANYCLOUD_DIR"/scripts/sign_script.bash "$OUT_DIR"/ "$HEX_NAME" python3 arm-none-eabi-objcopy "-O ihex" "" "$ANYCLOUD_DIR"/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/scripts/ imgtool_v1.7.0/imgtool.py sign 0xFF 0x400 3584 1.0.0 0x00018000 0x001C0000 arm-none-eabi-objcopy "-k $ANYCLOUD_DIR/source/COMPONENT_OTA_MCUBOOT_PSOC/mcuboot/keys/cypress-test-ec-p256.pem" +"$LIBS_DIR"/ota-bootloader-abstraction/scripts/mcuboot/sign_script.bash "$OUT_DIR" "$HEX_NAME" python3 arm-none-eabi-objcopy "-O ihex" "elf_first" "$LIBS_DIR"/ota-bootloader-abstraction/makefiles/mcuboot/../../scripts/mcuboot/imgtool imgtool.py sign 0xFF 0x400 3584 1.0.0 0x028000 0x1c0000 arm-none-eabi-objcopy "-k $LIBS_DIR/ota-bootloader-abstraction/scripts/mcuboot/keys/cypress-test-ec-p256.pem" if [ -f "$OUT_DIR"/"$HEX_NAME".ota ]; then rm "$OUT_DIR"/"$HEX_NAME".ota fi -src/app/ota_image_tool.py create -v 0xFFF1 -p 0x8000 -vn 2 -vs "2.0" -da sha256 "$OUT_DIR"/"$HEX_NAME".bin "$OUT_DIR"/"$HEX_NAME".ota +python3 "$ROOT_DIR"/src/app/ota_image_tool.py create -v 0xFFF1 -p 0x8000 -vn 2 -vs "2.0" -da sha256 "$OUT_DIR"/"$HEX_NAME".bin "$OUT_DIR"/"$HEX_NAME".ota diff --git a/third_party/openthread/platforms/efr32/BUILD.gn b/third_party/openthread/platforms/efr32/BUILD.gn index 381c6407f2c7cd..69e55a5d76151d 100644 --- a/third_party/openthread/platforms/efr32/BUILD.gn +++ b/third_party/openthread/platforms/efr32/BUILD.gn @@ -32,11 +32,9 @@ config("openthread_efr32_config") { "${sl_ot_efr32_root}", "${chip_root}/examples/platform/efr32", "${sdk_support_root}/matter/efr32/${silabs_family}/${silabs_board}", + "${sdk_support_root}/matter/efr32/${silabs_family}/${silabs_board}/config", "${sl_ot_platform_abstraction}/include", "${sl_ot_platform_abstraction}/rtos", - - #TODO this is for sl_openthread_features_config.h. should use generated one per board when sl_ot_abstraction is integrated - "${sl_ot_libs_path}/config", ] # temporarily disable check until gsdk pulls in a more recent version of openthread diff --git a/third_party/silabs/BUILD.gn b/third_party/silabs/BUILD.gn index 915cf8ba2bf164..e08c7cd0bd11bd 100644 --- a/third_party/silabs/BUILD.gn +++ b/third_party/silabs/BUILD.gn @@ -211,6 +211,7 @@ if (wifi_soc != true) { # CCP board include_dirs = [ "${sl_ot_platform_abstraction}/include" ] } + sources += [ "${sl_ot_platform_abstraction}/efr32/sleep.c" ] # Use silabs openthread library stack with or without coap api enabled COAP_API = "" diff --git a/third_party/silabs/efr32_sdk.gni b/third_party/silabs/efr32_sdk.gni index 87d0b0bc078d06..08695af1fc3800 100644 --- a/third_party/silabs/efr32_sdk.gni +++ b/third_party/silabs/efr32_sdk.gni @@ -222,12 +222,15 @@ template("efr32_sdk") { "${efr32_sdk_root}/util/third_party/freertos/kernel/include", "${silabs_gen_folder}/config", "${silabs_gen_folder}/autogen", + "${sl_ot_platform_abstraction}/rtos", + "${efr32_sdk_root}/protocol/openthread/include", + "${efr32_sdk_root}/util/third_party/openthread/include", + "${efr32_sdk_root}/util/third_party/openthread/src/core", + "${efr32_sdk_root}/util/third_party/openthread/examples/platforms/", + "${sdk_support_root}/matter/efr32/${silabs_family}/${silabs_board}/config", # Headers needed for Init no function will be called if OT is not used "${sl_ot_efr32_root}", - - # TODO this is for sl_openthread_features_config.h. should use generated one per board when sl_ot_abstraction is integrated - "${sl_ot_libs_path}/config", ] if (is_series_2) { @@ -437,7 +440,6 @@ template("efr32_sdk") { "SL_OPENTHREAD_STACK_FEATURES_CONFIG_FILE=\"sl_openthread_features_config.h\"", "SL_CSL_TIMEOUT=${sl_ot_csl_timeout_sec}", "CIRCULAR_QUEUE_USE_LOCAL_CONFIG_HEADER=1", - "MATTER_INTEGRATION=1", ] if (silabs_log_enabled && chip_logging) { @@ -475,6 +477,25 @@ template("efr32_sdk") { ] } + if (defined(invoker.chip_enable_openthread) && + invoker.chip_enable_openthread) { + defines += [ + "SL_OT_ENABLE=1", + + #TODO: Remove these defines once sl_openthread_rtos_config is included in sl_ot_rtos_adaptation.c + "SL_OPENTHREAD_RTOS_STACK_TASK_PRIORITY=24", + "SL_OPENTHREAD_RTOS_APP_TASK_PRIORITY=23", + "SL_OPENTHREAD_RTOS_CLI_TASK_PRIORITY=16", + "SL_OPENTHREAD_STACK_TASK_MEM_SIZE=4608", + "SL_OPENTHREAD_APP_TASK_MEM_SIZE=4608", + "SL_OPENTHREAD_CLI_TASK_MEM_SIZE=2048", + "SL_OPENTHREAD_RTOS_CLI_TASK_PRIORITY=16", + "SL_OPENTHREAD_OS_CLI_TASK_SIZE=2048", + "SL_OPENTHREAD_ENABLE_APP_TASK=0", + "SL_OPENTHREAD_ENABLE_CLI_TASK=0", + ] + } + if (defined(invoker.chip_enable_wifi) && invoker.chip_enable_wifi) { if (enable_dic) { assert(chip_enable_wifi_ipv4, "enable chip_enable_wifi_ipv4") @@ -809,6 +830,15 @@ template("efr32_sdk") { ] } + if (defined(invoker.chip_enable_openthread) && + invoker.chip_enable_openthread) { + sources += [ + "${silabs_gen_folder}/autogen/sl_ot_custom_cli.c", + "${silabs_gen_folder}/autogen/sl_ot_init.c", + "${sl_ot_platform_abstraction}/rtos/sl_ot_rtos_adaptation.c", + ] + } + if (use_wstk_buttons) { sources += [ "${efr32_sdk_root}/platform/driver/button/src/sl_button.c", @@ -886,6 +916,8 @@ template("efr32_sdk") { sources += [ "${efr32_sdk_root}/hardware/driver/configuration_over_swo/src/sl_cos.c", "${efr32_sdk_root}/platform/driver/debug/src/sl_debug_swo.c", + "${efr32_sdk_root}/util/third_party/mbedtls/library/hmac_drbg.c", + "${efr32_sdk_root}/util/third_party/mbedtls/library/psa_crypto_ecp.c", ] } @@ -947,7 +979,6 @@ template("efr32_sdk") { "${efr32_sdk_root}/platform/Device/SiliconLabs/MGM24/Source/startup_mgm24.c", "${efr32_sdk_root}/platform/Device/SiliconLabs/MGM24/Source/system_mgm24.c", "${efr32_sdk_root}/platform/radio/rail_lib/plugin/fem_util/sl_fem_util.c", - "${efr32_sdk_root}/platform/radio/rail_lib/plugin/rail_util_rssi/sl_rail_util_rssi.c", "${efr32_sdk_root}/platform/service/device_manager/clocks/sl_device_clock_efr32xg24.c", "${efr32_sdk_root}/platform/service/device_manager/devices/sl_device_peripheral_hal_efr32xg24.c", ] @@ -963,6 +994,7 @@ template("efr32_sdk") { if (is_series_2) { sources += [ "${efr32_sdk_root}/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c", + "${efr32_sdk_root}/platform/radio/rail_lib/plugin/rail_util_rssi/sl_rail_util_rssi.c", "${efr32_sdk_root}/platform/radio/rail_lib/plugin/rail_util_sequencer/sl_rail_util_sequencer.c", "${efr32_sdk_root}/platform/security/sl_component/se_manager/src/sl_se_manager.c", "${efr32_sdk_root}/platform/security/sl_component/se_manager/src/sl_se_manager_attestation.c", diff --git a/third_party/silabs/lwip.gni b/third_party/silabs/lwip.gni index 9a35e7c45f7a61..b0b6a0db0d2c9f 100644 --- a/third_party/silabs/lwip.gni +++ b/third_party/silabs/lwip.gni @@ -169,8 +169,10 @@ template("lwip_target") { "${_lwip_root}/src/core/ipv6/ip6.c", "${_lwip_root}/src/core/ipv6/ip6_addr.c", "${_lwip_root}/src/core/ipv6/ip6_frag.c", - "${_lwip_root}/src/core/ipv6/mld6.c", "${_lwip_root}/src/core/ipv6/nd6.c", + + # TODO: When updating to next Si SDK version, revert change. + "${sdk_support_root}/src/core/ipv6/mld6.c", ] } diff --git a/third_party/silabs/matter_support b/third_party/silabs/matter_support index 9e983904a64d2f..9084b6fa2f9407 160000 --- a/third_party/silabs/matter_support +++ b/third_party/silabs/matter_support @@ -1 +1 @@ -Subproject commit 9e983904a64d2f74280cd48b65ffd4457abd64f7 +Subproject commit 9084b6fa2f9407396a7f2db12975e6e89fe07a8c diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp index 0e519739bea690..ca35f4d8464e3c 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp @@ -9397,6 +9397,52 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl } // namespace OperatingMode +namespace MaximumCheckInBackOff { + +Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +{ + using Traits = NumericAttributeTraits; + Traits::StorageType temp; + uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp); + Protocols::InteractionModel::Status status = + emberAfReadAttribute(endpoint, Clusters::IcdManagement::Id, Id, readable, sizeof(temp)); + VerifyOrReturnError(Protocols::InteractionModel::Status::Success == status, status); + if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) + { + return Protocols::InteractionModel::Status::ConstraintError; + } + *value = Traits::StorageToWorking(temp); + return status; +} + +Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +{ + using Traits = NumericAttributeTraits; + if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + { + return Protocols::InteractionModel::Status::ConstraintError; + } + Traits::StorageType storageValue; + Traits::WorkingToStorage(value, storageValue); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); + return emberAfWriteAttribute(endpoint, Clusters::IcdManagement::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); +} + +Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +{ + using Traits = NumericAttributeTraits; + if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + { + return Protocols::InteractionModel::Status::ConstraintError; + } + Traits::StorageType storageValue; + Traits::WorkingToStorage(value, storageValue); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); + return emberAfWriteAttribute(endpoint, Clusters::IcdManagement::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); +} + +} // namespace MaximumCheckInBackOff + namespace FeatureMap { Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h index 3fed44373526df..78334996c0e75e 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h @@ -1506,6 +1506,12 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl MarkAttributeDirty markDirty); } // namespace OperatingMode +namespace MaximumCheckInBackOff { +Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +} // namespace MaximumCheckInBackOff + namespace FeatureMap { Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h index ab6514fdf02103..80e42e929fe08a 100644 --- a/zzz_generated/app-common/app-common/zap-generated/callback.h +++ b/zzz_generated/app-common/app-common/zap-generated/callback.h @@ -6317,12 +6317,6 @@ bool emberAfThermostatClusterCancelPresetsSchedulesEditRequestCallback( bool emberAfThermostatClusterCommitPresetsSchedulesRequestCallback( chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, const chip::app::Clusters::Thermostat::Commands::CommitPresetsSchedulesRequest::DecodableType & commandData); -/** - * @brief Thermostat Cluster CancelSetActivePresetRequest Command callback (from client) - */ -bool emberAfThermostatClusterCancelSetActivePresetRequestCallback( - chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, - const chip::app::Clusters::Thermostat::Commands::CancelSetActivePresetRequest::DecodableType & commandData); /** * @brief Thermostat Cluster SetTemperatureSetpointHoldPolicy Command callback (from client) */ diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h index 99b7167b26bee3..62bf3473649525 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h @@ -1631,6 +1631,7 @@ enum class Feature : uint32_t kCheckInProtocolSupport = 0x1, kUserActiveModeTrigger = 0x2, kLongIdleTimeSupport = 0x4, + kDynamicSitLitSupport = 0x8, }; // Bitmap for UserActiveModeTriggerBitmap @@ -4052,7 +4053,6 @@ enum class Feature : uint32_t kMatterScheduleConfiguration = 0x80, kPresets = 0x100, kSetpoints = 0x200, - kQueuedPresetsSupported = 0x400, }; // Bitmap for HVACSystemTypeBitmap diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp index 3244826b526af4..8fc3c32562d3d7 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp @@ -9896,6 +9896,8 @@ CHIP_ERROR TypeInfo::DecodableType::Decode(TLV::TLVReader & reader, const Concre return DataModel::Decode(reader, userActiveModeTriggerInstruction); case Attributes::OperatingMode::TypeInfo::GetAttributeId(): return DataModel::Decode(reader, operatingMode); + case Attributes::MaximumCheckInBackOff::TypeInfo::GetAttributeId(): + return DataModel::Decode(reader, maximumCheckInBackOff); case Attributes::GeneratedCommandList::TypeInfo::GetAttributeId(): return DataModel::Decode(reader, generatedCommandList); case Attributes::AcceptedCommandList::TypeInfo::GetAttributeId(): @@ -20815,47 +20817,6 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) } // namespace PresetTypeStruct -namespace QueuedPresetStruct { -CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const -{ - DataModel::WrappedStructEncoder encoder{ aWriter, aTag }; - encoder.Encode(to_underlying(Fields::kPresetHandle), presetHandle); - encoder.Encode(to_underlying(Fields::kTransitionTimestamp), transitionTimestamp); - return encoder.Finalize(); -} - -CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) -{ - detail::StructDecodeIterator __iterator(reader); - while (true) - { - auto __element = __iterator.Next(); - if (std::holds_alternative(__element)) - { - return std::get(__element); - } - - CHIP_ERROR err = CHIP_NO_ERROR; - const uint8_t __context_tag = std::get(__element); - - if (__context_tag == to_underlying(Fields::kPresetHandle)) - { - err = DataModel::Decode(reader, presetHandle); - } - else if (__context_tag == to_underlying(Fields::kTransitionTimestamp)) - { - err = DataModel::Decode(reader, transitionTimestamp); - } - else - { - } - - ReturnErrorOnFailure(err); - } -} - -} // namespace QueuedPresetStruct - namespace ScheduleTypeStruct { CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const { @@ -21185,7 +21146,6 @@ CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const { DataModel::WrappedStructEncoder encoder{ aWriter, aTag }; encoder.Encode(to_underlying(Fields::kPresetHandle), presetHandle); - encoder.Encode(to_underlying(Fields::kDelayMinutes), delayMinutes); return encoder.Finalize(); } @@ -21207,10 +21167,6 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) { err = DataModel::Decode(reader, presetHandle); } - else if (__context_tag == to_underlying(Fields::kDelayMinutes)) - { - err = DataModel::Decode(reader, delayMinutes); - } else { } @@ -21293,26 +21249,6 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) } } } // namespace CommitPresetsSchedulesRequest. -namespace CancelSetActivePresetRequest { -CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const -{ - DataModel::WrappedStructEncoder encoder{ aWriter, aTag }; - return encoder.Finalize(); -} - -CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) -{ - detail::StructDecodeIterator __iterator(reader); - while (true) - { - auto __element = __iterator.Next(); - if (std::holds_alternative(__element)) - { - return std::get(__element); - } - } -} -} // namespace CancelSetActivePresetRequest. namespace SetTemperatureSetpointHoldPolicy { CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const { @@ -21478,8 +21414,6 @@ CHIP_ERROR TypeInfo::DecodableType::Decode(TLV::TLVReader & reader, const Concre return DataModel::Decode(reader, temperatureSetpointHoldPolicy); case Attributes::SetpointHoldExpiryTimestamp::TypeInfo::GetAttributeId(): return DataModel::Decode(reader, setpointHoldExpiryTimestamp); - case Attributes::QueuedPreset::TypeInfo::GetAttributeId(): - return DataModel::Decode(reader, queuedPreset); case Attributes::GeneratedCommandList::TypeInfo::GetAttributeId(): return DataModel::Decode(reader, generatedCommandList); case Attributes::AcceptedCommandList::TypeInfo::GetAttributeId(): diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index 2e3dddde6d0fc0..9c335d4ba91dcb 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -13483,6 +13483,18 @@ struct TypeInfo static constexpr bool MustUseTimedWrite() { return false; } }; } // namespace OperatingMode +namespace MaximumCheckInBackOff { +struct TypeInfo +{ + using Type = uint32_t; + using DecodableType = uint32_t; + using DecodableArgType = uint32_t; + + static constexpr ClusterId GetClusterId() { return Clusters::IcdManagement::Id; } + static constexpr AttributeId GetAttributeId() { return Attributes::MaximumCheckInBackOff::Id; } + static constexpr bool MustUseTimedWrite() { return false; } +}; +} // namespace MaximumCheckInBackOff namespace GeneratedCommandList { struct TypeInfo : public Clusters::Globals::Attributes::GeneratedCommandList::TypeInfo { @@ -13539,6 +13551,7 @@ struct TypeInfo Attributes::UserActiveModeTriggerInstruction::TypeInfo::DecodableType userActiveModeTriggerInstruction; Attributes::OperatingMode::TypeInfo::DecodableType operatingMode = static_cast(0); + Attributes::MaximumCheckInBackOff::TypeInfo::DecodableType maximumCheckInBackOff = static_cast(0); Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList; Attributes::AcceptedCommandList::TypeInfo::DecodableType acceptedCommandList; Attributes::EventList::TypeInfo::DecodableType eventList; @@ -29134,29 +29147,6 @@ struct Type using DecodableType = Type; } // namespace PresetTypeStruct -namespace QueuedPresetStruct { -enum class Fields : uint8_t -{ - kPresetHandle = 0, - kTransitionTimestamp = 1, -}; - -struct Type -{ -public: - DataModel::Nullable presetHandle; - DataModel::Nullable transitionTimestamp; - - CHIP_ERROR Decode(TLV::TLVReader & reader); - - static constexpr bool kIsFabricScoped = false; - - CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const; -}; - -using DecodableType = Type; - -} // namespace QueuedPresetStruct namespace ScheduleTypeStruct { enum class Fields : uint8_t { @@ -29262,11 +29252,6 @@ struct Type; struct DecodableType; } // namespace CommitPresetsSchedulesRequest -namespace CancelSetActivePresetRequest { -struct Type; -struct DecodableType; -} // namespace CancelSetActivePresetRequest - namespace SetTemperatureSetpointHoldPolicy { struct Type; struct DecodableType; @@ -29491,7 +29476,6 @@ namespace SetActivePresetRequest { enum class Fields : uint8_t { kPresetHandle = 0, - kDelayMinutes = 1, }; struct Type @@ -29502,7 +29486,6 @@ struct Type static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; } chip::ByteSpan presetHandle; - Optional delayMinutes; CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const; @@ -29518,7 +29501,6 @@ struct DecodableType static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; } chip::ByteSpan presetHandle; - Optional delayMinutes; CHIP_ERROR Decode(TLV::TLVReader & reader); }; }; // namespace SetActivePresetRequest @@ -29610,34 +29592,6 @@ struct DecodableType CHIP_ERROR Decode(TLV::TLVReader & reader); }; }; // namespace CommitPresetsSchedulesRequest -namespace CancelSetActivePresetRequest { -enum class Fields : uint8_t -{ -}; - -struct Type -{ -public: - // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand - static constexpr CommandId GetCommandId() { return Commands::CancelSetActivePresetRequest::Id; } - static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; } - - CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const; - - using ResponseType = DataModel::NullObjectType; - - static constexpr bool MustUseTimedInvoke() { return false; } -}; - -struct DecodableType -{ -public: - static constexpr CommandId GetCommandId() { return Commands::CancelSetActivePresetRequest::Id; } - static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; } - - CHIP_ERROR Decode(TLV::TLVReader & reader); -}; -}; // namespace CancelSetActivePresetRequest namespace SetTemperatureSetpointHoldPolicy { enum class Fields : uint8_t { @@ -30430,20 +30384,6 @@ struct TypeInfo static constexpr bool MustUseTimedWrite() { return false; } }; } // namespace SetpointHoldExpiryTimestamp -namespace QueuedPreset { -struct TypeInfo -{ - using Type = chip::app::DataModel::Nullable; - using DecodableType = - chip::app::DataModel::Nullable; - using DecodableArgType = - const chip::app::DataModel::Nullable &; - - static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; } - static constexpr AttributeId GetAttributeId() { return Attributes::QueuedPreset::Id; } - static constexpr bool MustUseTimedWrite() { return false; } -}; -} // namespace QueuedPreset namespace GeneratedCommandList { struct TypeInfo : public Clusters::Globals::Attributes::GeneratedCommandList::TypeInfo { @@ -30566,7 +30506,6 @@ struct TypeInfo Attributes::TemperatureSetpointHoldPolicy::TypeInfo::DecodableType temperatureSetpointHoldPolicy = static_cast>(0); Attributes::SetpointHoldExpiryTimestamp::TypeInfo::DecodableType setpointHoldExpiryTimestamp; - Attributes::QueuedPreset::TypeInfo::DecodableType queuedPreset; Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList; Attributes::AcceptedCommandList::TypeInfo::DecodableType acceptedCommandList; Attributes::EventList::TypeInfo::DecodableType eventList; diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h index c80ee5f834801e..224f09ff69f44d 100644 --- a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h +++ b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h @@ -2364,6 +2364,10 @@ namespace OperatingMode { static constexpr AttributeId Id = 0x00000008; } // namespace OperatingMode +namespace MaximumCheckInBackOff { +static constexpr AttributeId Id = 0x00000009; +} // namespace MaximumCheckInBackOff + namespace GeneratedCommandList { static constexpr AttributeId Id = Globals::Attributes::GeneratedCommandList::Id; } // namespace GeneratedCommandList @@ -5190,10 +5194,6 @@ namespace SetpointHoldExpiryTimestamp { static constexpr AttributeId Id = 0x00000054; } // namespace SetpointHoldExpiryTimestamp -namespace QueuedPreset { -static constexpr AttributeId Id = 0x00000055; -} // namespace QueuedPreset - namespace GeneratedCommandList { static constexpr AttributeId Id = Globals::Attributes::GeneratedCommandList::Id; } // namespace GeneratedCommandList diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h index 382737bcee0c8e..4a8e4a830a44f7 100644 --- a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h +++ b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h @@ -1328,10 +1328,6 @@ namespace CommitPresetsSchedulesRequest { static constexpr CommandId Id = 0x00000009; } // namespace CommitPresetsSchedulesRequest -namespace CancelSetActivePresetRequest { -static constexpr CommandId Id = 0x0000000A; -} // namespace CancelSetActivePresetRequest - namespace SetTemperatureSetpointHoldPolicy { static constexpr CommandId Id = 0x0000000B; } // namespace SetTemperatureSetpointHoldPolicy diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 6bc2808777acad..dd2f2c40082af8 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -4223,6 +4223,7 @@ class GroupKeyManagementKeySetReadAllIndices : public ClusterCommand | * UserActiveModeTriggerHint | 0x0006 | | * UserActiveModeTriggerInstruction | 0x0007 | | * OperatingMode | 0x0008 | +| * MaximumCheckInBackOff | 0x0009 | | * GeneratedCommandList | 0xFFF8 | | * AcceptedCommandList | 0xFFF9 | | * EventList | 0xFFFA | @@ -9394,7 +9395,6 @@ class ServiceAreaSkipCurrentLocation : public ClusterCommand | * StartPresetsSchedulesEditRequest | 0x07 | | * CancelPresetsSchedulesEditRequest | 0x08 | | * CommitPresetsSchedulesRequest | 0x09 | -| * CancelSetActivePresetRequest | 0x0A | | * SetTemperatureSetpointHoldPolicy | 0x0B | |------------------------------------------------------------------------------| | Attributes: | | @@ -9460,7 +9460,6 @@ class ServiceAreaSkipCurrentLocation : public ClusterCommand | * PresetsSchedulesEditable | 0x0052 | | * TemperatureSetpointHoldPolicy | 0x0053 | | * SetpointHoldExpiryTimestamp | 0x0054 | -| * QueuedPreset | 0x0055 | | * GeneratedCommandList | 0xFFF8 | | * AcceptedCommandList | 0xFFF9 | | * EventList | 0xFFFA | @@ -9678,7 +9677,6 @@ class ThermostatSetActivePresetRequest : public ClusterCommand ClusterCommand("set-active-preset-request", credsIssuerConfig) { AddArgument("PresetHandle", &mRequest.presetHandle); - AddArgument("DelayMinutes", 0, UINT16_MAX, &mRequest.delayMinutes); ClusterCommand::AddArguments(); } @@ -9819,43 +9817,6 @@ class ThermostatCommitPresetsSchedulesRequest : public ClusterCommand chip::app::Clusters::Thermostat::Commands::CommitPresetsSchedulesRequest::Type mRequest; }; -/* - * Command CancelSetActivePresetRequest - */ -class ThermostatCancelSetActivePresetRequest : public ClusterCommand -{ -public: - ThermostatCancelSetActivePresetRequest(CredentialIssuerCommands * credsIssuerConfig) : - ClusterCommand("cancel-set-active-preset-request", credsIssuerConfig) - { - ClusterCommand::AddArguments(); - } - - CHIP_ERROR SendCommand(chip::DeviceProxy * device, std::vector endpointIds) override - { - constexpr chip::ClusterId clusterId = chip::app::Clusters::Thermostat::Id; - constexpr chip::CommandId commandId = chip::app::Clusters::Thermostat::Commands::CancelSetActivePresetRequest::Id; - - ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") command (0x%08" PRIX32 ") on endpoint %u", clusterId, - commandId, endpointIds.at(0)); - return ClusterCommand::SendCommand(device, endpointIds.at(0), clusterId, commandId, mRequest); - } - - CHIP_ERROR SendGroupCommand(chip::GroupId groupId, chip::FabricIndex fabricIndex) override - { - constexpr chip::ClusterId clusterId = chip::app::Clusters::Thermostat::Id; - constexpr chip::CommandId commandId = chip::app::Clusters::Thermostat::Commands::CancelSetActivePresetRequest::Id; - - ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") command (0x%08" PRIX32 ") on Group %u", clusterId, commandId, - groupId); - - return ClusterCommand::SendGroupCommand(groupId, fabricIndex, clusterId, commandId, mRequest); - } - -private: - chip::app::Clusters::Thermostat::Commands::CancelSetActivePresetRequest::Type mRequest; -}; - /* * Command SetTemperatureSetpointHoldPolicy */ @@ -18925,15 +18886,16 @@ void registerClusterIcdManagement(Commands & commands, CredentialIssuerCommands make_unique(Id, "user-active-mode-trigger-hint", Attributes::UserActiveModeTriggerHint::Id, credsIssuerConfig), // make_unique(Id, "user-active-mode-trigger-instruction", Attributes::UserActiveModeTriggerInstruction::Id, - credsIssuerConfig), // - make_unique(Id, "operating-mode", Attributes::OperatingMode::Id, credsIssuerConfig), // - make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // - make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // - make_unique(Id, "event-list", Attributes::EventList::Id, credsIssuerConfig), // - make_unique(Id, "attribute-list", Attributes::AttributeList::Id, credsIssuerConfig), // - make_unique(Id, "feature-map", Attributes::FeatureMap::Id, credsIssuerConfig), // - make_unique(Id, "cluster-revision", Attributes::ClusterRevision::Id, credsIssuerConfig), // - make_unique>(Id, credsIssuerConfig), // + credsIssuerConfig), // + make_unique(Id, "operating-mode", Attributes::OperatingMode::Id, credsIssuerConfig), // + make_unique(Id, "maximum-check-in-back-off", Attributes::MaximumCheckInBackOff::Id, credsIssuerConfig), // + make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // + make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // + make_unique(Id, "event-list", Attributes::EventList::Id, credsIssuerConfig), // + make_unique(Id, "attribute-list", Attributes::AttributeList::Id, credsIssuerConfig), // + make_unique(Id, "feature-map", Attributes::FeatureMap::Id, credsIssuerConfig), // + make_unique(Id, "cluster-revision", Attributes::ClusterRevision::Id, credsIssuerConfig), // + make_unique>(Id, credsIssuerConfig), // make_unique>(Id, "idle-mode-duration", 0, UINT32_MAX, Attributes::IdleModeDuration::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>(Id, "active-mode-duration", 0, UINT32_MAX, Attributes::ActiveModeDuration::Id, @@ -18956,6 +18918,8 @@ void registerClusterIcdManagement(Commands & commands, CredentialIssuerCommands credsIssuerConfig), // make_unique>( Id, "operating-mode", 0, UINT8_MAX, Attributes::OperatingMode::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // + make_unique>(Id, "maximum-check-in-back-off", 0, UINT32_MAX, Attributes::MaximumCheckInBackOff::Id, + WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( Id, "generated-command-list", Attributes::GeneratedCommandList::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // @@ -18980,8 +18944,10 @@ void registerClusterIcdManagement(Commands & commands, CredentialIssuerCommands make_unique(Id, "user-active-mode-trigger-hint", Attributes::UserActiveModeTriggerHint::Id, credsIssuerConfig), // make_unique(Id, "user-active-mode-trigger-instruction", - Attributes::UserActiveModeTriggerInstruction::Id, credsIssuerConfig), // - make_unique(Id, "operating-mode", Attributes::OperatingMode::Id, credsIssuerConfig), // + Attributes::UserActiveModeTriggerInstruction::Id, credsIssuerConfig), // + make_unique(Id, "operating-mode", Attributes::OperatingMode::Id, credsIssuerConfig), // + make_unique(Id, "maximum-check-in-back-off", Attributes::MaximumCheckInBackOff::Id, + credsIssuerConfig), // make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // make_unique(Id, "event-list", Attributes::EventList::Id, credsIssuerConfig), // @@ -22963,7 +22929,6 @@ void registerClusterThermostat(Commands & commands, CredentialIssuerCommands * c make_unique(credsIssuerConfig), // make_unique(credsIssuerConfig), // make_unique(credsIssuerConfig), // - make_unique(credsIssuerConfig), // make_unique(credsIssuerConfig), // // // Attributes @@ -23050,7 +23015,6 @@ void registerClusterThermostat(Commands & commands, CredentialIssuerCommands * c credsIssuerConfig), // make_unique(Id, "setpoint-hold-expiry-timestamp", Attributes::SetpointHoldExpiryTimestamp::Id, credsIssuerConfig), // - make_unique(Id, "queued-preset", Attributes::QueuedPreset::Id, credsIssuerConfig), // make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // make_unique(Id, "event-list", Attributes::EventList::Id, credsIssuerConfig), // @@ -23223,9 +23187,6 @@ void registerClusterThermostat(Commands & commands, CredentialIssuerCommands * c make_unique>>(Id, "setpoint-hold-expiry-timestamp", 0, UINT32_MAX, Attributes::SetpointHoldExpiryTimestamp::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // - make_unique>>( - Id, "queued-preset", Attributes::QueuedPreset::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // make_unique>>( Id, "generated-command-list", Attributes::GeneratedCommandList::Id, WriteCommandType::kForceWrite, credsIssuerConfig), // @@ -23325,7 +23286,6 @@ void registerClusterThermostat(Commands & commands, CredentialIssuerCommands * c credsIssuerConfig), // make_unique(Id, "setpoint-hold-expiry-timestamp", Attributes::SetpointHoldExpiryTimestamp::Id, credsIssuerConfig), // - make_unique(Id, "queued-preset", Attributes::QueuedPreset::Id, credsIssuerConfig), // make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // make_unique(Id, "event-list", Attributes::EventList::Id, credsIssuerConfig), // diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp index 624acd23feb594..c6d7864443fafe 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp @@ -4175,38 +4175,6 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::Thermostat::Structs::P ComplexArgumentParser::Finalize(request.presetTypeFeatures); } -CHIP_ERROR ComplexArgumentParser::Setup(const char * label, - chip::app::Clusters::Thermostat::Structs::QueuedPresetStruct::Type & request, - Json::Value & value) -{ - VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT); - - // Copy to track which members we already processed. - Json::Value valueCopy(value); - - ReturnErrorOnFailure(ComplexArgumentParser::EnsureMemberExist("QueuedPresetStruct.presetHandle", "presetHandle", - value.isMember("presetHandle"))); - ReturnErrorOnFailure(ComplexArgumentParser::EnsureMemberExist("QueuedPresetStruct.transitionTimestamp", "transitionTimestamp", - value.isMember("transitionTimestamp"))); - - char labelWithMember[kMaxLabelLength]; - snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "presetHandle"); - ReturnErrorOnFailure(ComplexArgumentParser::Setup(labelWithMember, request.presetHandle, value["presetHandle"])); - valueCopy.removeMember("presetHandle"); - - snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "transitionTimestamp"); - ReturnErrorOnFailure(ComplexArgumentParser::Setup(labelWithMember, request.transitionTimestamp, value["transitionTimestamp"])); - valueCopy.removeMember("transitionTimestamp"); - - return ComplexArgumentParser::EnsureNoMembersRemaining(label, valueCopy); -} - -void ComplexArgumentParser::Finalize(chip::app::Clusters::Thermostat::Structs::QueuedPresetStruct::Type & request) -{ - ComplexArgumentParser::Finalize(request.presetHandle); - ComplexArgumentParser::Finalize(request.transitionTimestamp); -} - CHIP_ERROR ComplexArgumentParser::Setup(const char * label, chip::app::Clusters::Thermostat::Structs::ScheduleTypeStruct::Type & request, Json::Value & value) diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h index b32e8eedcefb9f..c258467efab2a6 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h @@ -471,11 +471,6 @@ static CHIP_ERROR Setup(const char * label, chip::app::Clusters::Thermostat::Str static void Finalize(chip::app::Clusters::Thermostat::Structs::PresetTypeStruct::Type & request); -static CHIP_ERROR Setup(const char * label, chip::app::Clusters::Thermostat::Structs::QueuedPresetStruct::Type & request, - Json::Value & value); - -static void Finalize(chip::app::Clusters::Thermostat::Structs::QueuedPresetStruct::Type & request); - static CHIP_ERROR Setup(const char * label, chip::app::Clusters::Thermostat::Structs::ScheduleTypeStruct::Type & request, Json::Value & value); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index d0fba2b8f0e0f3..d062e7aeac77c5 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -3699,31 +3699,6 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, return CHIP_NO_ERROR; } -CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, - const chip::app::Clusters::Thermostat::Structs::QueuedPresetStruct::DecodableType & value) -{ - DataModelLogger::LogString(label, indent, "{"); - { - CHIP_ERROR err = LogValue("PresetHandle", indent + 1, value.presetHandle); - if (err != CHIP_NO_ERROR) - { - DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'PresetHandle'"); - return err; - } - } - { - CHIP_ERROR err = LogValue("TransitionTimestamp", indent + 1, value.transitionTimestamp); - if (err != CHIP_NO_ERROR) - { - DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'TransitionTimestamp'"); - return err; - } - } - DataModelLogger::LogString(indent, "}"); - - return CHIP_NO_ERROR; -} - CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, const chip::app::Clusters::Thermostat::Structs::ScheduleTypeStruct::DecodableType & value) { @@ -11326,6 +11301,11 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("OperatingMode", 1, value); } + case IcdManagement::Attributes::MaximumCheckInBackOff::Id: { + uint32_t value; + ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); + return DataModelLogger::LogValue("MaximumCheckInBackOff", 1, value); + } case IcdManagement::Attributes::GeneratedCommandList::Id: { chip::app::DataModel::DecodableList value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); @@ -14845,11 +14825,6 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("SetpointHoldExpiryTimestamp", 1, value); } - case Thermostat::Attributes::QueuedPreset::Id: { - chip::app::DataModel::Nullable value; - ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); - return DataModelLogger::LogValue("QueuedPreset", 1, value); - } case Thermostat::Attributes::GeneratedCommandList::Id: { chip::app::DataModel::DecodableList value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h index 7ee50893968ccd..8a74b57e503b30 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h @@ -294,9 +294,6 @@ static CHIP_ERROR LogValue(const char * label, size_t indent, static CHIP_ERROR LogValue(const char * label, size_t indent, const chip::app::Clusters::Thermostat::Structs::PresetTypeStruct::DecodableType & value); -static CHIP_ERROR LogValue(const char * label, size_t indent, - const chip::app::Clusters::Thermostat::Structs::QueuedPresetStruct::DecodableType & value); - static CHIP_ERROR LogValue(const char * label, size_t indent, const chip::app::Clusters::Thermostat::Structs::ScheduleTypeStruct::DecodableType & value); diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index 0319e41eeaec91..39f9c949872dfe 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -47497,6 +47497,7 @@ class SubscribeAttributeBooleanStateClusterRevision : public SubscribeAttribute | * UserActiveModeTriggerHint | 0x0006 | | * UserActiveModeTriggerInstruction | 0x0007 | | * OperatingMode | 0x0008 | +| * MaximumCheckInBackOff | 0x0009 | | * GeneratedCommandList | 0xFFF8 | | * AcceptedCommandList | 0xFFF9 | | * EventList | 0xFFFA | @@ -48488,6 +48489,91 @@ class SubscribeAttributeIcdManagementOperatingMode : public SubscribeAttribute { #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL +/* + * Attribute MaximumCheckInBackOff + */ +class ReadIcdManagementMaximumCheckInBackOff : public ReadAttribute { +public: + ReadIcdManagementMaximumCheckInBackOff() + : ReadAttribute("maximum-check-in-back-off") + { + } + + ~ReadIcdManagementMaximumCheckInBackOff() + { + } + + CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override + { + constexpr chip::ClusterId clusterId = chip::app::Clusters::IcdManagement::Id; + constexpr chip::AttributeId attributeId = chip::app::Clusters::IcdManagement::Attributes::MaximumCheckInBackOff::Id; + + ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") ReadAttribute (0x%08" PRIX32 ") on endpoint %u", endpointId, clusterId, attributeId); + + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + __auto_type * cluster = [[MTRBaseClusterICDManagement alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue]; + [cluster readAttributeMaximumCheckInBackOffWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"ICDManagement.MaximumCheckInBackOff response %@", [value description]); + if (error == nil) { + RemoteDataModelLogger::LogAttributeAsJSON(@(endpointId), @(clusterId), @(attributeId), value); + } else { + LogNSError("ICDManagement MaximumCheckInBackOff read Error", error); + RemoteDataModelLogger::LogAttributeErrorAsJSON(@(endpointId), @(clusterId), @(attributeId), error); + } + SetCommandExitStatus(error); + }]; + return CHIP_NO_ERROR; + } +}; + +class SubscribeAttributeIcdManagementMaximumCheckInBackOff : public SubscribeAttribute { +public: + SubscribeAttributeIcdManagementMaximumCheckInBackOff() + : SubscribeAttribute("maximum-check-in-back-off") + { + } + + ~SubscribeAttributeIcdManagementMaximumCheckInBackOff() + { + } + + CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override + { + constexpr chip::ClusterId clusterId = chip::app::Clusters::IcdManagement::Id; + constexpr chip::CommandId attributeId = chip::app::Clusters::IcdManagement::Attributes::MaximumCheckInBackOff::Id; + + ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") ReportAttribute (0x%08" PRIX32 ") on endpoint %u", clusterId, attributeId, endpointId); + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + __auto_type * cluster = [[MTRBaseClusterICDManagement alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue]; + __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)]; + if (mKeepSubscriptions.HasValue()) { + params.replaceExistingSubscriptions = !mKeepSubscriptions.Value(); + } + if (mFabricFiltered.HasValue()) { + params.filterByFabric = mFabricFiltered.Value(); + } + if (mAutoResubscribe.HasValue()) { + params.resubscribeAutomatically = mAutoResubscribe.Value(); + } + [cluster subscribeAttributeMaximumCheckInBackOffWithParams:params + subscriptionEstablished:^() { mSubscriptionEstablished = YES; } + reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"ICDManagement.MaximumCheckInBackOff response %@", [value description]); + if (error == nil) { + RemoteDataModelLogger::LogAttributeAsJSON(@(endpointId), @(clusterId), @(attributeId), value); + } else { + RemoteDataModelLogger::LogAttributeErrorAsJSON(@(endpointId), @(clusterId), @(attributeId), error); + } + SetCommandExitStatus(error); + }]; + + return CHIP_NO_ERROR; + } +}; + +#endif // MTR_ENABLE_PROVISIONAL +#if MTR_ENABLE_PROVISIONAL + /* * Attribute GeneratedCommandList */ @@ -106737,7 +106823,6 @@ class SubscribeAttributePumpConfigurationAndControlClusterRevision : public Subs | * StartPresetsSchedulesEditRequest | 0x07 | | * CancelPresetsSchedulesEditRequest | 0x08 | | * CommitPresetsSchedulesRequest | 0x09 | -| * CancelSetActivePresetRequest | 0x0A | | * SetTemperatureSetpointHoldPolicy | 0x0B | |------------------------------------------------------------------------------| | Attributes: | | @@ -106803,7 +106888,6 @@ class SubscribeAttributePumpConfigurationAndControlClusterRevision : public Subs | * PresetsSchedulesEditable | 0x0052 | | * TemperatureSetpointHoldPolicy | 0x0053 | | * SetpointHoldExpiryTimestamp | 0x0054 | -| * QueuedPreset | 0x0055 | | * GeneratedCommandList | 0xFFF8 | | * AcceptedCommandList | 0xFFF9 | | * EventList | 0xFFFA | @@ -107100,9 +107184,6 @@ class ThermostatSetActivePresetRequest : public ClusterCommand { { #if MTR_ENABLE_PROVISIONAL AddArgument("PresetHandle", &mRequest.presetHandle); -#endif // MTR_ENABLE_PROVISIONAL -#if MTR_ENABLE_PROVISIONAL - AddArgument("DelayMinutes", 0, UINT16_MAX, &mRequest.delayMinutes); #endif // MTR_ENABLE_PROVISIONAL ClusterCommand::AddArguments(); } @@ -107120,13 +107201,6 @@ class ThermostatSetActivePresetRequest : public ClusterCommand { params.timedInvokeTimeoutMs = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil; #if MTR_ENABLE_PROVISIONAL params.presetHandle = [NSData dataWithBytes:mRequest.presetHandle.data() length:mRequest.presetHandle.size()]; -#endif // MTR_ENABLE_PROVISIONAL -#if MTR_ENABLE_PROVISIONAL - if (mRequest.delayMinutes.HasValue()) { - params.delayMinutes = [NSNumber numberWithUnsignedShort:mRequest.delayMinutes.Value()]; - } else { - params.delayMinutes = nil; - } #endif // MTR_ENABLE_PROVISIONAL uint16_t repeatCount = mRepeatCount.ValueOr(1); uint16_t __block responsesNeeded = repeatCount; @@ -107296,52 +107370,6 @@ class ThermostatCommitPresetsSchedulesRequest : public ClusterCommand { private: }; -#endif // MTR_ENABLE_PROVISIONAL -#if MTR_ENABLE_PROVISIONAL -/* - * Command CancelSetActivePresetRequest - */ -class ThermostatCancelSetActivePresetRequest : public ClusterCommand { -public: - ThermostatCancelSetActivePresetRequest() - : ClusterCommand("cancel-set-active-preset-request") - { - ClusterCommand::AddArguments(); - } - - CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override - { - constexpr chip::ClusterId clusterId = chip::app::Clusters::Thermostat::Id; - constexpr chip::CommandId commandId = chip::app::Clusters::Thermostat::Commands::CancelSetActivePresetRequest::Id; - - ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") command (0x%08" PRIX32 ") on endpoint %u", clusterId, commandId, endpointId); - - dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue]; - __auto_type * params = [[MTRThermostatClusterCancelSetActivePresetRequestParams alloc] init]; - params.timedInvokeTimeoutMs = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil; - uint16_t repeatCount = mRepeatCount.ValueOr(1); - uint16_t __block responsesNeeded = repeatCount; - while (repeatCount--) { - [cluster cancelSetActivePresetRequestWithParams:params completion: - ^(NSError * _Nullable error) { - responsesNeeded--; - if (error != nil) { - mError = error; - LogNSError("Error", error); - RemoteDataModelLogger::LogCommandErrorAsJSON(@(endpointId), @(clusterId), @(commandId), error); - } - if (responsesNeeded == 0) { - SetCommandExitStatus(mError); - } - }]; - } - return CHIP_NO_ERROR; - } - -private: -}; - #endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL /* @@ -113825,91 +113853,6 @@ class SubscribeAttributeThermostatSetpointHoldExpiryTimestamp : public Subscribe } }; -#endif // MTR_ENABLE_PROVISIONAL -#if MTR_ENABLE_PROVISIONAL - -/* - * Attribute QueuedPreset - */ -class ReadThermostatQueuedPreset : public ReadAttribute { -public: - ReadThermostatQueuedPreset() - : ReadAttribute("queued-preset") - { - } - - ~ReadThermostatQueuedPreset() - { - } - - CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override - { - constexpr chip::ClusterId clusterId = chip::app::Clusters::Thermostat::Id; - constexpr chip::AttributeId attributeId = chip::app::Clusters::Thermostat::Attributes::QueuedPreset::Id; - - ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") ReadAttribute (0x%08" PRIX32 ") on endpoint %u", endpointId, clusterId, attributeId); - - dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue]; - [cluster readAttributeQueuedPresetWithCompletion:^(MTRThermostatClusterQueuedPresetStruct * _Nullable value, NSError * _Nullable error) { - NSLog(@"Thermostat.QueuedPreset response %@", [value description]); - if (error == nil) { - RemoteDataModelLogger::LogAttributeAsJSON(@(endpointId), @(clusterId), @(attributeId), value); - } else { - LogNSError("Thermostat QueuedPreset read Error", error); - RemoteDataModelLogger::LogAttributeErrorAsJSON(@(endpointId), @(clusterId), @(attributeId), error); - } - SetCommandExitStatus(error); - }]; - return CHIP_NO_ERROR; - } -}; - -class SubscribeAttributeThermostatQueuedPreset : public SubscribeAttribute { -public: - SubscribeAttributeThermostatQueuedPreset() - : SubscribeAttribute("queued-preset") - { - } - - ~SubscribeAttributeThermostatQueuedPreset() - { - } - - CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override - { - constexpr chip::ClusterId clusterId = chip::app::Clusters::Thermostat::Id; - constexpr chip::CommandId attributeId = chip::app::Clusters::Thermostat::Attributes::QueuedPreset::Id; - - ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") ReportAttribute (0x%08" PRIX32 ") on endpoint %u", clusterId, attributeId, endpointId); - dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); - __auto_type * cluster = [[MTRBaseClusterThermostat alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue]; - __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)]; - if (mKeepSubscriptions.HasValue()) { - params.replaceExistingSubscriptions = !mKeepSubscriptions.Value(); - } - if (mFabricFiltered.HasValue()) { - params.filterByFabric = mFabricFiltered.Value(); - } - if (mAutoResubscribe.HasValue()) { - params.resubscribeAutomatically = mAutoResubscribe.Value(); - } - [cluster subscribeAttributeQueuedPresetWithParams:params - subscriptionEstablished:^() { mSubscriptionEstablished = YES; } - reportHandler:^(MTRThermostatClusterQueuedPresetStruct * _Nullable value, NSError * _Nullable error) { - NSLog(@"Thermostat.QueuedPreset response %@", [value description]); - if (error == nil) { - RemoteDataModelLogger::LogAttributeAsJSON(@(endpointId), @(clusterId), @(attributeId), value); - } else { - RemoteDataModelLogger::LogAttributeErrorAsJSON(@(endpointId), @(clusterId), @(attributeId), error); - } - SetCommandExitStatus(error); - }]; - - return CHIP_NO_ERROR; - } -}; - #endif // MTR_ENABLE_PROVISIONAL /* @@ -191327,6 +191270,10 @@ void registerClusterIcdManagement(Commands & commands) make_unique(), // make_unique(), // #endif // MTR_ENABLE_PROVISIONAL +#if MTR_ENABLE_PROVISIONAL + make_unique(), // + make_unique(), // +#endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL make_unique(), // make_unique(), // @@ -194133,9 +194080,6 @@ void registerClusterThermostat(Commands & commands) #if MTR_ENABLE_PROVISIONAL make_unique(), // #endif // MTR_ENABLE_PROVISIONAL -#if MTR_ENABLE_PROVISIONAL - make_unique(), // -#endif // MTR_ENABLE_PROVISIONAL #if MTR_ENABLE_PROVISIONAL make_unique(), // #endif // MTR_ENABLE_PROVISIONAL @@ -194320,10 +194264,6 @@ void registerClusterThermostat(Commands & commands) #if MTR_ENABLE_PROVISIONAL make_unique(), // make_unique(), // -#endif // MTR_ENABLE_PROVISIONAL -#if MTR_ENABLE_PROVISIONAL - make_unique(), // - make_unique(), // #endif // MTR_ENABLE_PROVISIONAL make_unique(), // make_unique(), //