diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index 386253bb60..3d2c6295f8 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -37,6 +37,7 @@ RUN apt-get update \
valgrind \
docker.io \
iputils-ping \
+ icecc \
&& :
RUN groupadd -g $USER_GID $USERNAME \
@@ -80,3 +81,13 @@ ENV TIZEN_ROOTFS /tizen_rootfs
# Fast Model GDB plugins path for debugging support
ENV FAST_MODEL_PLUGINS_PATH /opt/FastModelsPortfolio_11.16/plugins/Linux64_GCC-9.3
+
+# Set up ccache as a pigweed command launcher when using the scripts/build/build_examples.py
+# script. Also, set up icecc as the command prefix for ccache. Such setup allows to benefit
+# from compilation caching and distributed compilation at the same time.
+#
+# NOTE: In order to use distributed compilation with icecc, one should run
+# "scripts/icecc.sh start" before starting the build.
+ENV CHIP_PW_COMMAND_LAUNCHER ccache
+ENV CCACHE_PREFIX icecc
+ENV PATH /usr/lib/ccache:$PATH
diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt
index 5c24cdec82..f3954d1eb8 100644
--- a/.github/.wordlist.txt
+++ b/.github/.wordlist.txt
@@ -1006,6 +1006,7 @@ OpenThreadDemo
openweave
OperationalCredentials
operationalDataset
+operationalstate
opkg
OPTIGA
optionMask
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index f14a16f5e0..af102bf96e 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -157,6 +157,9 @@ jobs:
run: echo "$CONCURRENCY_CONTEXT"
- name: Checkout
uses: actions/checkout@v4
+ with:
+ fetch-depth: 2
+ persist-credentials: true
- name: Try to ensure the directories for core dumping exist and we
can write them.
run: |
@@ -186,6 +189,10 @@ jobs:
- name: Clean output
run: rm -rf ./out
- name: Run Tests with sanitizers
+ # Sanitizer tests are not likely to find extra issues so running the same tests
+ # as above repeatedly on every pull request seems extra time. Instead keep this run
+ # for master only
+ if: github.event.pull_request.number == null
env:
LSAN_OPTIONS: detect_leaks=1
run: |
@@ -201,17 +208,34 @@ jobs:
BUILD_TYPE=sanitizers scripts/build/gn_gen.sh --args="$GN_ARGS chip_data_model_check_die_on_failure=true" --export-compile-commands
BUILD_TYPE=sanitizers scripts/tests/gn_tests.sh
done
+ - name: Generate tests with sanitizers (for tidy)
+ if: github.event.pull_request.number != null
+ run: |
+ rm -rf ./out/sanitizers
+ BUILD_TYPE=sanitizers scripts/build/gn_gen.sh --args="is_clang=true is_asan=true chip_data_model_check_die_on_failure=true" --export-compile-commands
- name: Ensure codegen is done for sanitize
run: |
./scripts/run_in_build_env.sh "./scripts/run_codegen_targets.sh out/sanitizers"
+ - name: Find changed files
+ id: changed-files
+ uses: tj-actions/changed-files@v45
- name: Clang-tidy validation
# NOTE: clang-tidy crashes on CodegenDataModel_Write due to Nullable/std::optional check.
# See https://github.com/llvm/llvm-project/issues/97426
+ env:
+ ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
run: |
+ touch out/changed_files.txt
+ for file in ${ALL_CHANGED_FILES}; do
+ echo "$file changed and will be considered for tidy"
+ echo "$file" >>out/changed_files.txt
+ done
+
./scripts/run_in_build_env.sh \
"./scripts/run-clang-tidy-on-compile-commands.py \
--compile-database out/sanitizers/compile_commands.json \
--file-exclude-regex '/(repo|zzz_generated|lwip/standalone)/|-ReadImpl|-InvokeSubscribeImpl|CodegenDataModel_Write|QuieterReporting' \
+ --file-list-file out/changed_files.txt \
check \
"
- name: Clean output
@@ -375,13 +399,16 @@ jobs:
scripts/build_python_device.sh --chip_detail_logging true
build_darwin:
- name: Build on Darwin (clang, python_lib, simulated)
+ name: Build on Darwin (clang, simulated)
runs-on: macos-13
if: github.actor != 'restyled-io[bot]'
steps:
- name: Checkout
uses: actions/checkout@v4
+ with:
+ fetch-depth: 2
+ persist-credentials: true
- name: Checkout submodules & Bootstrap
uses: ./.github/actions/checkout-submodules-and-bootstrap
with:
@@ -402,37 +429,42 @@ jobs:
CHIP_ROOT_PATH=examples/placeholder/linux
CHIP_ROOT_PATH="$CHIP_ROOT_PATH" BUILD_TYPE="$BUILD_TYPE" scripts/build/gn_gen.sh --args="$GN_ARGS"
scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
- - name: Setup Build, Run Build and Run Tests
+ - name: Setup Build, Run Build and Run Tests (asan + target_os=all)
# We can't enable leak checking here in LSAN_OPTIONS, because on
# Darwin that's only supported with a new enough clang, and we're
# not building with the pigweed clang here.
+ env:
+ BUILD_TYPE: default
run: |
- for BUILD_TYPE in default python_lib; do
- case $BUILD_TYPE in
- # We want to build various standalone example apps
- # (similar to what examples-linux-standalone.yaml
- # does), so use target_os="all" to get those picked
- # up as part of the "unified" build. But then to
- # save CI resources we want to exclude the
- # "host clang" build, which uses the pigweed
- # clang.
- "default") GN_ARGS='target_os="all" is_asan=true enable_host_clang_build=false';;
- esac
- BUILD_TYPE=$BUILD_TYPE scripts/build/gn_gen.sh --args="$GN_ARGS chip_data_model_check_die_on_failure=true" --export-compile-commands
- scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
- BUILD_TYPE=$BUILD_TYPE scripts/tests/gn_tests.sh
- done
- - name: Ensure codegen is done for sanitize
+ # We want to build various standalone example apps (similar to what examples-linux-standalone.yaml
+ # does), so use target_os="all" to get those picked up as part of the "unified" build. But then
+ # to save CI resources we want to exclude the "host clang" build, which uses the pigweed clang.
+ scripts/build/gn_gen.sh --args='target_os="all" is_asan=true enable_host_clang_build=false chip_data_model_check_die_on_failure=true' --export-compile-commands
+ scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
+ scripts/tests/gn_tests.sh
+ - name: Ensure codegen is done for default
run: |
./scripts/run_in_build_env.sh "./scripts/run_codegen_targets.sh out/default"
+ - name: Find changed files
+ id: changed-files
+ uses: tj-actions/changed-files@v45
- name: Clang-tidy validation
# NOTE: clang-tidy crashes on CodegenDataModel_Write due to Nullable/std::optional check.
# See https://github.com/llvm/llvm-project/issues/97426
+ env:
+ ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
run: |
+ touch out/changed_files.txt
+ for file in ${ALL_CHANGED_FILES}; do
+ echo "$file changed and will be considered for tidy"
+ echo "$file" >>out/changed_files.txt
+ done
+
./scripts/run_in_build_env.sh \
"./scripts/run-clang-tidy-on-compile-commands.py \
--compile-database out/default/compile_commands.json \
--file-exclude-regex '/(repo|zzz_generated|lwip/standalone)/|CodegenDataModel_Write|QuieterReporting' \
+ --file-list-file out/changed_files.txt \
check \
"
- name: Uploading diagnostic logs
diff --git a/.github/workflows/cancel_workflows_for_pr.yaml b/.github/workflows/cancel_workflows_for_pr.yaml
new file mode 100644
index 0000000000..caba07bedf
--- /dev/null
+++ b/.github/workflows/cancel_workflows_for_pr.yaml
@@ -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.
+
+name: Cancel workflows on failing CI
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: "*/10 * * * *"
+
+jobs:
+ cancel_workflow:
+ name: Cancel CI on failing pull requests
+
+ runs-on: ubuntu-latest
+
+ # Don't run on forked repos
+ if: github.repository_owner == 'project-chip'
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+ - name: Setup pip modules we use
+ run: |
+ pip install \
+ click \
+ coloredlogs \
+ python-dateutil \
+ pygithub \
+ && echo "DONE installint python prerequisites"
+ - name: Cancel runs
+ run: |
+ scripts/tools/cancel_workflows_for_pr.py \
+ --gh-api-token "${{ secrets.GITHUB_TOKEN }}" \
+ --require "Restyled" \
+ --require "Lint Code Base" \
+ --require "ZAP" \
+ --require "Run misspell" \
+ --max-pr-age-minutes 20
diff --git a/.github/workflows/darwin-tests.yaml b/.github/workflows/darwin-tests.yaml
index 1ddc9e9fbc..2d46de23cf 100644
--- a/.github/workflows/darwin-tests.yaml
+++ b/.github/workflows/darwin-tests.yaml
@@ -73,6 +73,10 @@ jobs:
platform: darwin
bootstrap-log-name: bootstrap-logs-darwin-${{ matrix.build_variant }}
+ - name: Build iOS Darwin Framework Tool Build Debug
+ working-directory: src/darwin/Framework
+ run: xcodebuild -target "darwin-framework-tool" -sdk iphoneos -configuration Debug AD_HOC_CODE_SIGNING_ALLOWED=YES
+
- name: Run macOS Darwin Framework Tool Build Debug
working-directory: src/darwin/Framework
run: xcodebuild -target "darwin-framework-tool" -sdk macosx -configuration Debug
diff --git a/.github/workflows/examples-bouffalolab.yaml b/.github/workflows/examples-bouffalolab.yaml
index 9a6989881e..9a51b612a1 100644
--- a/.github/workflows/examples-bouffalolab.yaml
+++ b/.github/workflows/examples-bouffalolab.yaml
@@ -58,25 +58,15 @@ jobs:
run: |
./scripts/run_in_build_env.sh \
"./scripts/build/build_examples.py \
- --target bouffalolab-bl602dk-light-easyflash \
- --target bouffalolab-bl602dk-light-mfd-littlefs \
- --target bouffalolab-bl602dk-light-rpc-115200-littlefs \
+ --target bouffalolab-bl602dk-light-mfd-littlefs-rpc-115200 \
build \
--copy-artifacts-to out/artifacts \
"
- name: Prepare some bloat report from the previous builds
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl602 bl602 lighting-app \
- out/artifacts/bouffalolab-bl602dk-light-easyflash/chip-bl602-lighting-example.out \
- /tmp/bloat_reports/
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl602 bl602+mfd lighting-app \
- out/artifacts/bouffalolab-bl602dk-light-mfd-littlefs/chip-bl602-lighting-example.out \
- /tmp/bloat_reports/
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl602 bl602+rpc lighting-app \
- out/artifacts/bouffalolab-bl602dk-light-rpc-115200-littlefs/chip-bl602-lighting-example.out \
+ bl602 bl602+mfd+littlefs+rpc lighting-app \
+ out/artifacts/bouffalolab-bl602dk-light-mfd-littlefs-rpc-115200/chip-bl602-lighting-example.out \
/tmp/bloat_reports/
- name: Clean out build output
run: rm -rf ./out
@@ -85,35 +75,25 @@ jobs:
run: |
./scripts/run_in_build_env.sh \
"./scripts/build/build_examples.py \
- --target bouffalolab-bl706dk-light-easyflash \
- --target bouffalolab-bl706dk-light-mfd-littlefs \
- --target bouffalolab-bl706dk-light-ethernet-littlefs \
+ --target bouffalolab-bl706dk-light-ethernet-easyflash \
--target bouffalolab-bl706dk-light-wifi-littlefs \
- --target bouffalolab-bl706dk-light-rpc-115200-littlefs \
+ --target bouffalolab-bl706dk-light-mfd-rpc-littlefs-115200 \
build \
--copy-artifacts-to out/artifacts \
"
- name: Prepare some bloat report from the previous builds
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl702 bl702 lighting-app \
- out/artifacts/bouffalolab-bl706dk-light-easyflash/chip-bl702-lighting-example.out \
- /tmp/bloat_reports/
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl702 bl702+mfd lighting-app \
- out/artifacts/bouffalolab-bl706dk-light-mfd-littlefs/chip-bl702-lighting-example.out \
- /tmp/bloat_reports/
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl702 bl706-eth lighting-app \
- out/artifacts/bouffalolab-bl706dk-light-ethernet-littlefs/chip-bl702-lighting-example.out \
+ bl702 bl702+eth lighting-app \
+ out/artifacts/bouffalolab-bl706dk-light-ethernet-easyflash/chip-bl702-lighting-example.out \
/tmp/bloat_reports/
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl702 bl706-wifi lighting-app \
+ bl702 bl702+wifi lighting-app \
out/artifacts/bouffalolab-bl706dk-light-wifi-littlefs/chip-bl702-lighting-example.out \
/tmp/bloat_reports/
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl702 bl702+rpc lighting-app \
- out/artifacts/bouffalolab-bl706dk-light-rpc-115200-littlefs/chip-bl702-lighting-example.out \
+ bl702 bl706+mfd+rpc+littlefs lighting-app \
+ out/artifacts/bouffalolab-bl706dk-light-mfd-rpc-littlefs-115200/chip-bl702-lighting-example.out \
/tmp/bloat_reports/
- name: Clean out build output
run: rm -rf ./out
@@ -123,7 +103,6 @@ jobs:
run: |
./scripts/run_in_build_env.sh \
"./scripts/build/build_examples.py \
- --target bouffalolab-bl704ldk-light-easyflash \
--target bouffalolab-bl704ldk-light-mfd-littlefs \
build \
--copy-artifacts-to out/artifacts \
@@ -131,11 +110,7 @@ jobs:
- name: Prepare some bloat report from the previous builds
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl702l bl702l lighting-app \
- out/artifacts/bouffalolab-bl704ldk-light-easyflash/chip-bl702l-lighting-example.out \
- /tmp/bloat_reports/
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- bl702l bl702l+mfd lighting-app \
+ bl702l bl702l+mfd+littlefs lighting-app \
out/artifacts/bouffalolab-bl704ldk-light-mfd-littlefs/chip-bl702l-lighting-example.out \
/tmp/bloat_reports/
- name: Clean out build output
@@ -145,4 +120,4 @@ jobs:
uses: ./.github/actions/upload-size-reports
if: ${{ !env.ACT }}
with:
- platform-name: BouffaloLab
+ platform-name: BouffaloLab
\ No newline at end of file
diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml
index 6d28635597..57337d5531 100644
--- a/.github/workflows/examples-efr32.yaml
+++ b/.github/workflows/examples-efr32.yaml
@@ -68,8 +68,7 @@ jobs:
./scripts/run_in_build_env.sh \
"./scripts/build/build_examples.py \
--enable-flashbundle \
- --target efr32-brd4187c-thermostat-openthread-mtd \
- --target efr32-brd4187c-air-quality-sensor-app-openthread-mtd \
+ --target efr32-brd4187c-thermostat-use-ot-lib \
--target efr32-brd4187c-switch-shell-use-ot-coap-lib \
--target efr32-brd4187c-unit-test \
build \
@@ -82,29 +81,17 @@ jobs:
./scripts/run_in_build_env.sh \
"./scripts/build/build_examples.py \
--enable-flashbundle \
- --target efr32-brd4187c-light-use-ot-lib \
- --target efr32-brd4187c-pump \
- --target efr32-brd4187c-lock-shell-heap-monitoring \
- build \
- --copy-artifacts-to out/artifacts \
- "
- - name: Clean out build output
- run: rm -rf ./out
- - name: Build BRD4187C variants (3)
- run: |
- ./scripts/run_in_build_env.sh \
- "./scripts/build/build_examples.py \
- --enable-flashbundle \
+ --target efr32-brd4187c-lock-rpc \
+ --target efr32-brd4187c-air-quality-sensor-app-shell-heap-monitoring \
--target efr32-brd4187c-window-covering-additional-data-advertising \
- --target efr32-brd4187c-light-rpc \
build \
--copy-artifacts-to out/artifacts \
"
- name: Prepare some bloat report from the previous builds
run: |
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- efr32 BRD4187C lighting-app \
- out/efr32-brd4187c-light-rpc/matter-silabs-lighting-example.out \
+ efr32 BRD4187C lock-app \
+ out/efr32-brd4187c-lock-rpc/matter-silabs-lock-example.out \
/tmp/bloat_reports/
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
efr32 BRD4187C window-app \
@@ -112,12 +99,12 @@ jobs:
/tmp/bloat_reports/
- name: Clean out build output
run: rm -rf ./out
- - name: Build BRD4338A WiFi Soc variants
+ - name: Build some WiFi Soc variants
run: |
./scripts/run_in_build_env.sh \
"./scripts/build/build_examples.py \
--enable-flashbundle \
- --target efr32-brd4338a-light-skip-rps-generation \
+ --target efr32-brd2605a-light-skip-rps-generation \
--target efr32-brd4338a-lock-skip-rps-generation \
build \
--copy-artifacts-to out/artifacts \
@@ -130,24 +117,6 @@ jobs:
/tmp/bloat_reports/
- name: Clean out build output
run: rm -rf ./out
- - name: Build BRD2605A WiFi Soc variants
- run: |
- ./scripts/run_in_build_env.sh \
- "./scripts/build/build_examples.py \
- --enable-flashbundle \
- --target efr32-brd2605a-light-skip-rps-generation \
- --target efr32-brd2605a-lock-skip-rps-generation \
- build \
- --copy-artifacts-to out/artifacts \
- "
- - name: Prepare bloat report for brd2605a lock app
- run: |
- .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- efr32 BRD2605a lock-app \
- out/efr32-brd2605a-lock-skip-rps-generation/matter-silabs-lock-example.out \
- /tmp/bloat_reports/
- - name: Clean out build output
- run: rm -rf ./out
- name: Build EFR32 with WiFi NCP
run: |
./scripts/run_in_build_env.sh \
diff --git a/.github/workflows/examples-esp32.yaml b/.github/workflows/examples-esp32.yaml
index a2dca96dc6..b3a6ed24e6 100644
--- a/.github/workflows/examples-esp32.yaml
+++ b/.github/workflows/examples-esp32.yaml
@@ -105,14 +105,11 @@ jobs:
example_binaries/esp32-build/chip-all-clusters-app.elf \
/tmp/bloat_reports/
- - name: Build example Pigweed App
- run: scripts/examples/esp_example.sh pigweed-app sdkconfig.defaults
-
- name: Build example Lighting App (Target:ESP32H2)
run: scripts/examples/esp_example.sh lighting-app sdkconfig.defaults.esp32h2 esp32h2
- - name: Build example Lock App (Target:ESP32C6)
- run: scripts/examples/esp_example.sh lock-app sdkconfig.defaults.esp32c6 esp32c6
+ - name: Build example Lighting App (Target:ESP32C6)
+ run: scripts/examples/esp_example.sh lighting-app sdkconfig.defaults.esp32c6 esp32c6
- name: Uploading Size Reports
uses: ./.github/actions/upload-size-reports
@@ -124,7 +121,7 @@ jobs:
name: ESP32_1
runs-on: ubuntu-latest
- if: github.actor != 'restyled-io[bot]'
+ if: github.actor != 'restyled-io[bot]' && github.repository_owner == 'espressif'
container:
image: ghcr.io/project-chip/chip-build-esp32:81
@@ -168,3 +165,9 @@ jobs:
- name: Build example LIT ICD App (Target:ESP32H2)
run: scripts/examples/esp_example.sh lit-icd-app sdkconfig.defaults esp32h2
+
+ - name: Build example Pigweed App
+ run: scripts/examples/esp_example.sh pigweed-app sdkconfig.defaults
+
+ - name: Build example Lock App (Target:ESP32C6)
+ run: scripts/examples/esp_example.sh lock-app sdkconfig.defaults.esp32c6 esp32c6
diff --git a/.github/workflows/examples-linux-arm.yaml b/.github/workflows/examples-linux-arm.yaml
index ee226b12dc..7000082f03 100644
--- a/.github/workflows/examples-linux-arm.yaml
+++ b/.github/workflows/examples-linux-arm.yaml
@@ -65,7 +65,7 @@ jobs:
--target linux-arm64-chip-tool-nodeps-ipv6only \
--target linux-arm64-lock-clang \
--target linux-arm64-minmdns-clang \
- --target linux-arm64-light-rpc-ipv6only-clang \
+ --target linux-arm64-light-data-model-enabled-rpc-ipv6only-clang \
--target linux-arm64-thermostat-no-ble-clang \
--target linux-arm64-lit-icd-no-ble-clang \
--target linux-arm64-fabric-admin-clang-rpc \
diff --git a/.github/workflows/qemu.yaml b/.github/workflows/qemu.yaml
index b3115f2ff3..783c46ef41 100644
--- a/.github/workflows/qemu.yaml
+++ b/.github/workflows/qemu.yaml
@@ -38,7 +38,7 @@ jobs:
BUILD_TYPE: esp32-qemu
runs-on: ubuntu-latest
- if: github.actor != 'restyled-io[bot]'
+ if: github.actor != 'restyled-io[bot]' && github.repository_owner == 'espressif'
container:
image: ghcr.io/project-chip/chip-build-esp32-qemu:81
diff --git a/.github/workflows/restyled.yml b/.github/workflows/restyled.yml
new file mode 100644
index 0000000000..9174483ecb
--- /dev/null
+++ b/.github/workflows/restyled.yml
@@ -0,0 +1,35 @@
+name: Restyled
+
+on:
+ pull_request:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ restyled:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - uses: restyled-io/actions/setup@v4
+ - id: restyler
+ uses: restyled-io/actions/run@v4
+ with:
+ fail-on-differences: true
+
+ - if: |
+ !cancelled() &&
+ steps.restyler.outputs.success == 'true' &&
+ github.event.pull_request.head.repo.full_name == github.repository
+ uses: peter-evans/create-pull-request@v6
+ with:
+ base: ${{ steps.restyler.outputs.restyled-base }}
+ branch: ${{ steps.restyler.outputs.restyled-head }}
+ title: ${{ steps.restyler.outputs.restyled-title }}
+ body: ${{ steps.restyler.outputs.restyled-body }}
+ labels: "restyled"
+ reviewers: ${{ github.event.pull_request.user.login }}
+ delete-branch: true
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 04aa91020a..63957b64d8 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -111,6 +111,7 @@ jobs:
src/app/zap-templates/zcl/data-model/chip/boolean-state-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/actions-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/bridged-device-basic-information.xml \
+ src/app/zap-templates/zcl/data-model/chip/camera-av-stream-management-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/chip-ota.xml \
src/app/zap-templates/zcl/data-model/chip/chip-types.xml \
src/app/zap-templates/zcl/data-model/chip/channel-cluster.xml \
@@ -199,6 +200,7 @@ jobs:
src/app/zap-templates/zcl/data-model/chip/wake-on-lan-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/washer-controls-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/water-heater-management-cluster.xml \
+ src/app/zap-templates/zcl/data-model/chip/webrtc-requestor-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/webrtc-provider-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/wifi-network-diagnostics-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/wifi-network-management-cluster.xml \
@@ -209,6 +211,7 @@ jobs:
src/app/zap-templates/zcl/data-model/chip/sample-mei-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/electrical-energy-measurement-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/electrical-power-measurement-cluster.xml \
+ src/app/zap-templates/zcl/data-model/chip/zone-management-cluster.xml \
"
- name: Build Apps
run: |
@@ -594,7 +597,7 @@ jobs:
"
- name: Run Tests
run: |
- scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/darwin-x64-all-clusters-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --quiet --app-args "--discriminator 3840 --interface-id -1" --script-args "-t 3600 --disable-test ClusterObjectTests.TestTimedRequestTimeout"'
+ scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/darwin-x64-all-clusters-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factory-reset --quiet --app-args "--discriminator 3840 --interface-id -1" --script-args "-t 3600 --disable-test ClusterObjectTests.TestTimedRequestTimeout"'
- name: Uploading core files
uses: actions/upload-artifact@v4
if: ${{ failure() && !env.ACT }}
diff --git a/.pullapprove.yml b/.pullapprove.yml
index 83d7b70b34..81267526ee 100644
--- a/.pullapprove.yml
+++ b/.pullapprove.yml
@@ -8,257 +8,250 @@ github_api_version: "shadow-cat-preview"
############################################################
overrides:
- - if: "'hotfix' in labels"
- status: success
- explanation: "Hotfix label added, bypassing reviews"
+ - if: "'hotfix' in labels"
+ status: success
+ explanation: "Hotfix label added, bypassing reviews"
- ############################################################
- # Draft PRs
- ############################################################
- - if: "draft"
- status: pending
- explanation: "PR is draft, pending review"
+ ############################################################
+ # Draft PRs
+ ############################################################
+ - if: "draft"
+ status: pending
+ explanation: "PR is draft, pending review"
- ############################################################
- # License Checks
- ############################################################
- - if: "'*license/cla*' not in statuses.successful"
- status: pending
- explanation: "CLA must be agreed to by all contributors"
+ ############################################################
+ # License Checks
+ ############################################################
+ - if: "'*license/cla*' not in statuses.successful"
+ status: pending
+ explanation: "CLA must be agreed to by all contributors"
- ############################################################
- # Conditions to Skip Review
- ############################################################
- - if: "base.ref != 'master'"
- status: success
- explanation: "Review not required unless merging to master"
+ ############################################################
+ # Conditions to Skip Review
+ ############################################################
+ - if: "base.ref != 'master'"
+ status: success
+ explanation: "Review not required unless merging to master"
- ############################################################
- # Required status checks
- ############################################################
- - if: "'*restyle*' not in statuses.successful"
- status: failure
- explanation: "Style must be inline before reviewing can be complete"
+ ############################################################
+ # Require Issues
+ ############################################################
+ # disabling until we have PRs up to date
+ # - if: "'*issue*' not in statuses.successful"
+ # status: failure
+ # explanation: "An issue is required for all PRs"
- ############################################################
- # Require Issues
- ############################################################
- # disabling until we have PRs up to date
- # - if: "'*issue*' not in statuses.successful"
- # status: failure
- # explanation: "An issue is required for all PRs"
-
- ############################################################
- # Fast tracking
- ############################################################
- - if: "'fast track' in labels"
- status: success
- explanation: "PR has been fast tracked, bypassing reviews"
+ ############################################################
+ # Fast tracking
+ ############################################################
+ - if: "'fast track' in labels"
+ status: success
+ explanation: "PR has been fast tracked, bypassing reviews"
############################################################
# Notifications
############################################################
notifications:
- ############################################################
- # New contributors
- ############################################################
- - when: pull_request.opened
- if: "author_association == 'FIRST_TIME_CONTRIBUTOR'"
- comment: |
- Hey @{{ author }}, thanks for the PR! The review will start once
- the tests and CI checks have passed. If they don't, please review
- the logs and try to fix the issues (ask for help if you can't
- figure it out). A reviewer will be assigned once the tests are
- passing and they'll walk you through getting the PR finished
- and merged.
+ ############################################################
+ # New contributors
+ ############################################################
+ - when: pull_request.opened
+ if: "author_association == 'FIRST_TIME_CONTRIBUTOR'"
+ comment: |
+ Hey @{{ author }}, thanks for the PR! The review will start once
+ the tests and CI checks have passed. If they don't, please review
+ the logs and try to fix the issues (ask for help if you can't
+ figure it out). A reviewer will be assigned once the tests are
+ passing and they'll walk you through getting the PR finished
+ and merged.
groups:
- ############################################################
- # Shared Reviewer Groups
- ############################################################
- shared-reviewers-amazon:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-amazon]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-apple:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-apple]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-bosch:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-bosch]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-comcast:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-comcast]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-dyson:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-dyson]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-espressif:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-espressif]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-google:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-google]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-grundfos:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-grundfos]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-irobot:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-irobot]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-lg:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-lg]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-logitech:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-logitech]
- reviews:
- request: 0 # Requested to be only on demand
- shared-reviewers-nordic:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-nordic]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-nxp:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-nxp]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-samsung:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-samsung]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-eve:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-eve]
- reviews:
- request: 0 # Do not auto-add
- # shared-reviewers-signify disabled for now, because the reviewers-signify
- # team is empty and pullapprove seems to mis-handle that badly and treats
- # _all_ reviewers as being in this group.
- #
- # See https://github.com/dropseed/pullapprove/issues/71
- #
- # shared-reviewers-signify:
- # type: optional
- # conditions:
- # - files.include('*')
- # reviewers:
- # teams: [reviewers-signify]
- # reviews:
- # request: 0 # Do not auto-add
- shared-reviewers-silabs:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-silabs]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-somfy:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-somfy]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-tcl:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-tcl]
- reviews:
- request: 0 # Do not auto-add
- shared-reviewers-qorvo:
- type: optional
- conditions:
- - files.include('*')
- reviewers:
- teams: [reviewers-qorvo]
- reviews:
- request: 0 # Do not auto-add
+ ############################################################
+ # Shared Reviewer Groups
+ ############################################################
+ shared-reviewers-amazon:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-amazon]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-apple:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-apple]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-bosch:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-bosch]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-comcast:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-comcast]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-dyson:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-dyson]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-espressif:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-espressif]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-google:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-google]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-grundfos:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-grundfos]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-irobot:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-irobot]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-lg:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-lg]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-logitech:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-logitech]
+ reviews:
+ request: 0 # Requested to be only on demand
+ shared-reviewers-nordic:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-nordic]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-nxp:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-nxp]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-samsung:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-samsung]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-eve:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-eve]
+ reviews:
+ request: 0 # Do not auto-add
+ # shared-reviewers-signify disabled for now, because the reviewers-signify
+ # team is empty and pullapprove seems to mis-handle that badly and treats
+ # _all_ reviewers as being in this group.
+ #
+ # See https://github.com/dropseed/pullapprove/issues/71
+ #
+ # shared-reviewers-signify:
+ # type: optional
+ # conditions:
+ # - files.include('*')
+ # reviewers:
+ # teams: [reviewers-signify]
+ # reviews:
+ # request: 0 # Do not auto-add
+ shared-reviewers-silabs:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-silabs]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-somfy:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-somfy]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-tcl:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-tcl]
+ reviews:
+ request: 0 # Do not auto-add
+ shared-reviewers-qorvo:
+ type: optional
+ conditions:
+ - files.include('*')
+ reviewers:
+ teams: [reviewers-qorvo]
+ reviews:
+ request: 0 # Do not auto-add
- ############################################################
- # Base Required Reviewers
- ############################################################
- required-reviewers:
- description: >
- [Required
- Reviewers](https://github.com/project-chip/connectedhomeip/blob/master/CONTRIBUTING.md#review-requirements)
- This is the main group of required reviews for general pull
- requests.
- type: required
- requirements:
- - len(groups.approved.include('shared-reviewers-*')) >= 2
- reviews:
- required: 0
- labels:
- approved: "review - approved"
- pending: "review - pending"
- rejected: "review - changed requested"
+ ############################################################
+ # Base Required Reviewers
+ ############################################################
+ required-reviewers:
+ description: >
+ [Required
+ Reviewers](https://github.com/project-chip/connectedhomeip/blob/master/CONTRIBUTING.md#review-requirements)
+ This is the main group of required reviews for general pull
+ requests.
+ type: required
+ requirements:
+ - len(groups.approved.include('shared-reviewers-*')) >= 2
+ reviews:
+ required: 0
+ labels:
+ approved: "review - approved"
+ pending: "review - pending"
+ rejected: "review - changed requested"
diff --git a/data_model/1.4/clusters/DemandResponseLoadControl.xml b/data_model/1.4/clusters/DemandResponseLoadControl.xml
deleted file mode 100644
index 1acd1ea26c..0000000000
--- a/data_model/1.4/clusters/DemandResponseLoadControl.xml
+++ /dev/null
@@ -1,453 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/data_model/1.4/clusters/EnergyCalendar.xml b/data_model/1.4/clusters/EnergyCalendar.xml
deleted file mode 100644
index 2ba9320361..0000000000
--- a/data_model/1.4/clusters/EnergyCalendar.xml
+++ /dev/null
@@ -1,287 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/data_model/1.4/clusters/Humidistat.xml b/data_model/1.4/clusters/Humidistat.xml
deleted file mode 100644
index 1af5469848..0000000000
--- a/data_model/1.4/clusters/Humidistat.xml
+++ /dev/null
@@ -1,283 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/data_model/1.4/clusters/cluster_ids.json b/data_model/1.4/clusters/cluster_ids.json
index 9de2f243b3..687bbc3229 100644
--- a/data_model/1.4/clusters/cluster_ids.json
+++ b/data_model/1.4/clusters/cluster_ids.json
@@ -64,11 +64,9 @@
"144": "Electrical Power Measurement",
"145": "Electrical Energy Measurement",
"148": "Water Heater Management",
- "150": "Demand Response Load Control",
"151": "Messages",
"152": "Device Energy Management",
"153": "Energy EVSE",
- "154": "Energy Calendar",
"155": "Energy Preference",
"156": "Power Topology",
"157": "Energy EVSE Mode",
@@ -81,7 +79,6 @@
"513": "Thermostat",
"514": "Fan Control",
"516": "Thermostat User Interface Configuration",
- "517": "Humidistat",
"768": "Color Control",
"769": "Ballast Configuration",
"1024": "Illuminance Measurement",
diff --git a/data_model/1.4/device_types/EnergyTariff.xml b/data_model/1.4/device_types/EnergyTariff.xml
deleted file mode 100644
index 887bfa420d..0000000000
--- a/data_model/1.4/device_types/EnergyTariff.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/data_model/1.4/device_types/EnergyTariffCalendar.xml b/data_model/1.4/device_types/EnergyTariffCalendar.xml
deleted file mode 100644
index 70d74b7239..0000000000
--- a/data_model/1.4/device_types/EnergyTariffCalendar.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/data_model/1.4/device_types/HumidifierDehumidifier.xml b/data_model/1.4/device_types/HumidifierDehumidifier.xml
deleted file mode 100644
index 973919635f..0000000000
--- a/data_model/1.4/device_types/HumidifierDehumidifier.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/docs/guides/repl/Matter_Access_Control.ipynb b/docs/development_controllers/chip-repl/Matter_Access_Control.ipynb
similarity index 100%
rename from docs/guides/repl/Matter_Access_Control.ipynb
rename to docs/development_controllers/chip-repl/Matter_Access_Control.ipynb
diff --git a/docs/guides/repl/Matter_Basic_Interactions.ipynb b/docs/development_controllers/chip-repl/Matter_Basic_Interactions.ipynb
similarity index 100%
rename from docs/guides/repl/Matter_Basic_Interactions.ipynb
rename to docs/development_controllers/chip-repl/Matter_Basic_Interactions.ipynb
diff --git a/docs/guides/repl/Matter_Multi_Fabric_Commissioning.ipynb b/docs/development_controllers/chip-repl/Matter_Multi_Fabric_Commissioning.ipynb
similarity index 100%
rename from docs/guides/repl/Matter_Multi_Fabric_Commissioning.ipynb
rename to docs/development_controllers/chip-repl/Matter_Multi_Fabric_Commissioning.ipynb
diff --git a/docs/guides/repl/Matter_REPL_Intro.ipynb b/docs/development_controllers/chip-repl/Matter_REPL_Intro.ipynb
similarity index 100%
rename from docs/guides/repl/Matter_REPL_Intro.ipynb
rename to docs/development_controllers/chip-repl/Matter_REPL_Intro.ipynb
diff --git a/docs/development_controllers/chip-repl/index.md b/docs/development_controllers/chip-repl/index.md
new file mode 100644
index 0000000000..b17962ab66
--- /dev/null
+++ b/docs/development_controllers/chip-repl/index.md
@@ -0,0 +1,15 @@
+# chip-repl
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+- [Matter REPL](./matter-repl.md)
+- [Intro](./Matter_REPL_Intro.ipynb)
+- [Access Control](./Matter_Access_Control.ipynb)
+- [Basic interactions](./Matter_Basic_Interactions.ipynb)
+- [Fabric Commissioning](./Matter_Multi_Fabric_Commissioning.ipynb)
diff --git a/docs/guides/matter-repl.md b/docs/development_controllers/chip-repl/matter-repl.md
similarity index 97%
rename from docs/guides/matter-repl.md
rename to docs/development_controllers/chip-repl/matter-repl.md
index e7ebba5b3e..9bb3e60916 100644
--- a/docs/guides/matter-repl.md
+++ b/docs/development_controllers/chip-repl/matter-repl.md
@@ -244,8 +244,8 @@ Some tests provides the option to exclude them. For example, you can use
It is recommended to use the test wrapper to run mobile-device-test.py, for
example, you can run:
-```
-./scripts/tests/run_python_test.py --app chip-all-clusters-app --factoryreset
+```shell
+./scripts/tests/run_python_test.py --app chip-all-clusters-app --factory-reset
```
It provides some extra options, for example:
@@ -254,7 +254,7 @@ It provides some extra options, for example:
optional arguments:
-h, --help show this help message and exit
--app APP Path to local application to use, omit to use external apps.
- --factoryreset Remove app config and repl configs (/tmp/chip* and /tmp/repl*) before running the tests.
+ --factory-reset Remove app config and repl configs (/tmp/chip* and /tmp/repl*) before running the tests.
--app-args APP_ARGS The extra parameters passed to the device side app.
--script SCRIPT Path to the test script to use, omit to use the default test script (mobile-device-test.py).
--script-args SCRIPT_ARGS Arguments for the REPL test script
@@ -263,8 +263,8 @@ optional arguments:
You can pass your own flags for mobile-device-test.py by appending them to the
command line with two dashes, for example:
-```
-./scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-no-ble-no-wifi-tsan-clang/chip-all-clusters-app --factoryreset --script-args "-t 90 --disable-test ClusterObjectTests.TestTimedRequestTimeout"
+```shell
+./scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-no-ble-no-wifi-tsan-clang/chip-all-clusters-app --factory-reset --script-args "-t 90 --disable-test ClusterObjectTests.TestTimedRequestTimeout"
```
will pass `-t 90 --disable-test ClusterObjectTests.TestTimedRequestTimeout` to
diff --git a/docs/guides/python_chip_controller_advanced_usage.md b/docs/development_controllers/chip-repl/python_chip_controller_advanced_usage.md
similarity index 100%
rename from docs/guides/python_chip_controller_advanced_usage.md
rename to docs/development_controllers/chip-repl/python_chip_controller_advanced_usage.md
diff --git a/docs/guides/python_chip_controller_building.md b/docs/development_controllers/chip-repl/python_chip_controller_building.md
similarity index 98%
rename from docs/guides/python_chip_controller_building.md
rename to docs/development_controllers/chip-repl/python_chip_controller_building.md
index 8a7acc884a..aa49adad24 100644
--- a/docs/guides/python_chip_controller_building.md
+++ b/docs/development_controllers/chip-repl/python_chip_controller_building.md
@@ -39,7 +39,7 @@ Linux (amd64 / aarch64) or macOS.
To build and run the Python CHIP controller:
1. Install all necessary packages and prepare the build system. For more
- details, see the [Building Matter](BUILDING.md) documentation:
+ details, see the [Building Matter](../../guides/BUILDING.md) documentation:
```
sudo apt-get update
@@ -77,7 +77,8 @@ To build and run the Python CHIP controller:
5. Build and install the Python CHIP controller:
```
- scripts/build_python.sh -m platform -i separate
+ scripts/build_python.sh -m platform -i out/python_env
+ source out/python_env/bin/activate
```
> Note: This builds the Python CHIP Controller along with the CHIP REPL as
diff --git a/docs/guides/chip_tool_guide.md b/docs/development_controllers/chip-tool/chip_tool_guide.md
similarity index 99%
rename from docs/guides/chip_tool_guide.md
rename to docs/development_controllers/chip-tool/chip_tool_guide.md
index 31aa29353c..8aac8daa12 100644
--- a/docs/guides/chip_tool_guide.md
+++ b/docs/development_controllers/chip-tool/chip_tool_guide.md
@@ -38,7 +38,8 @@ Before you can use the CHIP Tool, you must compile it from source on Linux
To build and run the CHIP Tool:
1. Install all required packages for Matter and prepare the source code and the
- build system. Read the [Building Matter](BUILDING.md) guide for instructions.
+ build system. Read the [Building Matter](../../guides/BUILDING.md) guide for
+ instructions.
2. Open a command prompt in the `connectedhomeip` directory.
3. Run the following command:
diff --git a/docs/development_controllers/chip-tool/index.md b/docs/development_controllers/chip-tool/index.md
new file mode 100644
index 0000000000..69dc7dcd68
--- /dev/null
+++ b/docs/development_controllers/chip-tool/index.md
@@ -0,0 +1,11 @@
+# chip-tool
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+- [chip-tool guide](./chip_tool_guide.md)
diff --git a/docs/development_controllers/index.md b/docs/development_controllers/index.md
new file mode 100644
index 0000000000..dfc6b330b1
--- /dev/null
+++ b/docs/development_controllers/index.md
@@ -0,0 +1,13 @@
+# Development Controllers
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+chip-repl/index
+chip-tool/index
+```
+
+- [chip-tool](./chip-tool)
+- [chip-repl](./chip-repl)
diff --git a/docs/getting_started/changing_examples.md b/docs/getting_started/changing_examples.md
new file mode 100644
index 0000000000..611610ce43
--- /dev/null
+++ b/docs/getting_started/changing_examples.md
@@ -0,0 +1,64 @@
+# Changing Examples
+
+The composition of most examples in the SDK is static and code generated.
+
+The tool used to describe and change the composition of an example is called
+ZAP. More information about ZAP and a walk-through of the tool can be found in
+the [ZAP introduction](./zap.md). The composition of the device is captured in a
+.zap file, which is readable by the ZAP tool. This is then compiled into a
+human-readable .matter file, which is used to build the static features of the
+example.
+
+To change the composition of a device example, you need to
+
+1. Change the zap file to implement your desired changes
+2. Run the code generation tool to generate the .matter file
+3. Re-build the example
+
+## Changing the zap file in an example
+
+Most examples in the SDK keep the .zap file in a sub-directory called
+example-name-common (ex. lighting-common). To load an existing .zap file into
+the ZAP tool, from the chip-root use
+
+```
+./scripts/tools/zap/run_zaptool.sh
+```
+
+For example, to make changes to the lighting app, use:
+
+```
+./scripts/tools/zap/run_zaptool.sh examples/lighting-app/lighting-common/lighting-app.zap
+```
+
+This will open the ZAP GUI tool, which can be used to change the endpoint
+composition, clusters, features, attributes, commands and events exposed by the
+device.
+
+Details of how to use the tool can be found in the [ZAP Introduction](./zap.md).
+
+## Running code generation
+
+To compile the .matter file for use in building, use:
+
+```
+./scripts/tools/zap/generate.py
+```
+
+For example, for changes to the lighting app, use:
+
+```
+./scripts/tools/zap/generate.py examples/lighting-app/lighting-common/lighting-app.zap
+```
+
+If there are changes to many .zap files, the following script can be used to
+recompile the .zap files for all the examples and the controller.
+
+```
+ ./scripts/tools/zap_regen_all.py
+```
+
+## Rebuilding the example
+
+After generating the .matter file, re-build the example. Instructions for
+building examples are given in [Building your first example](./first_example.md)
diff --git a/docs/getting_started/first_example.md b/docs/getting_started/first_example.md
index 89ab7d493d..14fe239749 100644
--- a/docs/getting_started/first_example.md
+++ b/docs/getting_started/first_example.md
@@ -26,7 +26,7 @@ for testing.
[chip-tool](../../examples/chip-tool/) is a C++ command line controller with an
interactive shell. More information on chip-tool can be found in the
-[chip-tool guide](../guides/chip_tool_guide.md).
+[chip-tool guide](../development_controllers/chip-tool/chip_tool_guide.md).
[chip-repl](../../src/controller/python/chip-repl.py) is a shell for the python
controller. The chip-repl is part of the python controller framework, often used
diff --git a/docs/getting_started/index.md b/docs/getting_started/index.md
index ea881141ff..098f047ed7 100644
--- a/docs/getting_started/index.md
+++ b/docs/getting_started/index.md
@@ -12,5 +12,6 @@ The following docs are a brief introduction to SDK development.
```
- [Running your first example](./first_example.md)
-- [SDK Basics](./SDKBasics.md)
-- [ZAP](./zap.md)
+- [Changing examples](./changing_examples.md)
+- [SDK Architecture Introduction](./SDKBasics.md)
+- [ZAP Introduction](./zap.md)
diff --git a/docs/guides/darwin.md b/docs/guides/darwin.md
index 00165e6fca..4692c0b065 100644
--- a/docs/guides/darwin.md
+++ b/docs/guides/darwin.md
@@ -292,17 +292,17 @@ Example:
- [ESP32 Lighting](/examples/lighting-app/esp32/README.md)
- [ESP32 Temperature Sensor](/examples/temperature-measurement-app/esp32/README.md)
- [mbedOS](/examples/all-clusters-app/mbed/README.md)
-- [nRF Connect All Clusters](./nrfconnect_examples_configuration.md)
+- [nRF Connect All Clusters](../platforms/nrf/nrfconnect_examples_configuration.md)
- [nRF Connect Pump](/examples/pump-app/nrfconnect/README.md)
-- [NXP Examples](./nxp/nxp_imx8m_linux_examples.md)
+- [NXP Examples](../platforms/nxp/nxp_imx8m_linux_examples.md)
- [NXP](/examples/all-clusters-app/nxp/mw320/README.md)
- [Infineon CYW30739 Lighting](/examples/lighting-app/infineon/cyw30739/README.md)
- [Infineon PSoC6](/examples/all-clusters-app/infineon/psoc6/README.md)
- [Qorvo](/examples/lighting-app/qpg/README.md)
-- [Silicon Labs](./silabs_getting_started.md)
+- [Silicon Labs](../platforms/silabs/silabs_getting_started.md)
- [Simulated Linux](./simulated_device_linux.md)
- [Telink](/examples/lighting-app/telink/README.md)
-- [TI Platform](./ti/ti_matter_overview.md)
+- [TI Platform](../platforms/ti/ti_matter_overview.md)
- [Tizen](/examples/lighting-app/tizen/README.md)
## Providing Feedback to Apple
diff --git a/docs/guides/index.md b/docs/guides/index.md
index 14d9caf7e2..97167c84ae 100644
--- a/docs/guides/index.md
+++ b/docs/guides/index.md
@@ -9,54 +9,13 @@ and features.
:hidden:
*
-esp32/README
-nxp/README
-ti/ti_matter_overview
```
## Build Guides
- [Building](./BUILDING.md)
-## Platform Guides
-
-- [Android - Building](./android_building.md)
-- [Apple - Testing with iPhone, iPad, macOS, Apple TV, HomePod, Watch, etc](./darwin.md)
-- [ASR - Getting Started Guide](./asr_getting_started_guide.md)
-- [Espressif (ESP32) - Getting Started Guide](./esp32/README.md)
-- [Infineon PSoC6 - Software Update](./infineon_psoc6_software_update.md)
-- [Linux - Simulated Devices](./simulated_device_linux.md)
-- [mbedOS - Adding a new target](./mbedos_add_new_target.md)
-- [mbedOS - Commissioning](./mbedos_commissioning.md)
-- [mbedOS - Platform Overview](./mbedos_platform_overview.md)
-- [nRF Connect - Android Commissioning](./nrfconnect_android_commissioning.md)
-- [nRF Connect - CLI Guide](./nrfconnect_examples_cli.md)
-- [nRF Connect - Configuration](./nrfconnect_examples_configuration.md)
-- [nRF Connect - Factory Data Configuration](./nrfconnect_factory_data_configuration.md)
-- [nRF Connect - Platform Overview](./nrfconnect_platform_overview.md)
-- [nRF Connect - Software Update](./nrfconnect_examples_software_update.md)
-- [NXP - Getting Started Guide](./nxp/README.md)
-- [Silicon Labs - Documentation](https://siliconlabs.github.io/matter/latest/index.html)
-- [Silicon Labs - Getting Started](./silabs_getting_started.md)
-- [Silicon Labs - Software Update](./silabs_efr32_software_update.md)
-- [Silicon Labs - CLI Guide](./silabs_cli_guide.md)
-- [TI - Platform Overview](./ti/ti_matter_overview.md)
-
-## Tool Guides
-
-- [CHIP Tool](./chip_tool_guide.md)
-- [Python Matter-Repl](./matter-repl.md)
-- [python-chip-controller - Advanced](./python_chip_controller_advanced_usage.md)
-- [python-chip-controller - Building](./python_chip_controller_building.md)
-- [CHEF test devices](../../examples/chef/README.md)
- - [New device type adding](../../examples/chef/NEW_CHEF_DEVICES.md)
-
## Development Guides
- [Access Control](./access-control-guide.md)
- [Matter IDL tooling and validation](./matter_idl_tooling.md)
-
-## Setup Guides
-
-- [Open Thread - Hardware suggestions](./openthread_rcp_nrf_dongle.md)
-- [Open Thread - Setting up a Raspberry Pi as a Border Router](./openthread_border_router_pi.md)
diff --git a/docs/index.md b/docs/index.md
index f4b4062271..6b7553f205 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -8,9 +8,11 @@
PROJECT_FLOW
VSCODE_DEVELOPMENT
ci-cd/index
+development_controllers/index
getting_started/index
cluster_and_device_type_dev/index
guides/index
+platforms/index
style/index
examples/index
product_considerations/index
diff --git a/docs/guides/android_building.md b/docs/platforms/android/android_building.md
similarity index 100%
rename from docs/guides/android_building.md
rename to docs/platforms/android/android_building.md
diff --git a/docs/platforms/android/index.md b/docs/platforms/android/index.md
new file mode 100644
index 0000000000..a8bdd37290
--- /dev/null
+++ b/docs/platforms/android/index.md
@@ -0,0 +1,11 @@
+# Android
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[Android - Building](./android_building.md)
diff --git a/docs/guides/asr_getting_started_guide.md b/docs/platforms/asr/asr_getting_started_guide.md
similarity index 97%
rename from docs/guides/asr_getting_started_guide.md
rename to docs/platforms/asr/asr_getting_started_guide.md
index e47cc554ef..e5a4bac6e2 100644
--- a/docs/guides/asr_getting_started_guide.md
+++ b/docs/platforms/asr/asr_getting_started_guide.md
@@ -33,7 +33,7 @@ to speed up development. You can find them in the samples with `/asr` subfolder.
## Building the Example Application
-- [Setup Matter Environment](./BUILDING.md)
+- [Setup Matter Environment](../../guides/BUILDING.md)
- Setup toolchain
- for ASR582X and ASR550X
@@ -140,7 +140,7 @@ There are two commissioning modes supported by ASR platform:
`build_examples.py` script. For example:
`./scripts/build/build_examples.py --target asr-$ASR_BOARD-lighting-ota build`
2. For more usage details, please refer to the
- [OTA example](../../examples/ota-requestor-app/asr/README.md)
+ [OTA example](../../../examples/ota-requestor-app/asr/README.md)
## Factory
diff --git a/docs/platforms/asr/index.md b/docs/platforms/asr/index.md
new file mode 100644
index 0000000000..f4748a4c70
--- /dev/null
+++ b/docs/platforms/asr/index.md
@@ -0,0 +1,11 @@
+# ASR
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[ASR - Getting Started Guide](./asr_getting_started_guide.md)
diff --git a/docs/platforms/bouffalolab/index.md b/docs/platforms/bouffalolab/index.md
new file mode 100644
index 0000000000..bacc0e63ca
--- /dev/null
+++ b/docs/platforms/bouffalolab/index.md
@@ -0,0 +1,11 @@
+# Bouffalolab
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[Bouffalo Lab - Matter factory data generation](./matter_factory_data.md)
diff --git a/docs/platforms/bouffalolab/matter_factory_data.md b/docs/platforms/bouffalolab/matter_factory_data.md
new file mode 100644
index 0000000000..9021cd80f6
--- /dev/null
+++ b/docs/platforms/bouffalolab/matter_factory_data.md
@@ -0,0 +1,249 @@
+# Introduction to Matter factory data
+
+Each Matter device should have it own unique factory data manufactured.
+
+This guide demonstrates what `Bouffalo Lab` provides to support factory data:
+
+- credential factory data protected by hardware security engine
+- reference tool to generate factory data
+- tool/method to program factory data
+
+# Matter factory data
+
+## How to enable
+
+One dedicate flash region allocates for factory data as below which is read-only
+for firmware.
+
+```toml
+name = "MFD"
+address0 = 0x3FE000
+size0 = 0x1000
+```
+
+To enable matter factory data feature, please append `-mfd` option at end of
+target name. Take BL602 Wi-Fi Matter Light as example.
+
+```
+./scripts/build/build_examples.py --target bouffalolab-bl602dk-light-littlefs-mfd build
+```
+
+## Factory data
+
+This flash region is divided to two parts:
+
+- One is plain text data, such as Vendor ID, Product ID, Serial number and so
+ on.
+
+ > For development/test purpose, all data can put in plain text data.
+
+- Other is cipher text data, such as private key for device attestation data.
+
+ `Bouffalo Lab` provides hardware security engine to decrypt this part data
+ with **only hardware access** efuse key.
+
+Current supported data
+
+- DAC certificate and private key
+- PAI certificate
+- Certificate declaration
+
+- Discriminator ID
+- Pass Code
+- Spake2p iteration count, salt and verifier
+- Vendor ID and name
+- Product ID and name
+- Product part number and product label
+- Manufacturing date
+- Hardware version and version string
+- Serial Number
+- Unique identifier
+
+> Note, it is available to add customer/product own information in factory data,
+> please reference to `bl_mfd.h`/`bl_mfd.c` in SDK and reference generation
+> script
+> [generate_factory_data.py](../../../scripts/tools/bouffalolab/generate_factory_data.py)
+
+# Generate Matter factory data
+
+Script tool
+[generate_factory_data.py](../../../scripts/tools/bouffalolab/generate_factory_data.py)
+call `chip-cert` to generate test certificates and verify certificates.
+
+Please run below command to compile `chip-cert` tool under `connnectedhomeip`
+repo.
+
+```shell
+./scripts/build/build_examples.py --target linux-x64-chip-cert build
+```
+
+## Command options
+
+- `--cd`, certificate declare
+
+ If not specified, `Chip-Test-CD-Signing-Cert.pem` and
+ `Chip-Test-CD-Signing-Key.pem` will sign a test certificate declare for
+ development and test purpose
+
+- `--pai_cert` and `--pai-key`, PAI certificate and PAI private key
+
+ If not specified, `Chip-Test-PAI-FFF1-8000-Cert.pem` and
+ `Chip-Test-PAI-FFF1-8000-Key.pem` will be used for development and test
+ purpose.
+
+- `--dac_cert` and `--dac_key`, DAC certificate and DAC private key.
+
+ If not specified, script will use PAI certificate and key specified
+ by`--pai_cert` and `--pai-key` to generate DAC certificate and private key
+ for development and test purpose.
+
+- `--discriminator`, discriminator ID
+
+ If not specified, script will generate for user.
+
+- `--passcode`, passcode
+
+ If not specified, script will generate for user.
+
+- `--spake2p_it` and `--spake2p_salt`
+
+ If not specified, script will generate and calculate verifier for user.
+
+Please reference to `--help` for more detail.
+
+## Generate with default test certificates
+
+- Run following command to generate all plain text factory data
+
+ Please create output folder first. Here takes `out/test-cert` as example.
+
+ ```shell
+ ./scripts/tools/bouffalolab/generate_factory_data.py --output out/test-cert
+ ```
+
+- Run following command to generate factory data which encrypt private of
+ device attestation data
+
+ ```shell
+ ./scripts/tools/bouffalolab/generate_factory_data.py --output out/test-cert --key
+ ```
+
+ > An example of hex string of 16 bytes: 12345678123456781234567812345678
+
+After command executes successfully, the output folder will has files as below:
+
+- Test certificate declare file which file name ends with `cd.der`
+
+ If user wants to reuse CD generated before, please specify CD with option
+ `--cd` as below.
+
+ ```shell
+ ./scripts/tools/bouffalolab/generate_factory_data.py --output out/test-cert --cd
+ ```
+
+- Test DAC certificate and DAC certificate key which file names ends with
+ `dac_cert.pem` and `dac_key.pem` separately.
+
+- QR code picture which file name ends with `onboard.png`
+- On board information which file name ends with `onboard.txt`
+- Matter factory data which file name ends with `mfd.bin`.
+
+## Generate with self-defined PAA/PAI certificates
+
+Self-defined PAA/PAI certificates may use in development and test scenario. But,
+user should know it has limit to work with real ecosystem.
+
+- Export environment variables in terminal for easy operations
+
+ ```
+ export TEST_CERT_VENDOR_ID=130D # Vendor ID hex string
+ export TEST_CERT_CN=BFLB # Common Name
+ ```
+
+- Generate PAA certificate and key to `out/cert` folder.
+
+ ```shell
+ mkdir out/test-cert
+ ./out/linux-x64-chip-cert/chip-cert gen-att-cert --type a --subject-cn "${TEST_CERT_CN} PAA 01" --valid-from "2020-10-15 14:23:43" --lifetime 7305 --out-key out/test-cert/Chip-PAA-Key-${TEST_CERT_VENDOR_ID}.pem --out out/test-cert/Chip-PAA-Cert-${TEST_CERT_VENDOR_ID}.pem --subject-vid ${TEST_CERT_VENDOR_ID}
+ ```
+
+- Convert PAA PEM format file to PAA DER format file
+
+ ```shell
+ ./out/linux-x64-chip-cert/chip-cert convert-cert -d out/test-cert/Chip-PAA-Cert-${TEST_CERT_VENDOR_ID}.pem out/test-cert/Chip-PAA-Cert-${TEST_CERT_VENDOR_ID}.der
+ ```
+
+ > Please save this PAA DER format file which will be used by `chip-tool`
+ > during commissioning.
+
+- Generate PAI certificate and key:
+
+ ```shell
+ ./out/linux-x64-chip-cert/chip-cert gen-att-cert --type i --subject-cn "${TEST_CERT_CN} PAI 01" --subject-vid ${TEST_CERT_VENDOR_ID} --valid-from "2020-10-15 14:23:43" --lifetime 7305 --ca-key out/test-cert/Chip-PAA-Key-${TEST_CERT_VENDOR_ID}.pem --ca-cert out/test-cert/Chip-PAA-Cert-${TEST_CERT_VENDOR_ID}.pem --out-key out/test-cert/Chip-PAI-Key-${TEST_CERT_VENDOR_ID}.pem --out out/test-cert/Chip-PAI-Cert-${TEST_CERT_VENDOR_ID}.pem
+ ```
+
+- Generate `MFD` in plain text data
+
+ ```shell
+ ./scripts/tools/bouffalolab/generate_factory_data.py --output out/test-cert --paa_cert out/test-cert/Chip-PAA-Cert-${TEST_CERT_VENDOR_ID}.pem --paa_key out/test-cert/Chip-PAA-Key-${TEST_CERT_VENDOR_ID}.pem --pai_cert out/test-cert/Chip-PAI-Cert-${TEST_CERT_VENDOR_ID}.pem --pai_key out/test-cert/Chip-PAI-Key-${TEST_CERT_VENDOR_ID}.pem
+ ```
+
+ > Appending `--key ` option to enable encrypt
+ > private key of attestation device data.
+
+## Generate with self-defined DAC certificate and key
+
+Self-defined DAC certificates may use in development and test scenario. But,
+user should know it has limit to work with real ecosystem.
+
+- Export environment variables in terminal for easy operations
+
+ ```
+ export TEST_CERT_VENDOR_ID=130D # Vendor ID hex string
+ export TEST_CERT_PRODUCT_ID=1001 # Vendor ID hex string
+ export TEST_CERT_CN=BFLB # Common Name
+ ```
+
+- Generate DAC certificate and key
+
+ ```shell
+ out/linux-x64-chip-cert/chip-cert gen-att-cert --type d --subject-cn "${TEST_CERT_CN} PAI 01" --subject-vid ${TEST_CERT_VENDOR_ID} --subject-pid ${TEST_CERT_VENDOR_ID} --valid-from "2020-10-16 14:23:43" --lifetime 5946 --ca-key out/test-cert/Chip-PAI-Key-${TEST_CERT_VENDOR_ID}.pem --ca-cert out/test-cert/Chip-PAI-Cert-${TEST_CERT_VENDOR_ID}.pem --out-key out/test-cert/Chip-DAC-Key-${TEST_CERT_VENDOR_ID}-${TEST_CERT_PRODUCT_ID}.pem --out out/test-cert/Chip-DAC-Cert-${TEST_CERT_VENDOR_ID}-${TEST_CERT_PRODUCT_ID}.pem
+ ```
+
+ > **Note**, `--valid-from` and `--lifetime` should be in `--valid-from` and
+ > `--lifetime` of PAI certificate.
+
+- Generate `MFD` in plain text data
+
+ ```shell
+ ./scripts/tools/bouffalolab/generate_factory_data.py --output out/test-cert --pai_cert out/test-cert/Chip-PAI-Cert-${TEST_CERT_VENDOR_ID}.pem --dac_cert out/test-cert/Chip-DAC-Cert-${TEST_CERT_VENDOR_ID}-${TEST_CERT_PRODUCT_ID}.pem --dac_key out/test-cert/Chip-DAC-Key-${TEST_CERT_VENDOR_ID}-${TEST_CERT_PRODUCT_ID}.pem
+ ```
+
+ > Appending `--key ` option to enable encrypt
+ > private key of attestation device data.
+
+# Program factory data
+
+After each target built successfully, a flash programming python script will be
+generated under out folder.
+
+Take BL616 Wi-Fi Matter Light as example, `chip-bl616-lighting-example.flash.py`
+is using to program firmware, and also for factory data and factory decryption
+key.
+
+```shell
+/out/bouffalolab-bl616dk-light-wifi-mfd/chip-bl616-lighting-example.flash.py --port --mfd out/test-cert/
+```
+
+> If `MFD` file has cipher text data, please append
+> `--key ` option to program to this key to efuse.
+
+- Limits on BL IOT SDK
+
+ If developer would like to program `MFD` with all plain text data, option
+ `--key ` needs pass to script, otherwise, flash tool
+ will raise an error. And SoC BL602, BL702 and BL702L use BL IOT SDK for
+ Matter Application.
+
+Please free contact to `Bouffalo Lab` for DAC provider service and higher
+security solution, such as SoC inside certificate requesting.
diff --git a/docs/guides/esp32/ble_settings.md b/docs/platforms/esp32/ble_settings.md
similarity index 100%
rename from docs/guides/esp32/ble_settings.md
rename to docs/platforms/esp32/ble_settings.md
diff --git a/docs/guides/esp32/build_app_and_commission.md b/docs/platforms/esp32/build_app_and_commission.md
similarity index 98%
rename from docs/guides/esp32/build_app_and_commission.md
rename to docs/platforms/esp32/build_app_and_commission.md
index 942cb6add8..df295cc493 100644
--- a/docs/guides/esp32/build_app_and_commission.md
+++ b/docs/platforms/esp32/build_app_and_commission.md
@@ -168,7 +168,7 @@ $ out/debug/chip-tool pairing ble-wifi 12345 MY_SSID MY_PASSWORD 20202021 3840
#### Commissioning the Thread device (ESP32H2)
- For ESP32-H2, firstly start OpenThread Border Router, you can either use
- [Raspberry Pi OpenThread Border Router](../openthread_border_router_pi.md)
+ [Raspberry Pi OpenThread Border Router](../openthread/openthread_border_router_pi.md)
OR
[ESP32 OpenThread Border Router](../../../examples/thread-br-app/esp32/README.md)
diff --git a/docs/guides/esp32/config_options.md b/docs/platforms/esp32/config_options.md
similarity index 100%
rename from docs/guides/esp32/config_options.md
rename to docs/platforms/esp32/config_options.md
diff --git a/docs/guides/esp32/factory_data.md b/docs/platforms/esp32/factory_data.md
similarity index 100%
rename from docs/guides/esp32/factory_data.md
rename to docs/platforms/esp32/factory_data.md
diff --git a/docs/guides/esp32/flash_nvs_encryption.md b/docs/platforms/esp32/flash_nvs_encryption.md
similarity index 100%
rename from docs/guides/esp32/flash_nvs_encryption.md
rename to docs/platforms/esp32/flash_nvs_encryption.md
diff --git a/docs/guides/esp32/README.md b/docs/platforms/esp32/index.md
similarity index 100%
rename from docs/guides/esp32/README.md
rename to docs/platforms/esp32/index.md
diff --git a/docs/guides/esp32/ota.md b/docs/platforms/esp32/ota.md
similarity index 100%
rename from docs/guides/esp32/ota.md
rename to docs/platforms/esp32/ota.md
diff --git a/docs/guides/esp32/providers.md b/docs/platforms/esp32/providers.md
similarity index 100%
rename from docs/guides/esp32/providers.md
rename to docs/platforms/esp32/providers.md
diff --git a/docs/guides/esp32/rpc_console.md b/docs/platforms/esp32/rpc_console.md
similarity index 100%
rename from docs/guides/esp32/rpc_console.md
rename to docs/platforms/esp32/rpc_console.md
diff --git a/docs/guides/esp32/secure_cert_partition.md b/docs/platforms/esp32/secure_cert_partition.md
similarity index 100%
rename from docs/guides/esp32/secure_cert_partition.md
rename to docs/platforms/esp32/secure_cert_partition.md
diff --git a/docs/guides/esp32/setup_idf_chip.md b/docs/platforms/esp32/setup_idf_chip.md
similarity index 100%
rename from docs/guides/esp32/setup_idf_chip.md
rename to docs/platforms/esp32/setup_idf_chip.md
diff --git a/docs/guides/esp32/vs_code_development.md b/docs/platforms/esp32/vs_code_development.md
similarity index 100%
rename from docs/guides/esp32/vs_code_development.md
rename to docs/platforms/esp32/vs_code_development.md
diff --git a/docs/platforms/index.md b/docs/platforms/index.md
new file mode 100644
index 0000000000..4011f2e4c2
--- /dev/null
+++ b/docs/platforms/index.md
@@ -0,0 +1,35 @@
+# Platform Guides
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+android/index
+asr/index
+bouffalolab/index
+esp32/index
+infineon/index
+mbedos/index
+nrf/index
+nxp/index
+openiotsdk/index
+openthread/index
+silabs/index
+stm32/index
+ti/index
+```
+
+- [Android](./android/)
+- [ASR](./asr/)
+- [Bouffalo Lab](./bouffalolab)
+- [ESP32](./esp32/)
+- [Infineon](./infineon/)
+- [MbedOS](./mbedos/)
+- [NRF](./nrf/)
+- [NXP](./nxp/)
+- [OpenIoTSDK](./openiotsdk/)
+- [OpenThread](./openthread/)
+- [Silabs](./silabs/)
+- [STM32](./stm32/)
+- [TI](./ti/)
diff --git a/docs/platforms/infineon/index.md b/docs/platforms/infineon/index.md
new file mode 100644
index 0000000000..7784db777f
--- /dev/null
+++ b/docs/platforms/infineon/index.md
@@ -0,0 +1,12 @@
+# Infineon
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[Provisioning](./infineon_psoc6_software_update.md)
+[Software update](./infineon_psoc6_software_update.md)
diff --git a/docs/guides/infineon_psoc6_software_update.md b/docs/platforms/infineon/infineon_psoc6_software_update.md
similarity index 100%
rename from docs/guides/infineon_psoc6_software_update.md
rename to docs/platforms/infineon/infineon_psoc6_software_update.md
diff --git a/docs/guides/infineon_trustm_provisioning.md b/docs/platforms/infineon/infineon_trustm_provisioning.md
similarity index 100%
rename from docs/guides/infineon_trustm_provisioning.md
rename to docs/platforms/infineon/infineon_trustm_provisioning.md
diff --git a/docs/guides/images/matter_mbedos_overview_simplified.png b/docs/platforms/mbedos/images/matter_mbedos_overview_simplified.png
similarity index 100%
rename from docs/guides/images/matter_mbedos_overview_simplified.png
rename to docs/platforms/mbedos/images/matter_mbedos_overview_simplified.png
diff --git a/docs/platforms/mbedos/index.md b/docs/platforms/mbedos/index.md
new file mode 100644
index 0000000000..5c29ab774d
--- /dev/null
+++ b/docs/platforms/mbedos/index.md
@@ -0,0 +1,13 @@
+# MbedOS
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[Add new target](./mbedos_add_new_target.md)
+[Commissioning](./mbedos_commissioning.md)
+[Platform overview](./mbedos_platform_overview.md)
diff --git a/docs/guides/mbedos_add_new_target.md b/docs/platforms/mbedos/mbedos_add_new_target.md
similarity index 100%
rename from docs/guides/mbedos_add_new_target.md
rename to docs/platforms/mbedos/mbedos_add_new_target.md
diff --git a/docs/guides/mbedos_commissioning.md b/docs/platforms/mbedos/mbedos_commissioning.md
similarity index 96%
rename from docs/guides/mbedos_commissioning.md
rename to docs/platforms/mbedos/mbedos_commissioning.md
index 8b6987878a..1d6dc7243c 100644
--- a/docs/guides/mbedos_commissioning.md
+++ b/docs/platforms/mbedos/mbedos_commissioning.md
@@ -58,7 +58,7 @@ To make provisioning possible and to control the Matter device from your Android
based smartphone, you must first build and install the CHIPTool application.
To build the CHIPTool application for your smartphone, read
-[Android building guide](android_building.md).
+[Android building guide](../android/android_building.md).
After building, install the application by completing the following steps:
@@ -154,7 +154,7 @@ brightness between 0-255.
If **Lighting LED** is available then brightness change can be observed.
> For more details about Android CHIPTool please visit
-> [CHIPTool](../../examples/android/CHIPTool/README.md)
+> [CHIPTool](../../../examples/android/CHIPTool/README.md)
## POSIX CLI CHIPTool
@@ -164,7 +164,7 @@ To make provisioning possible and to control the Matter device from Linux-based
device, you can build and run the Matter Client example application on it.
To build the POSIX CLI CHIPTool application check the guide
-[POSIX CLI guide](../../examples/chip-tool/README.md).
+[POSIX CLI guide](../../../examples/chip-tool/README.md).
### Device commissioning for CLI
@@ -196,7 +196,7 @@ For example:
The client will send a single command packet and then exit.
> For more details about POSIX CLI CHIPTool please visit
-> [POSIX CLI CHIPTool](../../examples/chip-tool/README.md)
+> [POSIX CLI CHIPTool](../../../examples/chip-tool/README.md)
## Python Device Controller
@@ -206,7 +206,7 @@ To make provisioning possible and to control the Matter device with Python
application, you can build and run the Python CHIP controller.
To build and install the Python Device Controller application check the guide
-[Python Device Controller guide](python_chip_controller_building.md).
+[Python Device Controller guide](../../development_controllers/chip-repl/python_chip_controller_building.md).
### Device commissioning for Python Device Controller
diff --git a/docs/guides/mbedos_platform_overview.md b/docs/platforms/mbedos/mbedos_platform_overview.md
similarity index 95%
rename from docs/guides/mbedos_platform_overview.md
rename to docs/platforms/mbedos/mbedos_platform_overview.md
index b70d5ed89c..8cdce2c20c 100644
--- a/docs/guides/mbedos_platform_overview.md
+++ b/docs/platforms/mbedos/mbedos_platform_overview.md
@@ -85,11 +85,11 @@ needed to perform communication through the Matter stack.
Sample Matter applications are provided for the Mbed OS platform. They can be
used to speed up development:
-- [shell](../../examples/shell/mbed/README.md)
-- [all-clusters-app](../../examples/all-clusters-app/mbed/README.md)
-- [lock-app](../../examples/lock-app/mbed/README.md)
-- [lighting-app](../../examples/lighting-app/mbed/README.md)
-- [pigweed-app](../../examples/pigweed-app/mbed/README.md)
+- [shell](../../../examples/shell/mbed/README.md)
+- [all-clusters-app](../../../examples/all-clusters-app/mbed/README.md)
+- [lock-app](../../../examples/lock-app/mbed/README.md)
+- [lighting-app](../../../examples/lighting-app/mbed/README.md)
+- [pigweed-app](../../../examples/pigweed-app/mbed/README.md)
### Example configuration
diff --git a/docs/guides/images/CHIPTool_device_commissioned.png b/docs/platforms/nrf/images/CHIPTool_device_commissioned.png
similarity index 100%
rename from docs/guides/images/CHIPTool_device_commissioned.png
rename to docs/platforms/nrf/images/CHIPTool_device_commissioned.png
diff --git a/docs/guides/images/matter_nrfconnect_overview_simplified_ncs.svg b/docs/platforms/nrf/images/matter_nrfconnect_overview_simplified_ncs.svg
similarity index 100%
rename from docs/guides/images/matter_nrfconnect_overview_simplified_ncs.svg
rename to docs/platforms/nrf/images/matter_nrfconnect_overview_simplified_ncs.svg
diff --git a/docs/guides/images/nrfconnect_android_connectivity.png b/docs/platforms/nrf/images/nrfconnect_android_connectivity.png
similarity index 100%
rename from docs/guides/images/nrfconnect_android_connectivity.png
rename to docs/platforms/nrf/images/nrfconnect_android_connectivity.png
diff --git a/docs/platforms/nrf/index.md b/docs/platforms/nrf/index.md
new file mode 100644
index 0000000000..bf74c43fcc
--- /dev/null
+++ b/docs/platforms/nrf/index.md
@@ -0,0 +1,16 @@
+# NRF
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[Android Commissioning](./nrfconnect_android_commissioning.md)
+[Examples CLI](./nrfconnect_examples_cli.md)
+[Examples configuration](./nrfconnect_examples_configuration.md)
+[Examples Software update](./nrfconnect_examples_software_update.md)
+[Factory data](./nrfconnect_factory_data_configuration.md)
+[Platform overview](./nrfconnect_platform_overview.md)
diff --git a/docs/guides/nrfconnect_android_commissioning.md b/docs/platforms/nrf/nrfconnect_android_commissioning.md
similarity index 94%
rename from docs/guides/nrfconnect_android_commissioning.md
rename to docs/platforms/nrf/nrfconnect_android_commissioning.md
index 0c93f45792..9c6358d501 100644
--- a/docs/guides/nrfconnect_android_commissioning.md
+++ b/docs/platforms/nrf/nrfconnect_android_commissioning.md
@@ -1,7 +1,7 @@
# Commissioning nRF Connect Accessory using Android CHIPTool
-You can use [CHIPTool](android_building.md) for Android smartphones to
-commission a Nordic Semiconductor's development kit programmed with a Matter
+You can use [CHIPTool](../android/android_building.md) for Android smartphones
+to commission a Nordic Semiconductor's development kit programmed with a Matter
example for the nRF Connect platform into a Matter fabric.
This guide references the nRF52840 DK and Matter nRF Connect Lighting Example
@@ -86,9 +86,10 @@ accessory using Android CHIPTool:
> _Note:_ This step is only needed if you're testing a Thread device. Skip it if
> the tested device operates in a Wi-Fi network.
-Follow the [OpenThread Border Router](openthread_border_router_pi.md) article to
-set up OpenThread Border Router on the Raspberry Pi, with either the nRF52840 DK
-or the nRF52840 Dongle acting as the
+Follow the
+[OpenThread Border Router](../openthread/openthread_border_router_pi.md) article
+to set up OpenThread Border Router on the Raspberry Pi, with either the nRF52840
+DK or the nRF52840 Dongle acting as the
[OpenThread Radio Co-Processor](https://openthread.io/platforms/co-processor).
During the setup, make sure that the Raspberry Pi is connected to your Wi-Fi
Access Point.
@@ -107,7 +108,7 @@ Application to learn how to build and program the example onto an nRF52840 DK.
## Building and installing Android CHIPTool
To build the CHIPTool application for your smartphone, read the
-[Building Android](android_building.md) guide.
+[Building Android](../android/android_building.md) guide.
After building, install the application by completing the following steps:
diff --git a/docs/guides/nrfconnect_examples_cli.md b/docs/platforms/nrf/nrfconnect_examples_cli.md
similarity index 100%
rename from docs/guides/nrfconnect_examples_cli.md
rename to docs/platforms/nrf/nrfconnect_examples_cli.md
diff --git a/docs/guides/nrfconnect_examples_configuration.md b/docs/platforms/nrf/nrfconnect_examples_configuration.md
similarity index 100%
rename from docs/guides/nrfconnect_examples_configuration.md
rename to docs/platforms/nrf/nrfconnect_examples_configuration.md
diff --git a/docs/guides/nrfconnect_examples_software_update.md b/docs/platforms/nrf/nrfconnect_examples_software_update.md
similarity index 99%
rename from docs/guides/nrfconnect_examples_software_update.md
rename to docs/platforms/nrf/nrfconnect_examples_software_update.md
index d295bae476..5f3ab2055d 100644
--- a/docs/guides/nrfconnect_examples_software_update.md
+++ b/docs/platforms/nrf/nrfconnect_examples_software_update.md
@@ -17,7 +17,7 @@ protocols:
> **_NOTE:_** The procedure presented below requires that you have OpenThread
> Border Router (OTBR) set up either in Docker or on a Raspberry Pi. Read
-> [Setup OpenThread Border Router on Raspberry Pi](openthread_border_router_pi.md)
+> [Setup OpenThread Border Router on Raspberry Pi](../openthread/openthread_border_router_pi.md)
> to learn how to install the OTBR on a Raspberry Pi.
The DFU over Matter involves two kinds of nodes:
@@ -94,7 +94,6 @@ To test the DFU over Matter, you need to complete the following steps:
10. Initiate the DFU procedure in one of the following ways:
-
- If you have built the device firmware with `-DCONFIG_CHIP_LIB_SHELL=y`
option, which enables Matter shell commands, run the following command
on the device shell:
diff --git a/docs/guides/nrfconnect_factory_data_configuration.md b/docs/platforms/nrf/nrfconnect_factory_data_configuration.md
similarity index 99%
rename from docs/guides/nrfconnect_factory_data_configuration.md
rename to docs/platforms/nrf/nrfconnect_factory_data_configuration.md
index 886acc9b30..0c3f6c1d47 100644
--- a/docs/guides/nrfconnect_factory_data_configuration.md
+++ b/docs/platforms/nrf/nrfconnect_factory_data_configuration.md
@@ -813,8 +813,8 @@ Alternatively, you can add the relevant Kconfig option lines to the example's
You can edit all configuration options using the interactive Kconfig interface.
See the
-[Configuring nRF Connect examples](../guides/nrfconnect_examples_configuration.md)
-page for information about how to configure Kconfig options.
+[Configuring nRF Connect examples](./nrfconnect_examples_configuration.md) page
+for information about how to configure Kconfig options.
In the configuration window, expand the items
`Modules -> connectedhomeip (/home/arbl/matter/connectedhomeip/config/nrfconnect/chip-module) -> Connected Home over IP protocol stack`.
diff --git a/docs/guides/nrfconnect_platform_overview.md b/docs/platforms/nrf/nrfconnect_platform_overview.md
similarity index 100%
rename from docs/guides/nrfconnect_platform_overview.md
rename to docs/platforms/nrf/nrfconnect_platform_overview.md
diff --git a/docs/guides/nxp/README.md b/docs/platforms/nxp/index.md
similarity index 100%
rename from docs/guides/nxp/README.md
rename to docs/platforms/nxp/index.md
diff --git a/docs/guides/nxp/nxp_imx8m_linux_examples.md b/docs/platforms/nxp/nxp_imx8m_linux_examples.md
similarity index 100%
rename from docs/guides/nxp/nxp_imx8m_linux_examples.md
rename to docs/platforms/nxp/nxp_imx8m_linux_examples.md
diff --git a/docs/guides/nxp/nxp_k32w0_ota_guide.md b/docs/platforms/nxp/nxp_k32w0_ota_guide.md
similarity index 100%
rename from docs/guides/nxp/nxp_k32w0_ota_guide.md
rename to docs/platforms/nxp/nxp_k32w0_ota_guide.md
diff --git a/docs/guides/nxp/nxp_k32w_android_commissioning.md b/docs/platforms/nxp/nxp_k32w_android_commissioning.md
similarity index 100%
rename from docs/guides/nxp/nxp_k32w_android_commissioning.md
rename to docs/platforms/nxp/nxp_k32w_android_commissioning.md
diff --git a/docs/guides/nxp/nxp_manufacturing_flow.md b/docs/platforms/nxp/nxp_manufacturing_flow.md
similarity index 100%
rename from docs/guides/nxp/nxp_manufacturing_flow.md
rename to docs/platforms/nxp/nxp_manufacturing_flow.md
diff --git a/docs/guides/nxp/nxp_mcxw71_ota_guide.md b/docs/platforms/nxp/nxp_mcxw71_ota_guide.md
similarity index 100%
rename from docs/guides/nxp/nxp_mcxw71_ota_guide.md
rename to docs/platforms/nxp/nxp_mcxw71_ota_guide.md
diff --git a/docs/guides/nxp/nxp_otbr_guide.md b/docs/platforms/nxp/nxp_otbr_guide.md
similarity index 100%
rename from docs/guides/nxp/nxp_otbr_guide.md
rename to docs/platforms/nxp/nxp_otbr_guide.md
diff --git a/docs/guides/nxp/nxp_rw61x_ota_software_update.md b/docs/platforms/nxp/nxp_rw61x_ota_software_update.md
similarity index 100%
rename from docs/guides/nxp/nxp_rw61x_ota_software_update.md
rename to docs/platforms/nxp/nxp_rw61x_ota_software_update.md
diff --git a/docs/guides/nxp/nxp_zephyr_ota_software_update.md b/docs/platforms/nxp/nxp_zephyr_ota_software_update.md
similarity index 100%
rename from docs/guides/nxp/nxp_zephyr_ota_software_update.md
rename to docs/platforms/nxp/nxp_zephyr_ota_software_update.md
diff --git a/docs/platforms/openiotsdk/index.md b/docs/platforms/openiotsdk/index.md
new file mode 100644
index 0000000000..8bd73c46e1
--- /dev/null
+++ b/docs/platforms/openiotsdk/index.md
@@ -0,0 +1,15 @@
+# OpenIoTSDK
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[Commissioning](./openiotsdk_commissioning.md)
+[Examples software update](./openiotsdk_examples_software_update.md)
+[Examples](./openiotsdk_examples.md)
+[Platform overview](./openiotsdk_platform_overview.md)
+[Unit tests](./openiotsdk_unit_tests.md)
diff --git a/docs/guides/openiotsdk_commissioning.md b/docs/platforms/openiotsdk/openiotsdk_commissioning.md
similarity index 90%
rename from docs/guides/openiotsdk_commissioning.md
rename to docs/platforms/openiotsdk/openiotsdk_commissioning.md
index 520cff033d..969b304228 100644
--- a/docs/guides/openiotsdk_commissioning.md
+++ b/docs/platforms/openiotsdk/openiotsdk_commissioning.md
@@ -9,11 +9,11 @@ connected to the IP network and do not require credentials provisioning.
## Building Matter controller
-The [Matter controller](../../src/controller/README.md) is a client application
-that allows commission and control of the Matter node.
+The [Matter controller](../../../src/controller/README.md) is a client
+application that allows commission and control of the Matter node.
-The [POSIX CLI chip-tool](../../examples/chip-tool/README.md) is the recommended
-Matter controller to use with Open IoT SDK devices.
+The [POSIX CLI chip-tool](../../../examples/chip-tool/README.md) is the
+recommended Matter controller to use with Open IoT SDK devices.
To build `chip-tool` execute command:
diff --git a/docs/guides/openiotsdk_examples.md b/docs/platforms/openiotsdk/openiotsdk_examples.md
similarity index 98%
rename from docs/guides/openiotsdk_examples.md
rename to docs/platforms/openiotsdk/openiotsdk_examples.md
index b80ce6304f..c91863a1b7 100644
--- a/docs/guides/openiotsdk_examples.md
+++ b/docs/platforms/openiotsdk/openiotsdk_examples.md
@@ -22,7 +22,7 @@ You can use these examples as a reference for creating your own applications.
The VSCode devcontainer has all the dependencies pre-installed. It is the
recommended way to build, run and develop with the Open IoT SDK port of the
Matter Project. Please read this
-[VSCode development guide](../VSCODE_DEVELOPMENT.md) for more information.
+[VSCode development guide](../../VSCODE_DEVELOPMENT.md) for more information.
Before building the examples, check out the Matter repository and sync Open IoT
SDK submodules using the following command:
@@ -347,11 +347,11 @@ provides the `-K,--kvsfile` option to use the persistence options listed above.
Open IoT SDK port supports two crypto backend implementations:
-- [Mbed TLS](../guides/openiotsdk_platform_overview.md#mbed-tls) - it's the
- default option
+- [Mbed TLS](./openiotsdk_platform_overview.md#mbed-tls) - it's the default
+ option
- [PSA crypto service](https://tf-m-user-guide.trustedfirmware.org/integration_guide/services/tfm_crypto_integration_guide.html)
from the
- [TrustedFirmware-M (TF-M)](../guides/openiotsdk_platform_overview.md#trusted-firmware-m)
+ [TrustedFirmware-M (TF-M)](./openiotsdk_platform_overview.md#trusted-firmware-m)
component
The CMake variable `CONFIG_CHIP_CRYPTO` controls how cryptographic operations
diff --git a/docs/guides/openiotsdk_examples_software_update.md b/docs/platforms/openiotsdk/openiotsdk_examples_software_update.md
similarity index 95%
rename from docs/guides/openiotsdk_examples_software_update.md
rename to docs/platforms/openiotsdk/openiotsdk_examples_software_update.md
index 73129b84e5..686d95b8b7 100644
--- a/docs/guides/openiotsdk_examples_software_update.md
+++ b/docs/platforms/openiotsdk/openiotsdk_examples_software_update.md
@@ -19,12 +19,12 @@ The last required element is a Matter controller. This application controls both
nodes and manages the entire software update process.
In the procedure described below, the `OTA Provider` will be a
-[Linux application](../../examples/ota-provider-app/linux/README.md) and the
+[Linux application](../../../examples/ota-provider-app/linux/README.md) and the
Open IoT SDK example with
[DFU support](./openiotsdk_examples.md#device-firmware-update) will work as the
-OTA Requestor. The [chip-tool](../../examples/chip-tool/README.md) application
-used as the Matter controller. Each application should be launched in a separate
-terminal.
+OTA Requestor. The [chip-tool](../../../examples/chip-tool/README.md)
+application used as the Matter controller. Each application should be launched
+in a separate terminal.
List of `OIS` examples that currently support the `DFU` over Matter:
@@ -41,7 +41,7 @@ List of `OIS` examples that currently support the `DFU` over Matter:
```
More details about the `OTA provider` application can be found
- [here](../../examples/ota-provider-app/linux/README.md).
+ [here](../../../examples/ota-provider-app/linux/README.md).
3. Build `chip-tool`:
@@ -50,7 +50,7 @@ List of `OIS` examples that currently support the `DFU` over Matter:
```
More details about the `chip-tool` application can be found
- [here](../../examples/chip-tool/README.md).
+ [here](../../../examples/chip-tool/README.md).
4. Build `OIS` example application
diff --git a/docs/guides/openiotsdk_platform_overview.md b/docs/platforms/openiotsdk/openiotsdk_platform_overview.md
similarity index 100%
rename from docs/guides/openiotsdk_platform_overview.md
rename to docs/platforms/openiotsdk/openiotsdk_platform_overview.md
diff --git a/docs/guides/openiotsdk_unit_tests.md b/docs/platforms/openiotsdk/openiotsdk_unit_tests.md
similarity index 100%
rename from docs/guides/openiotsdk_unit_tests.md
rename to docs/platforms/openiotsdk/openiotsdk_unit_tests.md
diff --git a/docs/platforms/openthread/index.md b/docs/platforms/openthread/index.md
new file mode 100644
index 0000000000..a4926817e2
--- /dev/null
+++ b/docs/platforms/openthread/index.md
@@ -0,0 +1,12 @@
+# OpenThread
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[Border Router](./openthread_border_router_pi.md)
+[NRF dongle](./openthread_rcp_nrf_dongle.md)
diff --git a/docs/guides/openthread_border_router_pi.md b/docs/platforms/openthread/openthread_border_router_pi.md
similarity index 100%
rename from docs/guides/openthread_border_router_pi.md
rename to docs/platforms/openthread/openthread_border_router_pi.md
diff --git a/docs/guides/openthread_rcp_nrf_dongle.md b/docs/platforms/openthread/openthread_rcp_nrf_dongle.md
similarity index 100%
rename from docs/guides/openthread_rcp_nrf_dongle.md
rename to docs/platforms/openthread/openthread_rcp_nrf_dongle.md
diff --git a/docs/guides/images/silabs_logo.png b/docs/platforms/silabs/images/silabs_logo.png
similarity index 100%
rename from docs/guides/images/silabs_logo.png
rename to docs/platforms/silabs/images/silabs_logo.png
diff --git a/docs/platforms/silabs/index.md b/docs/platforms/silabs/index.md
new file mode 100644
index 0000000000..3e743df0cb
--- /dev/null
+++ b/docs/platforms/silabs/index.md
@@ -0,0 +1,14 @@
+# Silabs
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[CLI guide](./silabs_cli_guide.md)
+[Common app behavior](./silabs_common_app_behavior.md)
+[EFR32 software update](./silabs_efr32_software_update.md)
+[Getting Started](./silabs_getting_started.md)
diff --git a/docs/guides/silabs_cli_guide.md b/docs/platforms/silabs/silabs_cli_guide.md
similarity index 100%
rename from docs/guides/silabs_cli_guide.md
rename to docs/platforms/silabs/silabs_cli_guide.md
diff --git a/docs/guides/silabs_common_app_behavior.md b/docs/platforms/silabs/silabs_common_app_behavior.md
similarity index 100%
rename from docs/guides/silabs_common_app_behavior.md
rename to docs/platforms/silabs/silabs_common_app_behavior.md
diff --git a/docs/guides/silabs_efr32_software_update.md b/docs/platforms/silabs/silabs_efr32_software_update.md
similarity index 98%
rename from docs/guides/silabs_efr32_software_update.md
rename to docs/platforms/silabs/silabs_efr32_software_update.md
index 9f94753aa7..6bdce3d40d 100644
--- a/docs/guides/silabs_efr32_software_update.md
+++ b/docs/platforms/silabs/silabs_efr32_software_update.md
@@ -118,7 +118,7 @@ to 2).
Starting the ota-provider-app with the --otaImageList command line option allows
the user to supply a JSON file specifying the Software Version, Vendor and
Product ID that identify the image served by the Provider, see
-[ota-provider-app](../../examples/ota-provider-app/linux/README.md)
+[ota-provider-app](../../../examples/ota-provider-app/linux/README.md)
Example provider configuration file:
diff --git a/docs/guides/silabs_getting_started.md b/docs/platforms/silabs/silabs_getting_started.md
similarity index 100%
rename from docs/guides/silabs_getting_started.md
rename to docs/platforms/silabs/silabs_getting_started.md
diff --git a/docs/platforms/stm32/index.md b/docs/platforms/stm32/index.md
new file mode 100644
index 0000000000..7b0d56ce3e
--- /dev/null
+++ b/docs/platforms/stm32/index.md
@@ -0,0 +1,11 @@
+# ESP32
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+```
+
+[Getting Started Guide](./stm32_getting_started_guide.md)
diff --git a/docs/guides/stm32_getting_started_guide.md b/docs/platforms/stm32/stm32_getting_started_guide.md
similarity index 98%
rename from docs/guides/stm32_getting_started_guide.md
rename to docs/platforms/stm32/stm32_getting_started_guide.md
index 55f856cbc0..954dde35c0 100644
--- a/docs/guides/stm32_getting_started_guide.md
+++ b/docs/platforms/stm32/stm32_getting_started_guide.md
@@ -28,7 +28,7 @@ subfolder.
## Building the Example Application
-- [Set Up Matter Environment](./BUILDING.md)
+- [Set Up Matter Environment](../../guides/BUILDING.md)
- Set up STLINK tools
diff --git a/docs/guides/images/matter_ti_overview_simplified.png b/docs/platforms/ti/images/matter_ti_overview_simplified.png
similarity index 100%
rename from docs/guides/images/matter_ti_overview_simplified.png
rename to docs/platforms/ti/images/matter_ti_overview_simplified.png
diff --git a/docs/guides/images/matter_ti_overview_wifi.png b/docs/platforms/ti/images/matter_ti_overview_wifi.png
similarity index 100%
rename from docs/guides/images/matter_ti_overview_wifi.png
rename to docs/platforms/ti/images/matter_ti_overview_wifi.png
diff --git a/docs/platforms/ti/index.md b/docs/platforms/ti/index.md
new file mode 100644
index 0000000000..aa49ab94d1
--- /dev/null
+++ b/docs/platforms/ti/index.md
@@ -0,0 +1,17 @@
+# TI
+
+```{toctree}
+:glob:
+:maxdepth: 1
+:hidden:
+
+*
+matter-migration-guide/*
+matter-syscfg/*
+matter-users-guide/*
+```
+
+- [Overview](./ti_matter_overview.md)
+- [Matter migration guide](./matter-migration-guide/)
+- [Syscfg](./matter-syscfg/)
+- [User guide](./matter-users-guide/)
diff --git a/docs/guides/ti/matter-migration-guide/matter_cc2674_migration.md b/docs/platforms/ti/matter-migration-guide/matter_cc2674_migration.md
similarity index 100%
rename from docs/guides/ti/matter-migration-guide/matter_cc2674_migration.md
rename to docs/platforms/ti/matter-migration-guide/matter_cc2674_migration.md
diff --git a/docs/guides/ti/matter-syscfg/getting-started.md b/docs/platforms/ti/matter-syscfg/getting-started.md
similarity index 100%
rename from docs/guides/ti/matter-syscfg/getting-started.md
rename to docs/platforms/ti/matter-syscfg/getting-started.md
diff --git a/docs/guides/ti/matter-syscfg/images/board_view.png b/docs/platforms/ti/matter-syscfg/images/board_view.png
similarity index 100%
rename from docs/guides/ti/matter-syscfg/images/board_view.png
rename to docs/platforms/ti/matter-syscfg/images/board_view.png
diff --git a/docs/guides/ti/matter-syscfg/images/generated_files_ble.png b/docs/platforms/ti/matter-syscfg/images/generated_files_ble.png
similarity index 100%
rename from docs/guides/ti/matter-syscfg/images/generated_files_ble.png
rename to docs/platforms/ti/matter-syscfg/images/generated_files_ble.png
diff --git a/docs/guides/ti/matter-syscfg/images/hardware_view.png b/docs/platforms/ti/matter-syscfg/images/hardware_view.png
similarity index 100%
rename from docs/guides/ti/matter-syscfg/images/hardware_view.png
rename to docs/platforms/ti/matter-syscfg/images/hardware_view.png
diff --git a/docs/guides/ti/matter-syscfg/images/reserve-gpio.png b/docs/platforms/ti/matter-syscfg/images/reserve-gpio.png
similarity index 100%
rename from docs/guides/ti/matter-syscfg/images/reserve-gpio.png
rename to docs/platforms/ti/matter-syscfg/images/reserve-gpio.png
diff --git a/docs/guides/ti/matter-syscfg/images/reserve-peripheral-panel.png b/docs/platforms/ti/matter-syscfg/images/reserve-peripheral-panel.png
similarity index 100%
rename from docs/guides/ti/matter-syscfg/images/reserve-peripheral-panel.png
rename to docs/platforms/ti/matter-syscfg/images/reserve-peripheral-panel.png
diff --git a/docs/guides/ti/matter-syscfg/images/show_generated_files_tab.png b/docs/platforms/ti/matter-syscfg/images/show_generated_files_tab.png
similarity index 100%
rename from docs/guides/ti/matter-syscfg/images/show_generated_files_tab.png
rename to docs/platforms/ti/matter-syscfg/images/show_generated_files_tab.png
diff --git a/docs/guides/ti/matter-syscfg/sysconfig-board.md b/docs/platforms/ti/matter-syscfg/sysconfig-board.md
similarity index 100%
rename from docs/guides/ti/matter-syscfg/sysconfig-board.md
rename to docs/platforms/ti/matter-syscfg/sysconfig-board.md
diff --git a/docs/guides/ti/matter-users-guide/enabling_icd_on_ti_devices.md b/docs/platforms/ti/matter-users-guide/enabling_icd_on_ti_devices.md
similarity index 100%
rename from docs/guides/ti/matter-users-guide/enabling_icd_on_ti_devices.md
rename to docs/platforms/ti/matter-users-guide/enabling_icd_on_ti_devices.md
diff --git a/docs/guides/ti/matter-users-guide/images/cc13x4_memmap.png b/docs/platforms/ti/matter-users-guide/images/cc13x4_memmap.png
similarity index 100%
rename from docs/guides/ti/matter-users-guide/images/cc13x4_memmap.png
rename to docs/platforms/ti/matter-users-guide/images/cc13x4_memmap.png
diff --git a/docs/guides/ti/matter-users-guide/images/factory_data_overview.png b/docs/platforms/ti/matter-users-guide/images/factory_data_overview.png
similarity index 100%
rename from docs/guides/ti/matter-users-guide/images/factory_data_overview.png
rename to docs/platforms/ti/matter-users-guide/images/factory_data_overview.png
diff --git a/docs/guides/ti/matter-users-guide/ti_factory_data_user_guide.md b/docs/platforms/ti/matter-users-guide/ti_factory_data_user_guide.md
similarity index 100%
rename from docs/guides/ti/matter-users-guide/ti_factory_data_user_guide.md
rename to docs/platforms/ti/matter-users-guide/ti_factory_data_user_guide.md
diff --git a/docs/guides/ti/matter-users-guide/ti_openthread_library_usage.md b/docs/platforms/ti/matter-users-guide/ti_openthread_library_usage.md
similarity index 100%
rename from docs/guides/ti/matter-users-guide/ti_openthread_library_usage.md
rename to docs/platforms/ti/matter-users-guide/ti_openthread_library_usage.md
diff --git a/docs/guides/ti/ti_matter_overview.md b/docs/platforms/ti/ti_matter_overview.md
similarity index 99%
rename from docs/guides/ti/ti_matter_overview.md
rename to docs/platforms/ti/ti_matter_overview.md
index 44943fa46b..176ea26d95 100644
--- a/docs/guides/ti/ti_matter_overview.md
+++ b/docs/platforms/ti/ti_matter_overview.md
@@ -103,7 +103,7 @@ by the platform implementation files.
Below are several resources available for Matter development:
- [Matter Protocol Overview](https://handbook.buildwithmatter.com/howitworks/roles/)
-- [Matter Build Guide](../BUILDING.md)
+- [Matter Build Guide](../../guides/BUILDING.md)
- [Matter over Thread Getting Started](https://dev.ti.com/tirex/explore/node?node=A__AciOYyNq9gli.nsvJzBtQg__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST)
- [TI Matter over Wi-Fi Getting Started](https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1122413/faq-cc3235sf-matter----getting-started-guide)
- [TI Matter Application Development](https://dev.ti.com/tirex/explore/node?node=A__AXNOPYikmtBCHJ-L6eRivA__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST)
diff --git a/docs/testing/python.md b/docs/testing/python.md
index a186e9bf20..4541871dcb 100644
--- a/docs/testing/python.md
+++ b/docs/testing/python.md
@@ -25,7 +25,7 @@ Python tests located in src/python_testing
section should include various parameters and their respective values,
which will guide the test runner on how to execute the tests.
- All test classes inherit from `MatterBaseTest` in
- [matter_testing_support.py](https://github.com/project-chip/connectedhomeip/blob/master/src/python_testing/matter_testing_support.py)
+ [matter_testing.py](https://github.com/project-chip/connectedhomeip/blob/master/src/python_testing/matter_testing_infrastructure/chip/testing/matter_testing.py)
- Support for commissioning using the python controller
- Default controller (`self.default_controller`) of type `ChipDeviceCtrl`
- `MatterBaseTest` inherits from the Mobly BaseTestClass
@@ -38,7 +38,7 @@ Python tests located in src/python_testing
decorated with the @async_test_body decorator
- Use `ChipDeviceCtrl` to interact with the DUT
- Controller API is in `ChipDeviceCtrl.py` (see API doc in file)
- - Some support methods in `matter_testing_support.py`
+ - Some support methods in `matter_testing.py`
- Use Mobly assertions for failing tests
- `self.step()` along with a `steps_*` method to mark test plan steps for cert
tests
@@ -61,7 +61,7 @@ Python tests located in src/python_testing
# --passcode 20202021
# --trace-to json:${TRACE_TEST_JSON}.json
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
-# factoryreset: true
+# factory-reset: true
# quiet: true
# === END CI TEST ARGUMENTS ===
@@ -379,7 +379,7 @@ pai = await dev_ctrl.SendCommand(nodeid, 0, Clusters.OperationalCredentials.Comm
## Mobly helpers
The test system is based on Mobly, and the
-[matter_testing_support.py](https://github.com/project-chip/connectedhomeip/blob/master/src/python_testing/matter_testing_support.py)
+[matter_testing.py](https://github.com/project-chip/connectedhomeip/blob/master/src/python_testing/matter_testing_infrastructure/chip/testing/matter_testing.py)
class provides some helpers for Mobly integration.
- `default_matter_test_main`
@@ -561,11 +561,11 @@ these steps to set this up:
## Other support utilities
-- `basic_composition_support`
+- `basic_composition`
- wildcard read, whole device analysis
- `CommissioningFlowBlocks`
- various commissioning support for core tests
-- `spec_parsing_support`
+- `spec_parsing`
- parsing data model XML into python readable format
# Running tests locally
@@ -594,7 +594,7 @@ Next build the python wheels and create / activate a venv (called `pyenv` here,
but any name may be used)
```
-./scripts/build_python.sh -i pyenv
+./scripts/build_python.sh -i out/python_env
source pyenv/bin/activate
```
@@ -627,7 +627,9 @@ for the CI). These arguments can be passed as sets of key/value pairs using the
`./scripts/tests/run_python_test.py` is a convenient script that starts an
example DUT on the host and includes factory reset support
-`./scripts/tests/run_python_test.py --factoryreset --app --app-args "whatever" --script --script-args "whatever"`
+```shell
+./scripts/tests/run_python_test.py --factory-reset --app --app-args "whatever" --script --script-args "whatever"
+```
# Running tests in CI
@@ -678,7 +680,7 @@ for that run, e.g.:
# app: ${TYPE_OF_APP}
# app-args:
# script-args:
-# factoryreset:
+# factory-reset:
# quiet:
# === END CI TEST ARGUMENTS ===
```
@@ -692,7 +694,7 @@ for that run, e.g.:
- Example: `${TYPE_OF_APP}`
-- `factoryreset`: Determines whether a factory reset should be performed
+- `factory-reset`: Determines whether a factory reset should be performed
before the test.
- Example: `true`
diff --git a/docs/testing/yaml.md b/docs/testing/yaml.md
index 9f65b1fed4..e3736d6272 100644
--- a/docs/testing/yaml.md
+++ b/docs/testing/yaml.md
@@ -334,7 +334,7 @@ Next build the python wheels and create a venv (called `py` here, but any name
may be used)
```
-./scripts/build_python.sh -i py
+./scripts/build_python.sh -i out/python_env
source py/bin/activate
```
diff --git a/docs/zap_clusters.md b/docs/zap_clusters.md
index 1250a60b71..b37e8b2b8b 100644
--- a/docs/zap_clusters.md
+++ b/docs/zap_clusters.md
@@ -129,7 +129,10 @@ Generally regenerate using one of:
| 1294 | 0x50E | AccountLogin |
| 1295 | 0x50F | ContentControl |
| 1296 | 0x510 | ContentAppObserver |
+| 1360 | 0x550 | ZoneManagement |
+| 1361 | 0x551 | CameraAvStreamManagement |
| 1363 | 0x553 | WebRTCTransportProvider |
+| 1364 | 0x554 | WebRTCTransportRequestor |
| 1366 | 0x556 | Chime |
| 1872 | 0x750 | EcosystemInformation |
| 1873 | 0x751 | CommissionerControl |
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 dbcd306f44..95cd8bc2d0 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
@@ -739,6 +739,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/air-purifier-app/linux/README.md b/examples/air-purifier-app/linux/README.md
index 2d771bdf5b..377d53a096 100644
--- a/examples/air-purifier-app/linux/README.md
+++ b/examples/air-purifier-app/linux/README.md
@@ -11,7 +11,7 @@ Temperature Sensor and Endpoint 5 is a Thermostat.
To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini**
**EVK**, see the associated
-[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for
+[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for
details.
diff --git a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter
index dd9a87d59d..b9da1aef24 100644
--- a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter
+++ b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter
@@ -739,6 +739,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/air-quality-sensor-app/linux/README.md b/examples/air-quality-sensor-app/linux/README.md
index ef90a4bd23..158cd0d2de 100644
--- a/examples/air-quality-sensor-app/linux/README.md
+++ b/examples/air-quality-sensor-app/linux/README.md
@@ -7,7 +7,7 @@ for Raspberry Pi Desktop 20.10 (aarch64)**
To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini**
**EVK**, see the associated
-[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for
+[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for
details.
diff --git a/examples/air-quality-sensor-app/silabs/README.md b/examples/air-quality-sensor-app/silabs/README.md
index d0e89d363d..7279e23457 100644
--- a/examples/air-quality-sensor-app/silabs/README.md
+++ b/examples/air-quality-sensor-app/silabs/README.md
@@ -330,7 +330,7 @@ tracking code inside the `trackAlloc` and `trackFree` function
For the description of Software Update process with EFR32 example applications
see
-[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md)
+[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md)
## Building options
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 2d5c20aee4..45e58fffca 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
@@ -1642,6 +1642,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/all-clusters-app/asr/README.md b/examples/all-clusters-app/asr/README.md
index bde062feab..6e31c18ac2 100755
--- a/examples/all-clusters-app/asr/README.md
+++ b/examples/all-clusters-app/asr/README.md
@@ -15,7 +15,7 @@ control on ASR platform.
## Building and Commissioning
Please refer
-[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application)
+[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application)
guides to get started
```
diff --git a/examples/all-clusters-app/esp32/README.md b/examples/all-clusters-app/esp32/README.md
index 0a3145dbc2..8e6ef5a61d 100644
--- a/examples/all-clusters-app/esp32/README.md
+++ b/examples/all-clusters-app/esp32/README.md
@@ -4,16 +4,16 @@ A prototype application that demonstrates device commissioning and cluster
control.
Please
-[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md)
+[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md)
and refer
-[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md)
+[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md)
guides to get started.
---
- [Cluster control](#cluster-control)
-- [Matter OTA guide](../../../docs/guides/esp32/ota.md)
-- [RPC console and Device Tracing](../../../docs/guides/esp32/rpc_console.md)
+- [Matter OTA guide](../../../docs/platforms/esp32/ota.md)
+- [RPC console and Device Tracing](../../../docs/platforms/esp32/rpc_console.md)
- [Multiple Network Interfaces](#multiple-network-interfaces)
---
diff --git a/examples/all-clusters-app/infineon/psoc6/README.md b/examples/all-clusters-app/infineon/psoc6/README.md
index 138f132f7a..b4faa2e9ea 100644
--- a/examples/all-clusters-app/infineon/psoc6/README.md
+++ b/examples/all-clusters-app/infineon/psoc6/README.md
@@ -126,4 +126,4 @@ commands. These power cycle the BlueTooth hardware and disable BR/EDR mode.
For the description of Software Update process with infineon PSoC6 example
applications see
-[Infineon PSoC6 OTA Software Update](../../../../docs/guides/infineon_psoc6_software_update.md)
+[Infineon PSoC6 OTA Software Update](../../../../docs/platforms/infineon/infineon_psoc6_software_update.md)
diff --git a/examples/all-clusters-app/mbed/README.md b/examples/all-clusters-app/mbed/README.md
index 0952e18914..f5d0a78b29 100644
--- a/examples/all-clusters-app/mbed/README.md
+++ b/examples/all-clusters-app/mbed/README.md
@@ -225,7 +225,8 @@ the terminal.
#### CHIP Tools
-Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to
+Read the
+[MbedCommissioning](../../../docs/platforms/mbedos/mbedos_commissioning.md) to
see how to use different CHIP tools to commission and control the application
within a WiFi network.
@@ -239,7 +240,7 @@ within a WiFi network.
- More details and guidelines about porting new hardware into the Matter
project with Mbed OS can be found in
- [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md)
+ [MbedNewTarget](../../../docs/platforms/mbedos/mbedos_add_new_target.md)
- Some useful information about HW platform specific settings can be found in
`all-clusters-app/mbed/mbed_app.json`. Information about this file syntax
and its meaning in mbed-os project can be found here:
diff --git a/examples/all-clusters-app/nrfconnect/README.md b/examples/all-clusters-app/nrfconnect/README.md
index 3a58e448d7..4c51e52a1f 100644
--- a/examples/all-clusters-app/nrfconnect/README.md
+++ b/examples/all-clusters-app/nrfconnect/README.md
@@ -43,7 +43,7 @@ This example is running on the nRF Connect platform, which is based on Nordic
Semiconductor's
[nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html)
and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's
-[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md)
+[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md)
to read more about the platform structure and dependencies.
By default, the Matter accessory device has IPv6 networking disabled. You must
@@ -183,7 +183,7 @@ following states are possible:
**SEGGER J-Link USB port** can be used to get logs from the device or
communicate with it using the
-[command line interface](../../../docs/guides/nrfconnect_examples_cli.md).
+[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md).
@@ -379,7 +379,7 @@ depending on the selected board:
those platforms support the DFU.
For more information, see the
-[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md)
+[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md)
page.
@@ -414,19 +414,20 @@ to read more about flashing on the nRF52840 Dongle.
## Testing the example
-Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to
-learn how to use command-line interface of the application.
+Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md)
+to learn how to use command-line interface of the application.
### Testing using Linux CHIPTool
-Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see
-how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to
+Read the
+[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md)
+to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to
commission and control the application within a Matter-enabled Thread network.
### Testing using Android CHIPTool
Read the
-[Android commissioning guide](../../../docs/guides/nrfconnect_android_commissioning.md)
+[Android commissioning guide](../../../docs/platforms/nrf/nrfconnect_android_commissioning.md)
to see how to use [CHIPTool](../../../examples/android/CHIPTool/README.md) for
Android smartphones to commission and control the application within a
Matter-enabled Thread network.
diff --git a/examples/all-clusters-app/nxp/linux-imx/imx8m/README.md b/examples/all-clusters-app/nxp/linux-imx/imx8m/README.md
index e20ff1065d..01941f58e7 100644
--- a/examples/all-clusters-app/nxp/linux-imx/imx8m/README.md
+++ b/examples/all-clusters-app/nxp/linux-imx/imx8m/README.md
@@ -1,4 +1,4 @@
To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini**
**EVK**, see the associated
-[README document](../../../../../docs/guides/nxp/nxp_imx8m_linux_examples.md)
+[README document](../../../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md)
for details.
diff --git a/examples/all-clusters-app/nxp/rt/rw61x/README.md b/examples/all-clusters-app/nxp/rt/rw61x/README.md
index 61d3f00869..df760e864e 100644
--- a/examples/all-clusters-app/nxp/rt/rw61x/README.md
+++ b/examples/all-clusters-app/nxp/rt/rw61x/README.md
@@ -149,7 +149,7 @@ out/debug/chip-rw61x-all-cluster-example.
Optional GN options that can be added when building an application:
- To enable the
- [secondary network commissioning interface](../../../../../docs/guides/nxp/nxp_otbr_guide.md#using-the-secondary-network-commissioning-interface),
+ [secondary network commissioning interface](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-secondary-network-commissioning-interface),
the arguments `chip_enable_secondary_nwk_if=true` and
`chip_device_config_thread_network_endpoint_id=2` must be added to the _gn
gen_ command. Note that this is only supported when building the Matter over
@@ -167,16 +167,16 @@ Optional GN options that can be added when building an application:
- To build with the option to have Matter certificates/keys pre-loaded in a
specific flash area the argument `chip_with_factory_data=1` must be added to
the _gn gen_ command. (for more information see
- [Guide for writing manufacturing data on NXP devices](../../../../../docs/guides/nxp/nxp_manufacturing_flow.md).
+ [Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md).
- To build the application with the OTA Requestor enabled, the arguments
`chip_enable_ota_requestor=true no_mcuboot=false` must be added to the _gn
gen_ command. (More information about the OTA Requestor feature in
- [OTA Requestor README](../../../../../docs/guides/nxp/nxp_rw61x_ota_software_update.md)
+ [OTA Requestor README](../../../../../docs/platforms/nxp/nxp_rw61x_ota_software_update.md)
## Manufacturing data
See
-[Guide for writing manufacturing data on NXP devices](../../../../../docs/guides/nxp/nxp_manufacturing_flow.md)
+[Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md)
Other comments:
@@ -252,7 +252,7 @@ Right click on the Project -> Debug -> As->SEGGER JLink probes -> OK -> Select e
CHIP Tool is a Matter controller which can be used to commission a Matter device
into the network. For more information regarding how to use the CHIP Tool
controller, please refer to the
-[CHIP Tool guide](../../../../../docs/guides/chip_tool_guide.md).
+[CHIP Tool guide](../../../../../docs/development_controllers/chip-tool/chip_tool_guide.md).
To know how to commission a device over BLE, follow the instructions from
[chip-tool's README.md 'Commission a device over
@@ -281,7 +281,7 @@ The "ble-thread" pairing method can be used in order to commission the device.
In order to create or join a Thread network on the Matter Border Router, the TBR
management cluster or the `otcli` commands from the matter CLI can be used. For
more information about using the TBR management cluster follow instructions from
-['Using the TBR management cluster'](../../../../../docs/guides/nxp/nxp_otbr_guide.md#using-the-thread-border-router-management-cluster).
+['Using the TBR management cluster'](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-thread-border-router-management-cluster).
For more information about using the matter shell, follow instructions from
['Testing the all-clusters application with Matter CLI'](#testing-the-all-clusters-application-with-matter-cli-enabled).
@@ -407,7 +407,7 @@ Done
Over-The-Air software updates are supported with the RW61x all-clusters example.
The process to follow in order to perform a software update is described in the
dedicated guide
-['Matter Over-The-Air Software Update with NXP RW61x example applications'](../../../../../docs/guides/nxp/nxp_rw61x_ota_software_update.md).
+['Matter Over-The-Air Software Update with NXP RW61x example applications'](../../../../../docs/platforms/nxp/nxp_rw61x_ota_software_update.md).
@@ -417,4 +417,4 @@ To enable Thread Border Router support see the [build](README.md#building)
section.
The complete Border Router guide is located
-[here](../../../../../docs/guides/nxp/nxp_otbr_guide.md).
+[here](../../../../../docs/platforms/nxp/nxp_otbr_guide.md).
diff --git a/examples/all-clusters-app/nxp/zephyr/README.md b/examples/all-clusters-app/nxp/zephyr/README.md
index 54a06c62c6..d9038b02dd 100644
--- a/examples/all-clusters-app/nxp/zephyr/README.md
+++ b/examples/all-clusters-app/nxp/zephyr/README.md
@@ -201,14 +201,14 @@ the partition address: please refer to `factory_partition` defined in
#### Manually
See
-[Guide for writing manufacturing data on NXP devices](../../../../docs/guides/nxp/nxp_manufacturing_flow.md)
+[Guide for writing manufacturing data on NXP devices](../../../../docs/platforms/nxp/nxp_manufacturing_flow.md)
## OTA Software Update
See
-[Guide for OTA Software Update on NXP devices using Zephyr SDK](../../../../docs/guides/nxp/nxp_zephyr_ota_software_update.md)
+[Guide for OTA Software Update on NXP devices using Zephyr SDK](../../../../docs/platforms/nxp/nxp_zephyr_ota_software_update.md)
diff --git a/examples/all-clusters-app/openiotsdk/README.md b/examples/all-clusters-app/openiotsdk/README.md
index 269411f9f5..661c331f37 100644
--- a/examples/all-clusters-app/openiotsdk/README.md
+++ b/examples/all-clusters-app/openiotsdk/README.md
@@ -11,7 +11,7 @@ You can use this example as a reference for creating your own application.
For information on how to build, run, test and debug this example and further
information about the platform it is run on see
-[Open IoT SDK examples](../../../docs/guides/openiotsdk_examples.md).
+[Open IoT SDK examples](../../../docs/platforms/openiotsdk/openiotsdk_examples.md).
The example name to use in the scripts is `all-clusters-app`.
@@ -31,7 +31,7 @@ follow traces in the terminal.
### Commissioning
Read the
-[Open IoT SDK commissioning guide](../../../docs/guides/openiotsdk_commissioning.md)
+[Open IoT SDK commissioning guide](../../../docs/platforms/openiotsdk/openiotsdk_commissioning.md)
to see how to use the Matter controller to commission and control the
application.
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 3fa32d226a..630f3a6d2e 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
@@ -1557,6 +1557,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/all-clusters-minimal-app/asr/README.md b/examples/all-clusters-minimal-app/asr/README.md
index 5160ef5d4d..2a411c728a 100755
--- a/examples/all-clusters-minimal-app/asr/README.md
+++ b/examples/all-clusters-minimal-app/asr/README.md
@@ -14,7 +14,7 @@ control on ASR platform.
## Building and Commissioning
Please refer
-[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application)
+[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application)
guides to get started
```
diff --git a/examples/all-clusters-minimal-app/esp32/README.md b/examples/all-clusters-minimal-app/esp32/README.md
index 6cb3f9093d..4b5ca4ea72 100644
--- a/examples/all-clusters-minimal-app/esp32/README.md
+++ b/examples/all-clusters-minimal-app/esp32/README.md
@@ -4,16 +4,16 @@ A prototype application that demonstrates device commissioning and cluster
control.
Please
-[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md)
+[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md)
and refer
-[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md)
+[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md)
guides to get started.
---
- [Cluster control](#cluster-control)
-- [Matter OTA guide](../../../docs/guides/esp32/ota.md)
-- [RPC console and Device Tracing](../../../docs/guides/esp32/rpc_console.md)
+- [Matter OTA guide](../../../docs/platforms/esp32/ota.md)
+- [RPC console and Device Tracing](../../../docs/platforms/esp32/rpc_console.md)
---
diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/README.md b/examples/all-clusters-minimal-app/infineon/psoc6/README.md
index 80b8e1ceb6..7dc9fccf00 100644
--- a/examples/all-clusters-minimal-app/infineon/psoc6/README.md
+++ b/examples/all-clusters-minimal-app/infineon/psoc6/README.md
@@ -126,4 +126,4 @@ commands. These power cycle the BlueTooth hardware and disable BR/EDR mode.
For the description of Software Update process with infineon PSoC6 example
applications see
-[Infineon PSoC6 OTA Software Update](../../../../docs/guides/infineon_psoc6_software_update.md)
+[Infineon PSoC6 OTA Software Update](../../../../docs/platforms/infineon/infineon_psoc6_software_update.md)
diff --git a/examples/all-clusters-minimal-app/mbed/README.md b/examples/all-clusters-minimal-app/mbed/README.md
index d4096cbde2..86226548a9 100644
--- a/examples/all-clusters-minimal-app/mbed/README.md
+++ b/examples/all-clusters-minimal-app/mbed/README.md
@@ -225,7 +225,8 @@ traces in the terminal.
### CHIP Tools
-Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to
+Read the
+[MbedCommissioning](../../../docs/platforms/mbedos/mbedos_commissioning.md) to
see how to use different CHIP tools to commission and control the application
within a WiFi network.
@@ -239,7 +240,7 @@ within a WiFi network.
- More details and guidelines about porting new hardware into the Matter
project with Mbed OS can be found in
- [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md)
+ [MbedNewTarget](../../../docs/platforms/mbedos/mbedos_add_new_target.md)
- Some useful information about HW platform specific settings can be found in
`all-clusters-minimal-app/mbed/mbed_app.json`.
Information about this file syntax and its meaning in mbed-os project can be
diff --git a/examples/all-clusters-minimal-app/nrfconnect/README.md b/examples/all-clusters-minimal-app/nrfconnect/README.md
index 932db10a2f..b9d44a889f 100644
--- a/examples/all-clusters-minimal-app/nrfconnect/README.md
+++ b/examples/all-clusters-minimal-app/nrfconnect/README.md
@@ -41,7 +41,7 @@ This example is running on the nRF Connect platform, which is based on Nordic
Semiconductor's
[nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html)
and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's
-[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md)
+[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md)
to read more about the platform structure and dependencies.
By default, the Matter accessory device has IPv6 networking disabled. You must
@@ -144,7 +144,7 @@ for the predefined period of time (15 minutes by default).
**SEGGER J-Link USB port** can be used to get logs from the device or
communicate with it using the
-[command line interface](../../../docs/guides/nrfconnect_examples_cli.md).
+[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md).
@@ -371,7 +371,7 @@ depending on the selected board:
those platforms support the DFU.
For more information, see the
-[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md)
+[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md)
page.
@@ -406,19 +406,20 @@ to read more about flashing on the nRF52840 Dongle.
## Testing the example
-Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to
-learn how to use command-line interface of the application.
+Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md)
+to learn how to use command-line interface of the application.
### Testing using Linux CHIPTool
-Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see
-how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to
+Read the
+[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md)
+to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to
commission and control the application within a Matter-enabled Thread network.
### Testing using Android CHIPTool
Read the
-[Android commissioning guide](../../../docs/guides/nrfconnect_android_commissioning.md)
+[Android commissioning guide](../../../docs/platforms/nrf/nrfconnect_android_commissioning.md)
to see how to use [CHIPTool](../../../examples/android/CHIPTool/README.md) for
Android smartphones to commission and control the application within a
Matter-enabled Thread network.
diff --git a/examples/all-clusters-minimal-app/nxp/linux-imx/imx8m/README.md b/examples/all-clusters-minimal-app/nxp/linux-imx/imx8m/README.md
index e20ff1065d..01941f58e7 100644
--- a/examples/all-clusters-minimal-app/nxp/linux-imx/imx8m/README.md
+++ b/examples/all-clusters-minimal-app/nxp/linux-imx/imx8m/README.md
@@ -1,4 +1,4 @@
To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini**
**EVK**, see the associated
-[README document](../../../../../docs/guides/nxp/nxp_imx8m_linux_examples.md)
+[README document](../../../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md)
for details.
diff --git a/examples/all-clusters-minimal-app/tizen/BUILD.gn b/examples/all-clusters-minimal-app/tizen/BUILD.gn
deleted file mode 100644
index 99f857e863..0000000000
--- a/examples/all-clusters-minimal-app/tizen/BUILD.gn
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (c) 2020 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("//build_overrides/chip.gni")
-import("//build_overrides/tizen.gni")
-
-import("${chip_root}/build/chip/tools.gni")
-import("${chip_root}/src/app/common_flags.gni")
-
-import("${tizen_sdk_build_root}/tizen_sdk.gni")
-assert(chip_build_tools)
-
-source_set("chip-all-clusters-common") {
- sources = [
- "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp",
- "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp",
- "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp",
- "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp",
- ]
-
- deps = [
- "${chip_root}/examples/all-clusters-minimal-app/all-clusters-common",
- "${chip_root}/examples/platform/tizen:app-main",
- "${chip_root}/src/lib/shell:shell_core",
- ]
-
- include_dirs =
- [ "${chip_root}/examples/all-clusters-app/all-clusters-common/include" ]
-}
-
-executable("chip-all-clusters-minimal-app") {
- sources = [
- "include/CHIPProjectAppConfig.h",
- "src/main.cpp",
- ]
-
- deps = [
- ":chip-all-clusters-common",
- "${chip_root}/examples/all-clusters-minimal-app/all-clusters-common",
- "${chip_root}/examples/platform/tizen:app-main",
- "${chip_root}/src/lib",
- ]
-
- include_dirs = [
- "${chip_root}/examples/all-clusters-app/all-clusters-common/include",
- "include",
- ]
-
- output_dir = root_out_dir
-}
-
-tizen_sdk_package("chip-all-clusters-minimal-app:tpk") {
- deps = [
- ":chip-all-clusters-minimal-app",
- "${chip_root}/examples/platform/tizen:author-certificate-CHIP",
- ]
- manifest = "tizen-manifest.xml"
- sign_security_profile = "CHIP"
-}
-
-group("tizen") {
- deps = [ ":chip-all-clusters-minimal-app" ]
-}
-
-group("tizen:tpk") {
- deps = [ ":chip-all-clusters-minimal-app:tpk" ]
-}
-
-group("default") {
- deps = [ ":tizen" ]
-}
diff --git a/examples/all-clusters-minimal-app/tizen/src/main.cpp b/examples/all-clusters-minimal-app/tizen/src/main.cpp
deleted file mode 100644
index 2d37747fe8..0000000000
--- a/examples/all-clusters-minimal-app/tizen/src/main.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- *
- * Copyright (c) 2020 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
-#include
-#include
-
-#include
-#include
-
-using namespace chip;
-using namespace chip::app;
-using namespace chip::DeviceLayer;
-
-// Network commissioning
-namespace {
-constexpr EndpointId kNetworkCommissioningEndpointMain = 0;
-constexpr EndpointId kNetworkCommissioningEndpointSecondary = 0xFFFE;
-
-NetworkCommissioning::TizenEthernetDriver sEthernetDriver;
-Clusters::ModeSelect::StaticSupportedModesManager sStaticSupportedModesManager;
-Clusters::NetworkCommissioning::Instance sEthernetNetworkCommissioningInstance(kNetworkCommissioningEndpointMain, &sEthernetDriver);
-} // namespace
-
-void ApplicationInit()
-{
- // Enable secondary endpoint only when we need it.
- emberAfEndpointEnableDisable(kNetworkCommissioningEndpointSecondary, false);
-
- sEthernetNetworkCommissioningInstance.Init();
- Clusters::ModeSelect::setSupportedModesManager(&sStaticSupportedModesManager);
-}
-
-void ApplicationShutdown(){};
-
-int main(int argc, char * argv[])
-{
- TizenServiceAppMain app;
- VerifyOrDie(app.Init(argc, argv) == 0);
-
- VerifyOrDie(InitBindingHandlers() == CHIP_NO_ERROR);
-
- return app.RunMainLoop();
-}
diff --git a/examples/all-clusters-minimal-app/tizen/tizen-manifest.xml b/examples/all-clusters-minimal-app/tizen/tizen-manifest.xml
deleted file mode 100644
index cbd365aec7..0000000000
--- a/examples/all-clusters-minimal-app/tizen/tizen-manifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
- http://tizen.org/privilege/bluetooth
- http://tizen.org/privilege/internet
- http://tizen.org/privilege/network.get
- http://tizen.org/privilege/network.set
- http://tizen.org/privilege/network.profile
-
- true
- true
- true
- true
- true
-
diff --git a/examples/android/CHIPTool/README.md b/examples/android/CHIPTool/README.md
index cbd0caa598..415dc467d8 100644
--- a/examples/android/CHIPTool/README.md
+++ b/examples/android/CHIPTool/README.md
@@ -15,4 +15,5 @@ CHIPTool offers the following features:
> pairing is implemented.
For information about how to build the application, see the
-[Building Android CHIPTool](../../../docs/guides/android_building.md) guide.
+[Building Android CHIPTool](../../../docs/platforms/android/android_building.md)
+guide.
diff --git a/examples/bridge-app/asr/README.md b/examples/bridge-app/asr/README.md
index 1986037085..1d29b4f5e3 100755
--- a/examples/bridge-app/asr/README.md
+++ b/examples/bridge-app/asr/README.md
@@ -26,7 +26,7 @@ cluster have been added as endpoints
## Building and Commissioning
Please refer
-[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application)
+[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application)
guides to get started
```
diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter
index 89941b6f60..6241e8c635 100644
--- a/examples/bridge-app/bridge-common/bridge-app.matter
+++ b/examples/bridge-app/bridge-common/bridge-app.matter
@@ -1192,6 +1192,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2677,7 +2678,7 @@ endpoint 2 {
}
server cluster LevelControl {
- persist attribute currentLevel default = 0x00;
+ persist attribute currentLevel default = 0xFE;
ram attribute remainingTime default = 0x0000;
ram attribute minLevel default = 0x01;
ram attribute maxLevel default = 0xFE;
diff --git a/examples/bridge-app/bridge-common/bridge-app.zap b/examples/bridge-app/bridge-common/bridge-app.zap
index 5b820fd57c..bf78875444 100644
--- a/examples/bridge-app/bridge-common/bridge-app.zap
+++ b/examples/bridge-app/bridge-common/bridge-app.zap
@@ -5079,7 +5079,7 @@
"storageOption": "NVM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x00",
+ "defaultValue": "0xFE",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
diff --git a/examples/bridge-app/esp32/README.md b/examples/bridge-app/esp32/README.md
index ac22c7f8b3..1d34ac6da4 100644
--- a/examples/bridge-app/esp32/README.md
+++ b/examples/bridge-app/esp32/README.md
@@ -1,9 +1,9 @@
# Matter ESP32 Bridge App Example
Please
-[setup ESP-IDF and Matter Environment](../../../docs/guides/esp32/setup_idf_chip.md)
+[setup ESP-IDF and Matter Environment](../../../docs/platforms/esp32/setup_idf_chip.md)
and refer
-[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md)
+[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md)
guides to get started.
---
diff --git a/examples/chef/common/chef-concentration-measurement.cpp b/examples/chef/common/chef-concentration-measurement.cpp
index d168b797b9..a23e66561d 100644
--- a/examples/chef/common/chef-concentration-measurement.cpp
+++ b/examples/chef/common/chef-concentration-measurement.cpp
@@ -76,17 +76,8 @@ Protocols::InteractionModel::Status chefConcentrationMeasurementWriteCallback(
if (attributeId == measuredValueId)
{
- float newValue = 0;
- uint16_t tlvLen = *(uint16_t *) buffer;
- chip::TLV::TLVReader reader;
- reader.Init(buffer + sizeof(uint16_t), tlvLen);
- reader.Next();
- reader.Get(newValue);
-
- ChipLogDetail(DeviceLayer, "TLV Type %d, Length %d \n", static_cast(reader.GetType()), tlvLen);
- // 2 bytes buf length + 5 bytes TLV for float
- ChipLogDetail(DeviceLayer, "buffer: %02x%02x%02x%02x%02x%02x%02x \n", buffer[0], buffer[1], buffer[2], buffer[3], buffer[4],
- buffer[5], buffer[6]);
+ float newValue;
+ std::memcpy(&newValue, buffer, sizeof(float)); // Copy buffer content to float
CHIP_ERROR err = clusterInstance->SetMeasuredValue(MakeNullable(newValue));
if (CHIP_NO_ERROR == err)
diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter
index b2a08e643c..9a91b17a2a 100644
--- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter
+++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter
@@ -1034,6 +1034,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2270,7 +2271,7 @@ endpoint 1 {
}
server cluster LevelControl {
- ram attribute currentLevel default = 0x01;
+ ram attribute currentLevel default = 0xFE;
ram attribute remainingTime default = 0x0000;
ram attribute minLevel default = 0x01;
ram attribute maxLevel default = 0xFE;
diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap
index 5f2e2bd0eb..c72734d55c 100644
--- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap
+++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap
@@ -4206,7 +4206,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x01",
+ "defaultValue": "0xFE",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/chef/devices/rootnode_airpurifier_73a6fe2651.matter b/examples/chef/devices/rootnode_airpurifier_73a6fe2651.matter
index c6d30a8265..6dc1faa51f 100644
--- a/examples/chef/devices/rootnode_airpurifier_73a6fe2651.matter
+++ b/examples/chef/devices/rootnode_airpurifier_73a6fe2651.matter
@@ -811,6 +811,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
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 0069c9881f..8271fefe26 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
@@ -662,6 +662,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter
index e810c5332a..cfdae69816 100644
--- a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter
+++ b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter
@@ -998,6 +998,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter
index 20a5e81798..0bf91385a5 100644
--- a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter
+++ b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter
@@ -936,6 +936,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
index 871fc21daa..5f0c6496f8 100644
--- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
+++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
@@ -1013,6 +1013,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2299,7 +2300,7 @@ endpoint 1 {
}
server cluster LevelControl {
- persist attribute currentLevel default = 0x00;
+ persist attribute currentLevel default = 0xFE;
ram attribute remainingTime default = 0x0000;
ram attribute minLevel default = 0x1;
ram attribute maxLevel default = 0xFE;
diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap
index 24f3246bce..fc2f45d22b 100644
--- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap
+++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap
@@ -2885,7 +2885,7 @@
"storageOption": "NVM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x00",
+ "defaultValue": "0xFE",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/chef/devices/rootnode_contactsensor_27f76aeaf5.matter b/examples/chef/devices/rootnode_contactsensor_27f76aeaf5.matter
index 772daa2010..77375d8443 100644
--- a/examples/chef/devices/rootnode_contactsensor_27f76aeaf5.matter
+++ b/examples/chef/devices/rootnode_contactsensor_27f76aeaf5.matter
@@ -998,6 +998,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter
index a25cc32ae1..5265088575 100644
--- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter
+++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter
@@ -1096,6 +1096,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter
index 62df14dd5c..57166f3ba4 100644
--- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter
+++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter
@@ -1034,6 +1034,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2081,7 +2082,7 @@ endpoint 1 {
}
server cluster LevelControl {
- persist attribute currentLevel default = 0x01;
+ persist attribute currentLevel default = 0xFE;
ram attribute remainingTime default = 0x0000;
ram attribute minLevel default = 0x01;
ram attribute maxLevel default = 0xFE;
diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap
index 78ea7d8764..2e215aa472 100644
--- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap
+++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap
@@ -2943,7 +2943,7 @@
"storageOption": "NVM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x01",
+ "defaultValue": "0xFE",
"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 788fdf8d74..44865e71f3 100644
--- a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter
+++ b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter
@@ -1034,6 +1034,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2242,7 +2243,7 @@ endpoint 1 {
}
server cluster LevelControl {
- persist attribute currentLevel default = 0x01;
+ persist attribute currentLevel default = 0xFE;
ram attribute remainingTime default = 0x0000;
ram attribute minLevel default = 0x01;
ram attribute maxLevel default = 0xFE;
diff --git a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.zap b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.zap
index 4fa09375fd..3ba91647fa 100644
--- a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.zap
+++ b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.zap
@@ -2991,7 +2991,7 @@
"storageOption": "NVM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x01",
+ "defaultValue": "0xFE",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter
index fdbb4868a3..8f49c108e2 100644
--- a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter
+++ b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter
@@ -700,6 +700,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
index 4655c61d4d..c461e7324c 100644
--- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
+++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
@@ -998,6 +998,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
index 95ba0c27de..71363c84a7 100644
--- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
+++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
@@ -1034,6 +1034,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2342,7 +2343,7 @@ endpoint 1 {
}
server cluster LevelControl {
- persist attribute currentLevel default = 0x01;
+ persist attribute currentLevel default = 0xFE;
ram attribute remainingTime default = 0x0000;
ram attribute minLevel default = 0x01;
ram attribute maxLevel default = 0xFE;
diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap
index 19288d4d83..c5008df0c2 100644
--- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap
+++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap
@@ -2911,7 +2911,7 @@
"storageOption": "NVM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x01",
+ "defaultValue": "0xFE",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter
index de277d25e7..d772e29c3c 100644
--- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter
+++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter
@@ -816,6 +816,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter
index ce817d5365..466dbe2c41 100644
--- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter
+++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter
@@ -837,6 +837,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_genericswitch_2dfff6e516.matter b/examples/chef/devices/rootnode_genericswitch_2dfff6e516.matter
index 88f1d2389d..ba63c3ee07 100644
--- a/examples/chef/devices/rootnode_genericswitch_2dfff6e516.matter
+++ b/examples/chef/devices/rootnode_genericswitch_2dfff6e516.matter
@@ -844,6 +844,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter b/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter
index 18764919ac..60699fd679 100644
--- a/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter
+++ b/examples/chef/devices/rootnode_genericswitch_9866e35d0b.matter
@@ -844,6 +844,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
index 32e64fc401..36a655d47d 100644
--- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
+++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
@@ -1034,6 +1034,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter
index 11390f7cc5..e633b0f2be 100644
--- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter
+++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter
@@ -837,6 +837,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_laundrydryer_01796fe396.matter b/examples/chef/devices/rootnode_laundrydryer_01796fe396.matter
index 4c5010e278..b917fa102e 100644
--- a/examples/chef/devices/rootnode_laundrydryer_01796fe396.matter
+++ b/examples/chef/devices/rootnode_laundrydryer_01796fe396.matter
@@ -700,6 +700,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter
index 4ab9ad0064..e595c866c2 100644
--- a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter
+++ b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter
@@ -561,6 +561,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter
index fdeb9a209c..32528515cf 100644
--- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter
+++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter
@@ -837,6 +837,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter
index bb47238f4c..04cf5fb646 100644
--- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter
+++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter
@@ -837,6 +837,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter
index f755ba75a5..c4cc8357d9 100644
--- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter
+++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter
@@ -1034,6 +1034,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2014,7 +2015,7 @@ endpoint 13 {
}
server cluster LevelControl {
- persist attribute currentLevel default = 0x01;
+ persist attribute currentLevel default = 0xFE;
ram attribute remainingTime default = 0x0000;
ram attribute minLevel default = 0x01;
ram attribute maxLevel default = 0xFE;
diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap
index d77eca38e6..36b41b59f1 100644
--- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap
+++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap
@@ -2911,7 +2911,7 @@
"storageOption": "NVM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x01",
+ "defaultValue": "0xFE",
"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 3fa6833ee3..f7db9d69ae 100644
--- a/examples/chef/devices/rootnode_onofflight_samplemei.matter
+++ b/examples/chef/devices/rootnode_onofflight_samplemei.matter
@@ -1034,6 +1034,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2046,7 +2047,7 @@ endpoint 1 {
}
server cluster LevelControl {
- persist attribute currentLevel default = 0x01;
+ persist attribute currentLevel default = 0xFE;
ram attribute remainingTime default = 0x0000;
ram attribute minLevel default = 0x01;
ram attribute maxLevel default = 0xFE;
diff --git a/examples/chef/devices/rootnode_onofflight_samplemei.zap b/examples/chef/devices/rootnode_onofflight_samplemei.zap
index bf7bb8efdf..23543f053d 100644
--- a/examples/chef/devices/rootnode_onofflight_samplemei.zap
+++ b/examples/chef/devices/rootnode_onofflight_samplemei.zap
@@ -2911,7 +2911,7 @@
"storageOption": "NVM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x01",
+ "defaultValue": "0xFE",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter
index 8eeb66e2e5..81fb81958f 100644
--- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter
+++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter
@@ -909,6 +909,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter
index 7251ede5ed..94414ae316 100644
--- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter
+++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter
@@ -909,6 +909,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter
index 993bc43a5a..43e8de7b5f 100644
--- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter
+++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter
@@ -837,6 +837,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_pump_5f904818cc.matter b/examples/chef/devices/rootnode_pump_5f904818cc.matter
index aee0aa7b2e..8ea352ca7c 100644
--- a/examples/chef/devices/rootnode_pump_5f904818cc.matter
+++ b/examples/chef/devices/rootnode_pump_5f904818cc.matter
@@ -683,6 +683,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_pump_a811bb33a0.matter b/examples/chef/devices/rootnode_pump_a811bb33a0.matter
index 84d57e7d21..5b2371526d 100644
--- a/examples/chef/devices/rootnode_pump_a811bb33a0.matter
+++ b/examples/chef/devices/rootnode_pump_a811bb33a0.matter
@@ -683,6 +683,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter
index 00bf68f859..80faecb735 100644
--- a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter
+++ b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter
@@ -561,6 +561,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter b/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter
index 1306114cc1..b4094e13d8 100644
--- a/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter
+++ b/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter
@@ -921,6 +921,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
index 4910c3b699..3ebdc0a231 100644
--- a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
+++ b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
@@ -734,6 +734,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter b/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter
index b685a6740f..1f6e1c17b7 100644
--- a/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter
+++ b/examples/chef/devices/rootnode_smokecoalarm_686fe0dcb8.matter
@@ -921,6 +921,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter
index c2b2056aae..c5a1ccc522 100644
--- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter
+++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter
@@ -957,6 +957,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter
index 64a2449991..6199388887 100644
--- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter
+++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter
@@ -837,6 +837,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
index 8303eef5ee..7993032488 100644
--- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
+++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
@@ -898,6 +898,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter
index a2cf704eaa..bd89a85312 100644
--- a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter
+++ b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter
@@ -921,6 +921,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.zap b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.zap
index 11ebd3c2e3..34e2b90f20 100644
--- a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.zap
+++ b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.zap
@@ -3062,4 +3062,4 @@
"parentEndpointIdentifier": 0
}
]
-}
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_watervalve_6bb39f1f67.matter b/examples/chef/devices/rootnode_watervalve_6bb39f1f67.matter
index 139d5dc6a2..cf3009d291 100644
--- a/examples/chef/devices/rootnode_watervalve_6bb39f1f67.matter
+++ b/examples/chef/devices/rootnode_watervalve_6bb39f1f67.matter
@@ -861,6 +861,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/chef/devices/rootnode_watervalve_6bb39f1f67.zap b/examples/chef/devices/rootnode_watervalve_6bb39f1f67.zap
index 6650dbe1d5..ba64c26fcf 100644
--- a/examples/chef/devices/rootnode_watervalve_6bb39f1f67.zap
+++ b/examples/chef/devices/rootnode_watervalve_6bb39f1f67.zap
@@ -2983,4 +2983,4 @@
"parentEndpointIdentifier": 0
}
]
-}
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter
index 62c95a2df6..0f1d25c571 100644
--- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter
+++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter
@@ -837,6 +837,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
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 7ad3cf5148..421ab3e37c 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
@@ -4522,7 +4522,7 @@
"storageOption": "NVM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x01",
+ "defaultValue": "0xFE",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
@@ -4554,7 +4554,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x00",
+ "defaultValue": "0x01",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/chip-tool/README.md b/examples/chip-tool/README.md
index f702e202ac..b9d5f148df 100644
--- a/examples/chip-tool/README.md
+++ b/examples/chip-tool/README.md
@@ -599,4 +599,4 @@ Usage:
To learn more about the tool, how to build it, use its commands and advanced
features, read the following guide:
-- [Working with the CHIP Tool](https://github.com/project-chip/connectedhomeip/tree/master/docs/guides/chip_tool_guide.md)
+- [Working with the CHIP Tool](https://github.com/project-chip/connectedhomeip/tree/master/docs/development_controllers/chip-tool/chip_tool_guide.md)
diff --git a/examples/chip-tool/commands/common/Commands.h b/examples/chip-tool/commands/common/Commands.h
index e6a392cbee..e514e34321 100644
--- a/examples/chip-tool/commands/common/Commands.h
+++ b/examples/chip-tool/commands/common/Commands.h
@@ -29,7 +29,7 @@
class Commands
{
public:
- using CommandsVector = ::std::vector>;
+ using CommandsVector = std::vector>;
void RegisterCluster(const char * clusterName, commands_list commandsList)
{
diff --git a/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py b/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py
index 68effa7bb3..733672dc79 100644
--- a/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py
+++ b/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py
@@ -155,6 +155,7 @@ class Converter():
def __init__(self, specifications):
self.__specs = specifications
self.__converters = [
+ DarwinAnyFormatConverter(),
StructFieldsNameConverter(),
FloatConverter(),
OctetStringConverter()
@@ -252,6 +253,43 @@ def maybe_convert(self, typename: str, value):
return value
+class DarwinAnyFormatConverter(BaseConverter):
+ """
+ Darwin payloads format for *ById commands is different from the base
+ format used for other commands.
+ """
+
+ def run(self, specs, value, cluster_name: str, typename: str, array: bool):
+ if isinstance(value, list) and len(value) >= 1 and isinstance(value[0], dict) and value[0].get('data') is not None:
+ value = [self.__convert(item_value) for item_value in value]
+ return value
+
+ def __convert(self, value):
+ if not isinstance(value, dict):
+ return value
+
+ data = value.get('data')
+ if not isinstance(data, dict):
+ return value
+
+ value = data.get('value')
+ if not isinstance(value, list):
+ return value
+
+ value_type = data.get('type')
+
+ if value_type == 'Structure':
+ struct = {}
+ for field in value:
+ context_tag = field.get('contextTag')
+ struct[str(context_tag)] = self.__convert(field)
+ value = struct
+ elif value_type == 'Array':
+ value = [self.__convert(item_value) for item_value in value]
+
+ return value
+
+
class FloatConverter(BaseConverter):
"""
Jsoncpp stores floats as double.
@@ -348,7 +386,14 @@ def run(self, specs, value, cluster_name: str, typename: str, array: bool):
del value[key_name]
elif isinstance(value, list) and array:
- value = [self.run(specs, v, cluster_name, typename, False)
+ # Instead of using `False` for the last parameter (array), `isinstance(v, list)` is used.
+ # While the data model specification does not include lists of lists, the format returned
+ # by the Matter.framework for *ById APIs may contain them.
+ # For example, the command:
+ # darwin-framework-tool any read-by-id 29 0 0x12344321 65535
+ # returns value such as:
+ # [[{'DeviceType': 17, 'Revision': 1}, {'DeviceType': 22, 'Revision': 1}], ...]
+ value = [self.run(specs, v, cluster_name, typename, isinstance(v, list))
for v in value]
return value
diff --git a/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/encoder.py b/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/encoder.py
index 252d23c037..6b1bf1a6e0 100644
--- a/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/encoder.py
+++ b/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/encoder.py
@@ -510,7 +510,16 @@ def __get_alias(self, cluster_name: str, command_name: str = None, argument_name
if aliases is None or aliases.get(argument_name) is None:
return None
- return aliases.get(argument_name)
+ value = aliases.get(argument_name)
+
+ if cluster_name == '*' and self.__is_darwin_framework_tool:
+ if argument_name == 'AttributeId':
+ return 'attribute-id'
+ elif argument_name == 'ClusterId':
+ return 'cluster-id'
+ elif argument_name == 'Value':
+ return 'attribute-value'
+ return value
def _supports_endpoint(self, request):
return self._has_support(request, 'has_endpoint')
diff --git a/examples/common/pigweed/protos/attributes_service.proto b/examples/common/pigweed/protos/attributes_service.proto
index 927f10a8aa..ef34448f93 100644
--- a/examples/common/pigweed/protos/attributes_service.proto
+++ b/examples/common/pigweed/protos/attributes_service.proto
@@ -219,6 +219,7 @@ message AttributeData {
int32 data_int8 = 6;
int32 data_int16 = 7;
int32 data_int32 = 8;
+ float data_single = 10;
};
optional bytes tlv_data = 9;
}
diff --git a/examples/common/pigweed/rpc_services/Attributes.h b/examples/common/pigweed/rpc_services/Attributes.h
index e246c5361b..e4ced64a51 100644
--- a/examples/common/pigweed/rpc_services/Attributes.h
+++ b/examples/common/pigweed/rpc_services/Attributes.h
@@ -22,6 +22,7 @@
#include "pigweed/rpc_services/internal/StatusUtils.h"
#include
+#include
#include
#include
#include
@@ -32,6 +33,13 @@
#include
#include
+#if CHIP_CONFIG_USE_DATA_MODEL_INTERFACE
+#include
+#include
+#include
+#include
+#endif
+
namespace chip {
namespace rpc {
@@ -70,6 +78,9 @@ class Attributes : public pw_rpc::nanopb::Attributes::Service
case chip_rpc_AttributeData_data_bytes_tag:
data = &request.data.data.data_bytes;
break;
+ case chip_rpc_AttributeData_data_single_tag:
+ data = &request.data.data.data_single;
+ break;
default:
return pw::Status::InvalidArgument();
}
@@ -125,6 +136,10 @@ class Attributes : public pw_rpc::nanopb::Attributes::Service
PW_TRY(TlvBufferGetData(tlvBuffer, TLV::kTLVType_SignedInteger, response.data.data_int32));
response.which_data = chip_rpc_AttributeData_data_int32_tag;
break;
+ case chip_rpc_AttributeType_ZCL_SINGLE_ATTRIBUTE_TYPE:
+ PW_TRY(TlvBufferGetData(tlvBuffer, TLV::kTLVType_FloatingPointNumber, response.data.data_single));
+ response.which_data = chip_rpc_AttributeData_data_single_tag;
+ break;
case chip_rpc_AttributeType_ZCL_BITMAP8_ATTRIBUTE_TYPE:
case chip_rpc_AttributeType_ZCL_BITMAP16_ATTRIBUTE_TYPE:
case chip_rpc_AttributeType_ZCL_BITMAP32_ATTRIBUTE_TYPE:
@@ -140,7 +155,6 @@ class Attributes : public pw_rpc::nanopb::Attributes::Service
case chip_rpc_AttributeType_ZCL_INT48S_ATTRIBUTE_TYPE:
case chip_rpc_AttributeType_ZCL_INT56S_ATTRIBUTE_TYPE:
case chip_rpc_AttributeType_ZCL_INT64S_ATTRIBUTE_TYPE:
- case chip_rpc_AttributeType_ZCL_SINGLE_ATTRIBUTE_TYPE:
case chip_rpc_AttributeType_ZCL_DOUBLE_ATTRIBUTE_TYPE:
case chip_rpc_AttributeType_ZCL_OCTET_STRING_ATTRIBUTE_TYPE:
case chip_rpc_AttributeType_ZCL_CHAR_STRING_ATTRIBUTE_TYPE:
@@ -202,7 +216,37 @@ class Attributes : public pw_rpc::nanopb::Attributes::Service
writer.Init(tlvBuffer);
PW_TRY(ChipErrorToPwStatus(writer.StartContainer(TLV::AnonymousTag(), TLV::kTLVType_Structure, outer)));
PW_TRY(ChipErrorToPwStatus(attributeReports.Init(&writer, kReportContextTag)));
+
+#if CHIP_CONFIG_USE_DATA_MODEL_INTERFACE
+ // TODO: this assumes a singleton data model provider
+ app::DataModel::Provider * provider = app::InteractionModelEngine::GetInstance()->GetDataModelProvider();
+
+ app::DataModel::ReadAttributeRequest request;
+ request.path = path;
+ request.operationFlags.Set(app::DataModel::OperationFlags::kInternal);
+ request.subjectDescriptor = subjectDescriptor;
+
+ std::optional info = provider->GetClusterInfo(path);
+ if (!info.has_value())
+ {
+ return ::pw::Status::NotFound();
+ }
+
+ app::AttributeValueEncoder encoder(attributeReports, subjectDescriptor, path, info->dataVersion,
+ false /* isFabricFiltered */, nullptr /* attributeEncodingState */);
+ app::DataModel::ActionReturnStatus result = provider->ReadAttribute(request, encoder);
+
+ if (!result.IsSuccess())
+ {
+ app::DataModel::ActionReturnStatus::StringStorage storage;
+ ChipLogError(Support, "Failed to read data: %s", result.c_str(storage));
+ return ::pw::Status::Internal();
+ }
+
+#else
PW_TRY(ChipErrorToPwStatus(app::ReadSingleClusterData(subjectDescriptor, false, path, attributeReports, nullptr)));
+#endif
+
attributeReports.EndOfContainer();
PW_TRY(ChipErrorToPwStatus(writer.EndContainer(outer)));
PW_TRY(ChipErrorToPwStatus(writer.Finalize()));
diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter
index 38c1707110..55820ca537 100644
--- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter
+++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter
@@ -816,6 +816,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/contact-sensor-app/linux/README.md b/examples/contact-sensor-app/linux/README.md
index e71ea89feb..ca5ca7b63a 100644
--- a/examples/contact-sensor-app/linux/README.md
+++ b/examples/contact-sensor-app/linux/README.md
@@ -7,7 +7,7 @@ document is tested on **Ubuntu for Raspberry Pi Server 20.04 LTS (aarch64)** and
To cross-compile this example on an x64 host and run it on **NXP i.MX 8M Mini**
**EVK**, see the associated
-[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for
+[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for
details.
diff --git a/examples/contact-sensor-app/nxp/README.md b/examples/contact-sensor-app/nxp/README.md
index 20474bea76..803f067ce3 100644
--- a/examples/contact-sensor-app/nxp/README.md
+++ b/examples/contact-sensor-app/nxp/README.md
@@ -136,7 +136,7 @@ corresponding to data model target.
Use `chip_with_factory_data=1` in the gn build command to enable factory data.
For a full guide on manufacturing flow, please see
-[Guide for writing manufacturing data on NXP devices](../../../docs/guides/nxp/nxp_manufacturing_flow.md).
+[Guide for writing manufacturing data on NXP devices](../../../docs/platforms/nxp/nxp_manufacturing_flow.md).
### Long Idle Time ICD Support
diff --git a/examples/contact-sensor-app/nxp/k32w0/README.md b/examples/contact-sensor-app/nxp/k32w0/README.md
index 305aa0b176..bc39009afc 100644
--- a/examples/contact-sensor-app/nxp/k32w0/README.md
+++ b/examples/contact-sensor-app/nxp/k32w0/README.md
@@ -351,7 +351,7 @@ Please use the following build args:
## Manufacturing data
See
-[Guide for writing manufacturing data on NXP devices](../../../../docs/guides/nxp/nxp_manufacturing_flow.md).
+[Guide for writing manufacturing data on NXP devices](../../../../docs/platforms/nxp/nxp_manufacturing_flow.md).
There are factory data generated binaries available in
`third_party/nxp/nxp_matter_support/examples/platform/k32w0/scripts/demo_generated_factory_data`
@@ -618,7 +618,7 @@ internal flash space can be found in the
The steps for building the SSBL binary with appropriate configuration and
writing to the board the binary and other OTA related configurations are
described in the
-[K32W0x1 OTA guide](../../../../docs/guides/nxp/nxp_k32w0_ota_guide.md).
+[K32W0x1 OTA guide](../../../../docs/platforms/nxp/nxp_k32w0_ota_guide.md).
Note that the application needs to be built using the
`chip_enable_ota_requestor=true` option. This is enabled in the configuration by
diff --git a/examples/contact-sensor-app/nxp/k32w1/README.md b/examples/contact-sensor-app/nxp/k32w1/README.md
index 5f47979e2d..20feba0c01 100644
--- a/examples/contact-sensor-app/nxp/k32w1/README.md
+++ b/examples/contact-sensor-app/nxp/k32w1/README.md
@@ -165,4 +165,4 @@ Run -> Debug Configurations... -> C/C++ Application
## OTA
Please see
-[k32w1 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md).
+[k32w1 OTA guide](../../../../docs/platforms/nxp/nxp_mcxw71_ota_guide.md).
diff --git a/examples/contact-sensor-app/nxp/mcxw71/README.md b/examples/contact-sensor-app/nxp/mcxw71/README.md
index 50d33e10e1..d5b1927722 100644
--- a/examples/contact-sensor-app/nxp/mcxw71/README.md
+++ b/examples/contact-sensor-app/nxp/mcxw71/README.md
@@ -191,4 +191,4 @@ Run -> Debug Configurations... -> C/C++ Application
## OTA
Please see
-[mcxw71 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md).
+[mcxw71 OTA guide](../../../../docs/platforms/nxp/nxp_mcxw71_ota_guide.md).
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 aeb4a47927..a5e91d91f1 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
@@ -739,6 +739,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
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 f2e73f974c..dfbd44ad6e 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
@@ -4315,4 +4315,4 @@
"parentEndpointIdentifier": null
}
]
-}
+}
\ No newline at end of file
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 bbf9333d9b..36db43dcb6 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
@@ -739,6 +739,7 @@ cluster GeneralCommissioning = 48 {
provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6;
provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7;
provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8;
+ provisional readonly attribute access(read: administer) optional int32u TCUpdateDeadline = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/examples/darwin-framework-tool/BUILD.gn b/examples/darwin-framework-tool/BUILD.gn
index 665dccf484..0d1e142f10 100644
--- a/examples/darwin-framework-tool/BUILD.gn
+++ b/examples/darwin-framework-tool/BUILD.gn
@@ -43,6 +43,9 @@ declare_args() {
# Disable generating compiler database by default
generate_compilation_database = false
+
+ # Enable automatic leak checks before the application exits
+ enable_leak_checking = false
}
sdk = "macosx"
@@ -187,10 +190,16 @@ executable("darwin-framework-tool") {
"commands/common/CHIPCommandBridge.mm",
"commands/common/CHIPCommandStorageDelegate.mm",
"commands/common/CHIPToolKeypair.mm",
+ "commands/common/CertificateIssuer.h",
+ "commands/common/CertificateIssuer.mm",
+ "commands/common/ControllerStorage.h",
+ "commands/common/ControllerStorage.mm",
"commands/common/MTRDevice_Externs.h",
"commands/common/MTRError.mm",
"commands/common/MTRError_Utils.h",
"commands/common/MTRLogging.h",
+ "commands/common/PreferencesStorage.h",
+ "commands/common/PreferencesStorage.mm",
"commands/common/RemoteDataModelLogger.h",
"commands/common/RemoteDataModelLogger.mm",
"commands/configuration/Commands.h",
@@ -206,6 +215,11 @@ executable("darwin-framework-tool") {
"commands/discover/Commands.h",
"commands/discover/DiscoverCommissionablesCommand.h",
"commands/discover/DiscoverCommissionablesCommand.mm",
+ "commands/memory/Commands.h",
+ "commands/memory/DumpMemoryGraphCommand.h",
+ "commands/memory/DumpMemoryGraphCommand.mm",
+ "commands/memory/LeaksTool.h",
+ "commands/memory/LeaksTool.mm",
"commands/pairing/Commands.h",
"commands/pairing/DeviceControllerDelegateBridge.mm",
"commands/pairing/GetCommissionerNodeIdCommand.h",
@@ -219,6 +233,7 @@ executable("darwin-framework-tool") {
"commands/provider/OTASoftwareUpdateInteractive.mm",
"commands/storage/Commands.h",
"commands/storage/StorageManagementCommand.mm",
+ "debug/LeakChecker.mm",
"logging/logging.mm",
"main.mm",
]
@@ -280,6 +295,10 @@ executable("darwin-framework-tool") {
defines += [ "MTR_ENABLE_PROVISIONAL=1" ]
}
+ if (enable_leak_checking) {
+ defines += [ "DFT_ENABLE_LEAK_CHECKING=1" ]
+ }
+
public_configs = [ ":config" ]
output_dir = root_out_dir
diff --git a/examples/darwin-framework-tool/commands/clusters/ClusterCommandBridge.h b/examples/darwin-framework-tool/commands/clusters/ClusterCommandBridge.h
index 4512bf219a..7bf34f11a6 100644
--- a/examples/darwin-framework-tool/commands/clusters/ClusterCommandBridge.h
+++ b/examples/darwin-framework-tool/commands/clusters/ClusterCommandBridge.h
@@ -73,10 +73,13 @@ class ClusterCommand : public ModelCommand {
uint16_t __block responsesNeeded = repeatCount;
dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL);
+ __auto_type * endpoint = @(endpointId);
+ __auto_type * cluster = @(clusterId);
+ __auto_type * command = @(commandId);
while (repeatCount--) {
- [device invokeCommandWithEndpointID:[NSNumber numberWithUnsignedShort:endpointId]
- clusterID:[NSNumber numberWithUnsignedInteger:clusterId]
- commandID:[NSNumber numberWithUnsignedInteger:commandId]
+ [device invokeCommandWithEndpointID:endpoint
+ clusterID:cluster
+ commandID:command
commandFields:commandFields
timedInvokeTimeout:mTimedInteractionTimeoutMs.HasValue()
? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()]
@@ -88,6 +91,9 @@ class ClusterCommand : public ModelCommand {
if (error != nil) {
mError = error;
LogNSError("Error", error);
+ RemoteDataModelLogger::LogCommandErrorAsJSON(endpoint, cluster, command, error);
+ } else {
+ RemoteDataModelLogger::LogCommandAsJSON(endpoint, cluster, command, values);
}
if (responsesNeeded == 0) {
SetCommandExitStatus(mError);
diff --git a/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h b/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h
index c0cbdab840..1a2612b7e3 100644
--- a/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h
+++ b/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h
@@ -57,20 +57,26 @@ class ReadAttribute : public ModelCommand {
if (mFabricFiltered.HasValue()) {
params.filterByFabric = mFabricFiltered.Value();
}
+
+ __auto_type * endpoint = @(endpointId);
+ __auto_type * cluster = @(mClusterId);
+ __auto_type * attribute = @(mAttributeId);
[device
- readAttributesWithEndpointID:[NSNumber numberWithUnsignedShort:endpointId]
- clusterID:[NSNumber numberWithUnsignedInteger:mClusterId]
- attributeID:[NSNumber numberWithUnsignedInteger:mAttributeId]
+ readAttributesWithEndpointID:endpoint
+ clusterID:cluster
+ attributeID:attribute
params:params
queue:callbackQueue
completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
if (error != nil) {
LogNSError("Error reading attribute", error);
+ RemoteDataModelLogger::LogAttributeErrorAsJSON(endpoint, cluster, attribute, error);
}
if (values) {
for (id item in values) {
NSLog(@"Response Item: %@", [item description]);
}
+ RemoteDataModelLogger::LogAttributeAsJSON(endpoint, cluster, attribute, values);
}
SetCommandExitStatus(error);
}];
@@ -137,16 +143,23 @@ class SubscribeAttribute : public ModelCommand {
params.resubscribeAutomatically = mAutoResubscribe.Value();
}
- [device subscribeToAttributesWithEndpointID:[NSNumber numberWithUnsignedShort:endpointId]
- clusterID:[NSNumber numberWithUnsignedInteger:mClusterId]
- attributeID:[NSNumber numberWithUnsignedInteger:mAttributeId]
+ __auto_type * endpoint = @(endpointId);
+ __auto_type * cluster = @(mClusterId);
+ __auto_type * attribute = @(mAttributeId);
+ [device subscribeToAttributesWithEndpointID:endpoint
+ clusterID:cluster
+ attributeID:attribute
params:params
queue:callbackQueue
reportHandler:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+ if (error != nil) {
+ RemoteDataModelLogger::LogAttributeErrorAsJSON(endpoint, cluster, attribute, error);
+ }
if (values) {
for (id item in values) {
NSLog(@"Response Item: %@", [item description]);
}
+ RemoteDataModelLogger::LogAttributeAsJSON(endpoint, cluster, attribute, values);
}
SetCommandExitStatus(error);
}
diff --git a/examples/darwin-framework-tool/commands/clusters/WriteAttributeCommandBridge.h b/examples/darwin-framework-tool/commands/clusters/WriteAttributeCommandBridge.h
index e771316adf..66003042cc 100644
--- a/examples/darwin-framework-tool/commands/clusters/WriteAttributeCommandBridge.h
+++ b/examples/darwin-framework-tool/commands/clusters/WriteAttributeCommandBridge.h
@@ -74,10 +74,13 @@ class WriteAttribute : public ModelCommand {
{
dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL);
+ __auto_type * endpoint = @(endpointId);
+ __auto_type * cluster = @(mClusterId);
+ __auto_type * attribute = @(mAttributeId);
[device
- writeAttributeWithEndpointID:[NSNumber numberWithUnsignedShort:endpointId]
- clusterID:[NSNumber numberWithUnsignedInteger:clusterId]
- attributeID:[NSNumber numberWithUnsignedInteger:attributeId]
+ writeAttributeWithEndpointID:endpoint
+ clusterID:cluster
+ attributeID:attribute
value:value
timedWriteTimeout:mTimedInteractionTimeoutMs.HasValue()
? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()]
@@ -86,11 +89,13 @@ class WriteAttribute : public ModelCommand {
completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
if (error != nil) {
LogNSError("Error writing attribute", error);
+ RemoteDataModelLogger::LogAttributeErrorAsJSON(endpoint, cluster, attribute, error);
}
if (values) {
for (id item in values) {
NSLog(@"Response Item: %@", [item description]);
}
+ RemoteDataModelLogger::LogAttributeAsJSON(endpoint, cluster, attribute, values);
}
SetCommandExitStatus(error);
}];
diff --git a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h
index 9458d304db..f58251bff4 100644
--- a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h
+++ b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h
@@ -41,6 +41,8 @@ class CHIPCommandBridge : public Command {
"Sets the commissioner node ID of the given "
"commissioner-name. Interactive mode will only set a single commissioner on the inital command. "
"The commissioner node ID will be persisted until a different one is specified.");
+ AddArgument("commissioner-shared-storage", 0, 1, &mCommissionerSharedStorage,
+ "Use a shared storage instance instead of individual storage for each commissioner. Default is true.");
AddArgument("paa-trust-store-path", &mPaaTrustStorePath,
"Path to directory holding PAA certificate information. Can be absolute or relative to the current working "
"directory.");
@@ -87,6 +89,7 @@ class CHIPCommandBridge : public Command {
// This method returns the commissioner instance to be used for running the command.
MTRDeviceController * CurrentCommissioner();
+ NSNumber * CurrentCommissionerFabricId();
MTRDeviceController * GetCommissioner(const char * identity);
@@ -130,6 +133,8 @@ class CHIPCommandBridge : public Command {
void StopWaiting();
CHIP_ERROR MaybeSetUpStack();
+ CHIP_ERROR SetUpStackWithSharedStorage(NSArray * productAttestationAuthorityCertificates);
+ CHIP_ERROR SetUpStackWithPerControllerStorage(NSArray * productAttestationAuthorityCertificates);
void MaybeTearDownStack();
CHIP_ERROR GetPAACertsFromFolder(NSArray * __autoreleasing * paaCertsResult);
@@ -140,6 +145,9 @@ class CHIPCommandBridge : public Command {
// The current controller; the one the current command should be using.
MTRDeviceController * mCurrentController;
+ static bool sUseSharedStorage;
+ chip::Optional mCommissionerSharedStorage;
+
std::condition_variable cvWaitingForResponse;
std::mutex cvWaitingForResponseMutex;
chip::Optional mCommissionerName;
@@ -148,4 +156,5 @@ class CHIPCommandBridge : public Command {
static dispatch_queue_t mOTAProviderCallbackQueue;
chip::Optional mPaaTrustStorePath;
chip::Optional mCommissionerVendorId;
+ std::string mCurrentIdentity;
};
diff --git a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm
index 8b9a5d3e9f..724a9a20c3 100644
--- a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm
+++ b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm
@@ -23,7 +23,11 @@
#include
#include
+#include // for chip::kTestControllerNodeId
+#import "CHIPCommandStorageDelegate.h"
+#import "CertificateIssuer.h"
+#import "ControllerStorage.h"
#include "MTRError_Utils.h"
#include