diff --git a/.github/workflows/bloat_check.yaml b/.github/workflows/bloat_check.yaml
index 36908d97d06385..7418a53ef5fc67 100644
--- a/.github/workflows/bloat_check.yaml
+++ b/.github/workflows/bloat_check.yaml
@@ -33,7 +33,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
steps:
- name: Checkout
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 1fdec87ac8a696..ac717ef1e7b245 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -40,7 +40,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
@@ -135,7 +135,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
@@ -283,7 +283,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
options: --sysctl "net.ipv6.conf.all.disable_ipv6=0
@@ -343,7 +343,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
options: --sysctl "net.ipv6.conf.all.disable_ipv6=0
@@ -451,7 +451,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
diff --git a/.github/workflows/chef.yaml b/.github/workflows/chef.yaml
index e1de11ca0becb1..e68021d143fa59 100644
--- a/.github/workflows/chef.yaml
+++ b/.github/workflows/chef.yaml
@@ -33,7 +33,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
options: --user root
steps:
@@ -54,7 +54,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-esp32:24
+ image: ghcr.io/project-chip/chip-build-esp32:26
options: --user root
steps:
@@ -75,7 +75,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-nrf-platform:24
+ image: ghcr.io/project-chip/chip-build-nrf-platform:26
options: --user root
steps:
@@ -96,7 +96,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-telink:24
+ image: ghcr.io/project-chip/chip-build-telink:26
options: --user root
steps:
@@ -106,6 +106,9 @@ jobs:
uses: ./.github/actions/checkout-submodules-and-bootstrap
with:
platform: telink
+ # - name: Update Zephyr to specific revision (for developers purpose)
+ # shell: bash
+ # run: scripts/run_in_build_env.sh "python3 scripts/tools/telink/update_zephyr.py e6a32f41ccec55c2233631406842b71ff270089d"
- name: CI Examples Telink
shell: bash
run: |
diff --git a/.github/workflows/cirque.yaml b/.github/workflows/cirque.yaml
index 5338ed27e4c2fe..a8d18c5dec9d85 100644
--- a/.github/workflows/cirque.yaml
+++ b/.github/workflows/cirque.yaml
@@ -40,7 +40,7 @@ jobs:
# need to run with privilege, which isn't supported by job.XXX.contaner
# https://github.com/actions/container-action/issues/2
# container:
- # image: ghcr.io/project-chip/chip-build-cirque:24
+ # image: ghcr.io/project-chip/chip-build-cirque:26
# volumes:
# - "/tmp:/tmp"
# - "/dev/pts:/dev/pts"
diff --git a/.github/workflows/darwin.yaml b/.github/workflows/darwin.yaml
index 04648f4da135ee..50ab4e0142eed5 100644
--- a/.github/workflows/darwin.yaml
+++ b/.github/workflows/darwin.yaml
@@ -113,8 +113,6 @@ jobs:
TEST_RUNNER_ASAN_OPTIONS=__CURRENT_VALUE__:detect_stack_use_after_return=1 xcodebuild test -target "Matter" -scheme "Matter Framework Tests" -sdk macosx -enableAddressSanitizer YES -enableUndefinedBehaviorSanitizer YES OTHER_CFLAGS='${inherited} -Werror -Wconversion' CHIP_IS_UBSAN=YES CHIP_IS_BLE=NO GCC_PREPROCESSOR_DEFINITIONS='${inherited} MTR_NO_AVAILABILITY=1'> >(tee /tmp/darwin/framework-tests/darwin-tests-asan.log) 2> >(tee /tmp/darwin/framework-tests/darwin-tests-asan-err.log >&2)
# And the same thing, but with MTR_PER_CONTROLLER_STORAGE_ENABLED turned off, so we test that it does not break for now.
TEST_RUNNER_ASAN_OPTIONS=__CURRENT_VALUE__:detect_stack_use_after_return=1 xcodebuild test -target "Matter" -scheme "Matter Framework Tests" -sdk macosx -enableAddressSanitizer YES -enableUndefinedBehaviorSanitizer YES OTHER_CFLAGS='${inherited} -Werror -Wconversion' CHIP_IS_UBSAN=YES CHIP_IS_BLE=NO GCC_PREPROCESSOR_DEFINITIONS='${inherited} MTR_NO_AVAILABILITY=1 MTR_PER_CONTROLLER_STORAGE_ENABLED=0' > >(tee /tmp/darwin/framework-tests/darwin-tests-asan-controller-storage.log) 2> >(tee /tmp/darwin/framework-tests/darwin-tests-asan-controller-storage-err.log >&2)
- # And the same thing, but with MTR_ENABLE_PROVISIONAL also turned on.
- TEST_RUNNER_ASAN_OPTIONS=__CURRENT_VALUE__:detect_stack_use_after_return=1 xcodebuild test -target "Matter" -scheme "Matter Framework Tests" -sdk macosx -enableAddressSanitizer YES -enableUndefinedBehaviorSanitizer YES OTHER_CFLAGS='${inherited} -Werror -Wconversion' CHIP_IS_UBSAN=YES CHIP_IS_BLE=NO GCC_PREPROCESSOR_DEFINITIONS='${inherited} MTR_NO_AVAILABILITY=1 MTR_PER_CONTROLLER_STORAGE_ENABLED=1 MTR_ENABLE_PROVISIONAL=1' > >(tee /tmp/darwin/framework-tests/darwin-tests-asan-provisional.log) 2> >(tee /tmp/darwin/framework-tests/darwin-tests-asan-provisional-err.log >&2)
# And the same thing, but with MTR_NO_AVAILABILITY not turned on. This requires -Wno-unguarded-availability-new to avoid availability errors.
TEST_RUNNER_ASAN_OPTIONS=__CURRENT_VALUE__:detect_stack_use_after_return=1 xcodebuild test -target "Matter" -scheme "Matter Framework Tests" -sdk macosx -enableAddressSanitizer YES -enableUndefinedBehaviorSanitizer YES OTHER_CFLAGS='${inherited} -Werror -Wconversion -Wno-unguarded-availability-new' CHIP_IS_UBSAN=YES CHIP_IS_BLE=NO GCC_PREPROCESSOR_DEFINITIONS='${inherited}' > >(tee /tmp/darwin/framework-tests/darwin-tests-asan-with-availability-annotations.log) 2> >(tee /tmp/darwin/framework-tests/darwin-tests-asan-with-availability-annotations-err.log >&2)
# -enableThreadSanitizer instruments the code in Matter.framework,
diff --git a/.github/workflows/doxygen.yaml b/.github/workflows/doxygen.yaml
index 0480d013741b85..e89d26c1c335d4 100644
--- a/.github/workflows/doxygen.yaml
+++ b/.github/workflows/doxygen.yaml
@@ -81,7 +81,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build-doxygen:24
+ image: ghcr.io/project-chip/chip-build-doxygen:26
if: github.actor != 'restyled-io[bot]'
diff --git a/.github/workflows/examples-ameba.yaml b/.github/workflows/examples-ameba.yaml
index 95ed4e23999c76..ac1e6d01fde353 100644
--- a/.github/workflows/examples-ameba.yaml
+++ b/.github/workflows/examples-ameba.yaml
@@ -36,7 +36,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-ameba:24
+ image: ghcr.io/project-chip/chip-build-ameba:26
options: --user root
steps:
diff --git a/.github/workflows/examples-asr.yaml b/.github/workflows/examples-asr.yaml
index 93c26450b01c85..918a5e0e67bd49 100644
--- a/.github/workflows/examples-asr.yaml
+++ b/.github/workflows/examples-asr.yaml
@@ -34,7 +34,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-asr:24
+ image: ghcr.io/project-chip/chip-build-asr:26
options: --user root
steps:
diff --git a/.github/workflows/examples-bouffalolab.yaml b/.github/workflows/examples-bouffalolab.yaml
index e0aa45bf677c50..0efaf4831a91b0 100644
--- a/.github/workflows/examples-bouffalolab.yaml
+++ b/.github/workflows/examples-bouffalolab.yaml
@@ -35,7 +35,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-bouffalolab:24
+ image: ghcr.io/project-chip/chip-build-bouffalolab:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/examples-cc13x2x7_26x2x7.yaml b/.github/workflows/examples-cc13x2x7_26x2x7.yaml
index ea90b8729766f9..c2ad4bfef8b2a8 100644
--- a/.github/workflows/examples-cc13x2x7_26x2x7.yaml
+++ b/.github/workflows/examples-cc13x2x7_26x2x7.yaml
@@ -36,7 +36,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-ti:24
+ image: ghcr.io/project-chip/chip-build-ti:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/examples-cc32xx.yaml b/.github/workflows/examples-cc32xx.yaml
index f45559e5d173f2..a3a17188ae677d 100644
--- a/.github/workflows/examples-cc32xx.yaml
+++ b/.github/workflows/examples-cc32xx.yaml
@@ -37,7 +37,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-ti:24
+ image: ghcr.io/project-chip/chip-build-ti:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml
index c4d29e501a62c7..83c66dcf6e7bfe 100644
--- a/.github/workflows/examples-efr32.yaml
+++ b/.github/workflows/examples-efr32.yaml
@@ -38,7 +38,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-efr32:24
+ image: ghcr.io/project-chip/chip-build-efr32:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/examples-esp32.yaml b/.github/workflows/examples-esp32.yaml
index 111c28ccfd2d10..48ffb63425f611 100644
--- a/.github/workflows/examples-esp32.yaml
+++ b/.github/workflows/examples-esp32.yaml
@@ -34,7 +34,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-esp32:24
+ image: ghcr.io/project-chip/chip-build-esp32:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
@@ -130,7 +130,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-esp32:24
+ image: ghcr.io/project-chip/chip-build-esp32:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
diff --git a/.github/workflows/examples-infineon.yaml b/.github/workflows/examples-infineon.yaml
index f225a4fba5867f..4ea2a28f61cc6f 100644
--- a/.github/workflows/examples-infineon.yaml
+++ b/.github/workflows/examples-infineon.yaml
@@ -35,7 +35,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-infineon:24
+ image: ghcr.io/project-chip/chip-build-infineon:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/examples-k32w.yaml b/.github/workflows/examples-k32w.yaml
index 58e366b6cfeca5..5d811a986c757a 100644
--- a/.github/workflows/examples-k32w.yaml
+++ b/.github/workflows/examples-k32w.yaml
@@ -37,7 +37,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-k32w:24
+ image: ghcr.io/project-chip/chip-build-k32w:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/examples-linux-arm.yaml b/.github/workflows/examples-linux-arm.yaml
index f0f62060f0930e..c49b8d84d75fdc 100644
--- a/.github/workflows/examples-linux-arm.yaml
+++ b/.github/workflows/examples-linux-arm.yaml
@@ -34,7 +34,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-crosscompile:24
+ image: ghcr.io/project-chip/chip-build-crosscompile:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
diff --git a/.github/workflows/examples-linux-imx.yaml b/.github/workflows/examples-linux-imx.yaml
index d64409d1146a66..f5aaa654af9295 100644
--- a/.github/workflows/examples-linux-imx.yaml
+++ b/.github/workflows/examples-linux-imx.yaml
@@ -34,7 +34,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-imx:24
+ image: ghcr.io/project-chip/chip-build-imx:26
steps:
- name: Checkout
diff --git a/.github/workflows/examples-linux-standalone.yaml b/.github/workflows/examples-linux-standalone.yaml
index 98061009dc4fd9..4845ce0b235567 100644
--- a/.github/workflows/examples-linux-standalone.yaml
+++ b/.github/workflows/examples-linux-standalone.yaml
@@ -34,7 +34,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
diff --git a/.github/workflows/examples-mbed.yaml b/.github/workflows/examples-mbed.yaml
index 9863d8f3f89703..7ecdfdb6f8a41f 100644
--- a/.github/workflows/examples-mbed.yaml
+++ b/.github/workflows/examples-mbed.yaml
@@ -40,7 +40,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-mbed-os:24
+ image: ghcr.io/project-chip/chip-build-mbed-os:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
diff --git a/.github/workflows/examples-mw320.yaml b/.github/workflows/examples-mw320.yaml
index 233a6f4fe9d540..6f87859071cb8b 100644
--- a/.github/workflows/examples-mw320.yaml
+++ b/.github/workflows/examples-mw320.yaml
@@ -37,7 +37,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/examples-nrfconnect.yaml b/.github/workflows/examples-nrfconnect.yaml
index 3c22eaa79a0825..c8495aad304a60 100644
--- a/.github/workflows/examples-nrfconnect.yaml
+++ b/.github/workflows/examples-nrfconnect.yaml
@@ -37,7 +37,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-nrf-platform:24
+ image: ghcr.io/project-chip/chip-build-nrf-platform:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
diff --git a/.github/workflows/examples-openiotsdk.yaml b/.github/workflows/examples-openiotsdk.yaml
index 5dc15c4ca2ec62..f468341b0b84b1 100644
--- a/.github/workflows/examples-openiotsdk.yaml
+++ b/.github/workflows/examples-openiotsdk.yaml
@@ -38,7 +38,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-openiotsdk:24
+ image: ghcr.io/project-chip/chip-build-openiotsdk:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
options: --privileged
diff --git a/.github/workflows/examples-qpg.yaml b/.github/workflows/examples-qpg.yaml
index 0f950134d2ff45..027aaa80c18a87 100644
--- a/.github/workflows/examples-qpg.yaml
+++ b/.github/workflows/examples-qpg.yaml
@@ -37,7 +37,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/examples-stm32.yaml b/.github/workflows/examples-stm32.yaml
index 8f59b06aa50e4e..6da7ccd697fe06 100644
--- a/.github/workflows/examples-stm32.yaml
+++ b/.github/workflows/examples-stm32.yaml
@@ -38,7 +38,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
diff --git a/.github/workflows/examples-telink.yaml b/.github/workflows/examples-telink.yaml
index 994d6b5d78a325..4af591a58c91f0 100644
--- a/.github/workflows/examples-telink.yaml
+++ b/.github/workflows/examples-telink.yaml
@@ -36,7 +36,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-telink:24
+ image: ghcr.io/project-chip/chip-build-telink:26
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
@@ -54,13 +54,16 @@ jobs:
with:
gh-context: ${{ toJson(github) }}
- - name: Build example Telink (B92) Air Quality Sensor App
+ # - name: Update Zephyr to specific revision (for developers purpose)
+ # run: scripts/run_in_build_env.sh "python3 scripts/tools/telink/update_zephyr.py e6a32f41ccec55c2233631406842b71ff270089d"
+
+ - name: Build example Telink (B92 retention) Air Quality Sensor App
run: |
./scripts/run_in_build_env.sh \
- "./scripts/build/build_examples.py --target 'telink-tlsr9528a-air-quality-sensor' build"
+ "./scripts/build/build_examples.py --target 'telink-tlsr9528a_retention-air-quality-sensor' build"
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- telink tlsr9528a air-quality-sensor-app \
- out/telink-tlsr9528a-air-quality-sensor/zephyr/zephyr.elf \
+ telink tlsr9528a_retention air-quality-sensor-app \
+ out/telink-tlsr9528a_retention-air-quality-sensor/zephyr/zephyr.elf \
/tmp/bloat_reports/
- name: clean out build output
@@ -102,13 +105,13 @@ jobs:
- name: clean out build output
run: rm -rf ./out
- - name: Build example Telink (B92) Contact Sensor App
+ - name: Build example Telink (B92 retention) Contact Sensor App
run: |
./scripts/run_in_build_env.sh \
- "./scripts/build/build_examples.py --target 'telink-tlsr9528a-contact-sensor' build"
+ "./scripts/build/build_examples.py --target 'telink-tlsr9528a_retention-contact-sensor' build"
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- telink tlsr9528a contact-sensor-app \
- out/telink-tlsr9528a-contact-sensor/zephyr/zephyr.elf \
+ telink tlsr9528a_retention contact-sensor-app \
+ out/telink-tlsr9528a_retention-contact-sensor/zephyr/zephyr.elf \
/tmp/bloat_reports/
- name: clean out build output
@@ -220,25 +223,25 @@ jobs:
- name: clean out build output
run: rm -rf ./out
- - name: Build example Telink (B92) Smoke CO Alarm App
+ - name: Build example Telink (B92 retention) Smoke CO Alarm App
run: |
./scripts/run_in_build_env.sh \
- "./scripts/build/build_examples.py --target 'telink-tlsr9528a-smoke-co-alarm' build"
+ "./scripts/build/build_examples.py --target 'telink-tlsr9528a_retention-smoke-co-alarm' build"
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- telink tlsr9528a smoke_co_alarm-app \
- out/telink-tlsr9528a-smoke-co-alarm/zephyr/zephyr.elf \
+ telink tlsr9528a_retention smoke_co_alarm-app \
+ out/telink-tlsr9528a_retention-smoke-co-alarm/zephyr/zephyr.elf \
/tmp/bloat_reports/
- name: clean out build output
run: rm -rf ./out
- - name: Build example Telink (B92) Temperature Measurement App
+ - name: Build example Telink (B91 Mars) Temperature Measurement App with OTA
run: |
./scripts/run_in_build_env.sh \
- "./scripts/build/build_examples.py --target 'telink-tlsr9528a-temperature-measurement' build"
+ "./scripts/build/build_examples.py --target 'telink-tlsr9518adk80d-temperature-measurement-mars-ota' build"
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
- telink tlsr9528a temperature-measurement-app \
- out/telink-tlsr9528a-temperature-measurement/zephyr/zephyr.elf \
+ telink tlsr9518adk80d temperature-measurement-app-mars-ota \
+ out/telink-tlsr9518adk80d-temperature-measurement-mars-ota/zephyr/zephyr.elf \
/tmp/bloat_reports/
- name: clean out build output
diff --git a/.github/workflows/examples-tizen.yaml b/.github/workflows/examples-tizen.yaml
index f01153240ffac6..807491dc2e5871 100644
--- a/.github/workflows/examples-tizen.yaml
+++ b/.github/workflows/examples-tizen.yaml
@@ -34,7 +34,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-tizen:24
+ image: ghcr.io/project-chip/chip-build-tizen:26
options: --user root
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
diff --git a/.github/workflows/full-android.yaml b/.github/workflows/full-android.yaml
index 20ba8990ed93f0..2cb3cc1d48e7da 100644
--- a/.github/workflows/full-android.yaml
+++ b/.github/workflows/full-android.yaml
@@ -36,7 +36,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-android:24
+ image: ghcr.io/project-chip/chip-build-android:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
diff --git a/.github/workflows/fuzzing-build.yaml b/.github/workflows/fuzzing-build.yaml
index adbe225b88fe4c..687ff3c9a5e404 100644
--- a/.github/workflows/fuzzing-build.yaml
+++ b/.github/workflows/fuzzing-build.yaml
@@ -33,7 +33,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
diff --git a/.github/workflows/issue-labeler.yaml b/.github/workflows/issue-labeler.yaml
index b1c8e2304469bd..e7819c57f20b84 100644
--- a/.github/workflows/issue-labeler.yaml
+++ b/.github/workflows/issue-labeler.yaml
@@ -11,7 +11,7 @@ jobs:
triage:
runs-on: ubuntu-latest
steps:
- - uses: github/issue-labeler@v3.2 #May not be the latest version
+ - uses: github/issue-labeler@v3.3 #May not be the latest version
with:
configuration-path: .github/issue-labeler.yml
not-before: 2020-01-15T02:54:32Z
diff --git a/.github/workflows/java-tests.yaml b/.github/workflows/java-tests.yaml
index 9cd1dea0447d04..9e800ba2e7ef99 100644
--- a/.github/workflows/java-tests.yaml
+++ b/.github/workflows/java-tests.yaml
@@ -40,7 +40,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build-java:24
+ image: ghcr.io/project-chip/chip-build-java:26
options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
net.ipv4.conf.all.forwarding=0 net.ipv6.conf.all.forwarding=0"
diff --git a/.github/workflows/kotlin-style.yaml b/.github/workflows/kotlin-style.yaml
index 9cd6717f800943..ba8d242d6552ea 100644
--- a/.github/workflows/kotlin-style.yaml
+++ b/.github/workflows/kotlin-style.yaml
@@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@v4
- name: "detekt"
- uses: natiginfo/action-detekt-all@1.23.1
+ uses: natiginfo/action-detekt-all@1.23.3
# Detekt seems not to like circular symlinks, so we set up
# explicit paths below
with:
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 9db99f6461f459..f7f691c7568250 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -29,7 +29,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
steps:
- name: Checkout
@@ -99,6 +99,19 @@ jobs:
run: |
git grep -n "PRI.16" -- './*' ':(exclude).github/workflows/lint.yml' ':(exclude)third_party/lwip/repo/lwip/src/include/lwip/arch.h' && exit 1 || exit 0
+ # git grep exits with 0 if it finds a match, but we want
+ # to fail (exit nonzero) on match. And we want to exclude this file,
+ # to avoid our grep regexp matching itself.
+ - name: Check for use of PRI*64, which are not supported on some libcs.
+ if: always()
+ run: |
+ # TODO: MessageDefHelper should ideally not be excluded here.
+ # TODO: chip_im_initiatore should ideally not be excluded here.
+ # TODO: TLVDebug should ideally not be excluded here.
+ # TODO: protocol_decoder.cpp should ideally not be excluded here.
+ # TODO: PersistentStorageMacros.h should ideally not be excluded here.
+ git grep -n "PRI.64" -- './*' ':(exclude).github/workflows/lint.yml' ':(exclude)examples/chip-tool' ':(exclude)examples/tv-casting-app' ':(exclude)src/app/MessageDef/MessageDefHelper.cpp' ':(exclude)src/app/tests/integration/chip_im_initiator.cpp' ':(exclude)src/lib/core/TLVDebug.cpp' ':(exclude)src/lib/dnssd/tests/TestTxtFields.cpp' ':(exclude)src/lib/format/protocol_decoder.cpp' ':(exclude)src/lib/support/PersistentStorageMacros.h' ':(exclude)src/messaging/tests/echo/echo_requester.cpp' ':(exclude)src/platform/Linux' ':(exclude)src/platform/Ameba' ':(exclude)src/platform/ESP32' ':(exclude)src/platform/webos' ':(exclude)zzz_generated/chip-tool' ':(exclude)src/tools/chip-cert/Cmd_PrintCert.cpp' && exit 1 || exit 0
+
# git grep exits with 0 if it finds a match, but we want
# to fail (exit nonzero) on match. And we want to exclude this file,
# to avoid our grep regexp matching itself.
diff --git a/.github/workflows/minimal-build.yaml b/.github/workflows/minimal-build.yaml
index ff520e9e308fca..58a1a67e180115 100644
--- a/.github/workflows/minimal-build.yaml
+++ b/.github/workflows/minimal-build.yaml
@@ -31,7 +31,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build-minimal:24
+ image: ghcr.io/project-chip/chip-build-minimal:26
steps:
- name: Checkout
diff --git a/.github/workflows/qemu.yaml b/.github/workflows/qemu.yaml
index 6a61aa520f6ce4..a45534cc2f15bb 100644
--- a/.github/workflows/qemu.yaml
+++ b/.github/workflows/qemu.yaml
@@ -38,7 +38,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-esp32-qemu:24
+ image: ghcr.io/project-chip/chip-build-esp32-qemu:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
@@ -76,7 +76,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-tizen-qemu:24
+ image: ghcr.io/project-chip/chip-build-tizen-qemu:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
diff --git a/.github/workflows/release_artifacts.yaml b/.github/workflows/release_artifacts.yaml
index dbe98f9666f6a6..903c8d0acf0051 100644
--- a/.github/workflows/release_artifacts.yaml
+++ b/.github/workflows/release_artifacts.yaml
@@ -32,7 +32,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build-esp32:24
+ image: ghcr.io/project-chip/chip-build-esp32:26
steps:
- name: Checkout
@@ -68,7 +68,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build-efr32:24
+ image: ghcr.io/project-chip/chip-build-efr32:26
steps:
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/smoketest-android.yaml b/.github/workflows/smoketest-android.yaml
index 2ff570884f3a1c..7791b230f5b037 100644
--- a/.github/workflows/smoketest-android.yaml
+++ b/.github/workflows/smoketest-android.yaml
@@ -37,7 +37,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: ghcr.io/project-chip/chip-build-android:24
+ image: ghcr.io/project-chip/chip-build-android:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index d610edef1dc623..74ae921d929a54 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -47,7 +47,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"
@@ -144,6 +144,7 @@ jobs:
src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/operational-state-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/operational-state-rvc-cluster.xml \
+ src/app/zap-templates/zcl/data-model/chip/oven-mode-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/pressure-measurement-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/power-source-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/power-source-configuration-cluster.xml \
@@ -169,6 +170,7 @@ jobs:
src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/time-format-localization-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/time-synchronization-cluster.xml \
+ src/app/zap-templates/zcl/data-model/chip/timer-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/user-label-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/unit-localization-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/wake-on-lan-cluster.xml \
@@ -196,6 +198,7 @@ jobs:
--target linux-x64-ota-requestor-${BUILD_VARIANT} \
--target linux-x64-tv-app-${BUILD_VARIANT} \
--target linux-x64-bridge-${BUILD_VARIANT} \
+ --target linux-x64-lit-icd-${BUILD_VARIANT} \
build \
--copy-artifacts-to objdir-clone \
"
@@ -215,6 +218,7 @@ jobs:
--ota-requestor-app ./out/linux-x64-ota-requestor-${BUILD_VARIANT}/chip-ota-requestor-app \
--tv-app ./out/linux-x64-tv-app-${BUILD_VARIANT}/chip-tv-app \
--bridge-app ./out/linux-x64-bridge-${BUILD_VARIANT}/chip-bridge-app \
+ --lit-icd-app ./out/linux-x64-lit-icd-${BUILD_VARIANT}/lit-icd-app \
"
- name: Run purposeful failure tests using the python parser sending commands to chip-tool
@@ -253,6 +257,7 @@ jobs:
--ota-requestor-app ./out/linux-x64-ota-requestor-${BUILD_VARIANT}/chip-ota-requestor-app \
--tv-app ./out/linux-x64-tv-app-${BUILD_VARIANT}/chip-tv-app \
--bridge-app ./out/linux-x64-bridge-${BUILD_VARIANT}/chip-bridge-app \
+ --lit-icd-app ./out/linux-x64-lit-icd-${BUILD_VARIANT}/lit-icd-app \
"
- name: Run Tests using chip-repl (including slow)
if: github.event_name == 'push'
@@ -269,6 +274,7 @@ jobs:
--ota-requestor-app ./out/linux-x64-ota-requestor-${BUILD_VARIANT}/chip-ota-requestor-app \
--tv-app ./out/linux-x64-tv-app-${BUILD_VARIANT}/chip-tv-app \
--bridge-app ./out/linux-x64-bridge-${BUILD_VARIANT}/chip-bridge-app \
+ --lit-icd-app ./out/linux-x64-lit-icd-${BUILD_VARIANT}/lit-icd-app \
"
- name: Uploading core files
uses: actions/upload-artifact@v3
@@ -334,6 +340,7 @@ jobs:
--target darwin-x64-ota-requestor-${BUILD_VARIANT} \
--target darwin-x64-tv-app-${BUILD_VARIANT} \
--target darwin-x64-bridge-${BUILD_VARIANT} \
+ --target darwin-x64-lit-icd-${BUILD_VARIANT} \
build \
--copy-artifacts-to objdir-clone \
"
@@ -354,6 +361,7 @@ jobs:
--ota-requestor-app ./out/darwin-x64-ota-requestor-${BUILD_VARIANT}/chip-ota-requestor-app \
--tv-app ./out/darwin-x64-tv-app-${BUILD_VARIANT}/chip-tv-app \
--bridge-app ./out/darwin-x64-bridge-${BUILD_VARIANT}/chip-bridge-app \
+ --lit-icd-app ./out/darwin-x64-lit-icd-${BUILD_VARIANT}/lit-icd-app \
"
- name: Run purposeful failure tests using the python parser sending commands to chip-tool
@@ -404,7 +412,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
net.ipv4.conf.all.forwarding=0 net.ipv6.conf.all.forwarding=0"
@@ -430,6 +438,7 @@ jobs:
"./scripts/build/build_examples.py \
--target linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test \
--target linux-x64-lock-ipv6only-no-ble-no-wifi-tsan-clang-test \
+ --target linux-x64-lit-icd-ipv6only-no-ble-no-wifi-tsan-clang-test \
--target linux-x64-python-bindings \
build \
--copy-artifacts-to objdir-clone \
@@ -448,6 +457,7 @@ jobs:
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_ACE_1_3.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_CGEN_2_4.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_DA_1_2.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
+ scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TestGroupTableReports.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TC_TIMESYNC_2_1.py" --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TC_TIMESYNC_2_2.py" --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TC_TIMESYNC_2_4.py" --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
@@ -461,7 +471,7 @@ jobs:
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TC_TIMESYNC_2_12.py" --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TC_TIMESYNC_2_13.py" --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --script "src/python_testing/TC_TIMESYNC_3_1.py" --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
- scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_ICDM_2_1.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
+ scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-lit-icd-ipv6only-no-ble-no-wifi-tsan-clang-test/lit-icd-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_ICDM_2_1.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_DA_1_5.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_IDM_1_2.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_FAN_3_3.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
diff --git a/.github/workflows/unit_integration_test.yaml b/.github/workflows/unit_integration_test.yaml
index e3c39f21438aec..0896aa4ff3a75e 100644
--- a/.github/workflows/unit_integration_test.yaml
+++ b/.github/workflows/unit_integration_test.yaml
@@ -37,7 +37,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
volumes:
- "/tmp/log_output:/tmp/test_logs"
options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"
diff --git a/.github/workflows/zap_regeneration.yaml b/.github/workflows/zap_regeneration.yaml
index 68b8782f576a43..7ab698049dfb08 100644
--- a/.github/workflows/zap_regeneration.yaml
+++ b/.github/workflows/zap_regeneration.yaml
@@ -30,7 +30,7 @@ jobs:
runs-on: ubuntu-20.04
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
defaults:
run:
shell: sh
diff --git a/.github/workflows/zap_templates.yaml b/.github/workflows/zap_templates.yaml
index bf1e305c4c9d51..61b6ddea5b807d 100644
--- a/.github/workflows/zap_templates.yaml
+++ b/.github/workflows/zap_templates.yaml
@@ -32,7 +32,7 @@ jobs:
runs-on: ubuntu-20.04
container:
- image: ghcr.io/project-chip/chip-build:24
+ image: ghcr.io/project-chip/chip-build:26
defaults:
run:
shell: sh
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 371df3b0e1ee60..8822dafadbe2db 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -2,82 +2,142 @@
This Project CHIP Open Source Code of Conduct applies to all those contributing
to, participating in, or maintaining the Project CHIP open source project,
-including Zigbee Alliance members and non-members.
+including Connectivity Standards Alliance members and non-members.
+
+# Contributor Covenant Code of Conduct
## Our Pledge
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to make participation in our project and our
+We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
-size, disability, ethnicity, sex characteristics, gender identity and
-expression, level of experience, education, socio-economic status, nationality,
-personal appearance, race, religion, or sexual identity and orientation.
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, caste, color, religion, or sexual
+identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
## Our Standards
-Examples of behavior that contributes to creating a positive environment
-include:
+Examples of behavior that contributes to a positive environment for our
+community include:
-- Using welcoming and inclusive language
-- Being respectful of differing viewpoints and experiences
-- Gracefully accepting constructive criticism
-- Focusing on what is best for the community
-- Showing empathy towards other community members
+- Demonstrating empathy and kindness toward other people
+- Being respectful of differing opinions, viewpoints, and experiences
+- Giving and gracefully accepting constructive feedback
+- Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+- Focusing on what is best not just for us as individuals, but for the overall
+ community
+- Respecting people's privacy and private product plans
-Examples of unacceptable behavior by participants include:
+Examples of unacceptable behavior include:
-- The use of violent threats, abusive, discriminatory, or derogatory language
-- The use of sexualized language or imagery and unwelcome sexual attention or
- advances
-- Trolling, insulting/derogatory comments, and personal or political attacks
+- The use of sexualized language or imagery, and sexual attention or advances
+ of any kind
+- Trolling, insulting or derogatory comments, and personal or political
+ attacks
- Public or private harassment
-- Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-- Posting of violent content
-- Engaging in unwanted physical contact
+- Publishing others' private information, such as a physical or email address,
+ without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
-- Advocating for or encouraging any of the above behaviors
+- Disclosure of private information, unreleased products
+- Disclosure of unreleased specification information outside of Connectivity
+ Standards Alliance approved forums
+
+## Enforcement Responsibilities
-## Our Responsibilities
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
-Project maintainers are expected to take appropriate and fair corrective action
-in response to any instances of unacceptable behavior. Project maintainers have
-the right and responsibility to remove, edit, or reject comments, commits, code,
-wiki edits, issues, and other contributions that are not aligned to this Code of
-Conduct, or to ban temporarily or permanently any contributor for other
-behaviors that they deem inappropriate, threatening, offensive, or harmful.
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
## Scope
-This Code of Conduct applies within all project spaces, and it also applies when
-an individual is representing the project or its community in public spaces.
-Examples of representing a project or community include using an official
-project e-mail address, posting via an official social media account, or acting
-as an appointed representative at an online or offline event. Representation of
-a project may be further defined and clarified by project maintainers.
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the Project CHIP open source team at [INSERT EMAIL
-ADDRESS]. All complaints will be reviewed and investigated and will result in a
-response that is deemed necessary and appropriate to the circumstances. The
-Project CHIP open source team should maintain confidentiality with regard to the
-reporter of an incident. Further details of specific enforcement policies may be
-posted separately.
+reported to the community leaders responsible for enforcement at
+help@csa-iot.org. All submissions will be reviewed and investigated promptly and
+fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
-Project maintainers who do not follow or enforce the Code of Conduct in good
-faith may face temporary or permanent repercussions as determined by Project
-CHIP open source leadership.
+**Community Impact**: A violation through a single incident or series of
+actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or permanent
+ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within the
+community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
-version 1.4, available at
-https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+version 2.1, available at
+[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
-[homepage]: https://www.contributor-covenant.org
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder][mozilla coc].
-For answers to common questions about this code of conduct, see
-https://www.contributor-covenant.org/faq
+For answers to common questions about this code of conduct, see the FAQ at
+[https://www.contributor-covenant.org/faq][faq]. Translations are available at
+[https://www.contributor-covenant.org/translations][translations].
+
+[homepage]: https://www.contributor-covenant.org
+[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
+[mozilla coc]: https://github.com/mozilla/diversity
+[faq]: https://www.contributor-covenant.org/faq
+[translations]: https://www.contributor-covenant.org/translations
diff --git a/build/toolchain/flashable_executable.gni b/build/toolchain/flashable_executable.gni
index 97b2b44f1ac51c..6233d58382b43d 100644
--- a/build/toolchain/flashable_executable.gni
+++ b/build/toolchain/flashable_executable.gni
@@ -147,6 +147,12 @@ template("flashable_executable") {
} else {
flashing_options = []
}
+
+ # Allows to set a different image name in the flasher script
+ if (defined(invoker.flashing_image_name)) {
+ image_name = invoker.flashing_image_name
+ }
+
flashing_options += [
"--application",
rebase_path(image_name, root_out_dir, root_out_dir),
diff --git a/config/esp32/components/chip/Kconfig b/config/esp32/components/chip/Kconfig
index 43a766b7dbf8dd..b73398bca4c2bf 100644
--- a/config/esp32/components/chip/Kconfig
+++ b/config/esp32/components/chip/Kconfig
@@ -640,6 +640,16 @@ menu "CHIP Device Layer"
When set, WoBLE advertisements will stop while a WoBLE connection is active.
+ config CHIPOBLE_ENABLE_ADVERTISING_AUTOSTART
+ int "Enable CHIPoBLE advertising start automatically after device power-up"
+ range 0 1
+ default 0
+ depends on ENABLE_CHIPOBLE
+ help
+ CHIPs device may start advertising automatically only if its all primary device
+ functions are within a CHIP network. Device providing unrelated to CHIP functionalities
+ should not start advertising automatically after power-up.
+
config USE_BLE_ONLY_FOR_COMMISSIONING
bool "Use BLE only for commissioning"
default y
diff --git a/config/telink/chip-module/CMakeLists.txt b/config/telink/chip-module/CMakeLists.txt
index e9d506e538f131..8e798c058525c6 100644
--- a/config/telink/chip-module/CMakeLists.txt
+++ b/config/telink/chip-module/CMakeLists.txt
@@ -143,10 +143,11 @@ set_property(GLOBAL APPEND PROPERTY ZEPHYR_INTERFACE_LIBS chip)
# Define 'chip-ota-image' target for building CHIP OTA image
# ==============================================================================
+string(REPLACE "_retention" "" BASE_BOARD ${BOARD})
if(${TLNK_USB_DONGLE} MATCHES y)
- if(EXISTS "${CHIP_ROOT}/src/platform/telink/${BOARD}_usb_boot.overlay")
- set(USB_BOOT_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}_usb_boot.overlay")
+ if(EXISTS "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}_usb_boot.overlay")
+ set(USB_BOOT_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}_usb_boot.overlay")
else()
unset(USB_BOOT_DTC_OVERLAY_FILE)
endif()
@@ -154,8 +155,18 @@ else()
unset(USB_BOOT_DTC_OVERLAY_FILE)
endif()
-if(EXISTS "${CHIP_ROOT}/src/platform/telink/${BOARD}.overlay")
- set(GLOBAL_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}.overlay")
+if(${TLNK_MARS_BOARD} MATCHES y)
+ if(EXISTS "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}_mars_boot.overlay")
+ set(MARS_BOOT_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}_mars_boot.overlay")
+ else()
+ unset(MARS_BOOT_DTC_OVERLAY_FILE)
+ endif()
+else()
+ unset(MARS_CONF_OVERLAY_FILE)
+endif()
+
+if(EXISTS "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}.overlay")
+ set(GLOBAL_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}.overlay")
else()
unset(GLOBAL_DTC_OVERLAY_FILE)
endif()
@@ -184,8 +195,8 @@ math(EXPR boot_blocks "${mcuboot_size} / ${BLOCK_SIZE}" OUTPUT_FORMAT DECIMAL)
if (CONFIG_BOOTLOADER_MCUBOOT)
add_custom_target(build_mcuboot ALL
COMMAND
- west build -b ${BOARD} -d build_mcuboot ${ZEPHYR_BASE}/../bootloader/mcuboot/boot/zephyr
- -- -DOVERLAY_CONFIG=${GLOBAL_BOOTLOADER_CONF_OVERLAY_FILE} -DDTC_OVERLAY_FILE="${GLOBAL_DTC_OVERLAY_FILE};${FLASH_DTC_OVERLAY_FILE};${USB_BOOT_DTC_OVERLAY_FILE}"
+ west build -b ${BASE_BOARD} -d build_mcuboot ${ZEPHYR_BASE}/../bootloader/mcuboot/boot/zephyr
+ -- -DOVERLAY_CONFIG=${GLOBAL_BOOTLOADER_CONF_OVERLAY_FILE} -DDTC_OVERLAY_FILE="${GLOBAL_DTC_OVERLAY_FILE};${FLASH_DTC_OVERLAY_FILE};${USB_BOOT_DTC_OVERLAY_FILE};${MARS_BOOT_DTC_OVERLAY_FILE}"
COMMAND
cp ${PROJECT_BINARY_DIR}/../modules/chip-module/build_mcuboot/zephyr/zephyr.bin ${PROJECT_BINARY_DIR}/zephyr.mcuboot.bin
)
diff --git a/config/telink/chip-module/Kconfig b/config/telink/chip-module/Kconfig
index b1bd07660937bd..93ebc31a0f426e 100644
--- a/config/telink/chip-module/Kconfig
+++ b/config/telink/chip-module/Kconfig
@@ -202,3 +202,8 @@ config CHIP_ENABLE_POWER_ON_FACTORY_RESET
Enable power on factory reset sequence. If device power triggered off during
first 5 seconds after power on and this sequence repeated 5 times - factory
reset will be involved.
+
+config CHIP_USE_MARS_SENSOR
+ bool "Use Mars board sensor"
+ depends on SOC_SERIES_RISCV_TELINK_B9X && (BOARD_TLSR9518ADK80D || BOARD_TLSR9518ADK80D_RETENTION)
+ default n
diff --git a/config/telink/chip-module/Kconfig.defaults b/config/telink/chip-module/Kconfig.defaults
index f346a2c1eeb807..54137bc281562b 100644
--- a/config/telink/chip-module/Kconfig.defaults
+++ b/config/telink/chip-module/Kconfig.defaults
@@ -64,7 +64,7 @@ config INIT_STACKS
default y
config IDLE_STACK_SIZE
- default 387 if PM
+ default 512 if PM
config ISR_STACK_SIZE
default 502 if PM
@@ -73,7 +73,7 @@ config SYSTEM_WORKQUEUE_STACK_SIZE
default 616 if PM
config HEAP_MEM_POOL_SIZE
- default 128 if PM
+ default 256
config COMMON_LIBC_MALLOC_ARENA_SIZE
default 12288
@@ -98,6 +98,9 @@ config NET_BUF_TX_COUNT
default 16 if PM
default 32
+config GPIO
+ default y
+
# Bluetooth Low Energy configs
config BT
@@ -154,6 +157,24 @@ choice B9X_BLE_CTRL_MAC_TYPE
default B9X_BLE_CTRL_MAC_TYPE_RANDOM_STATIC
endchoice
+# Board retention config
+if BOARD_TLSR9528A_RETENTION || BOARD_TLSR9518ADK80D_RETENTION
+config BOARD_TLSR9X_NON_RETENTION_RAM_CODE
+ default y if PM
+
+config TELINK_B9x_MATTER_RETENTION_LAYOUT
+ default y if PM
+
+config PWM
+ default n
+endif
+
+# Board non-retention config
+if BOARD_TLSR9528A || BOARD_TLSR9518ADK80D
+config PWM
+ default y
+endif
+
# Config dynamic interrupts to have posibility to switch between BLE/Thread radio drivers
config DYNAMIC_INTERRUPTS
default y
diff --git a/data_model/clusters/AccountLogin.xml b/data_model/clusters/AccountLogin.xml
index 4add6f4189d279..3cd5c02590ea0a 100644
--- a/data_model/clusters/AccountLogin.xml
+++ b/data_model/clusters/AccountLogin.xml
@@ -73,9 +73,8 @@ Davis, CA 95616, USA
-
-
+
diff --git a/data_model/clusters/AlarmBase.xml b/data_model/clusters/AlarmBase.xml
index b169d4fe9be24a..834089869b21da 100644
--- a/data_model/clusters/AlarmBase.xml
+++ b/data_model/clusters/AlarmBase.xml
@@ -115,13 +115,13 @@ Davis, CA 95616, USA
-
+
-
+
-
+
diff --git a/data_model/clusters/BallastConfiguration.xml b/data_model/clusters/BallastConfiguration.xml
index a6d553ddcc6ead..416b8cd7014beb 100644
--- a/data_model/clusters/BallastConfiguration.xml
+++ b/data_model/clusters/BallastConfiguration.xml
@@ -124,12 +124,12 @@ Davis, CA 95616, USA
-
+
-
+
diff --git a/data_model/clusters/Channel.xml b/data_model/clusters/Channel.xml
index 3227cf9a5a446e..b75540d94a6baf 100644
--- a/data_model/clusters/Channel.xml
+++ b/data_model/clusters/Channel.xml
@@ -129,8 +129,9 @@ Davis, CA 95616, USA
-
+
+
diff --git a/data_model/clusters/DiagnosticsThread.xml b/data_model/clusters/DiagnosticsThread.xml
index 2f8e97b150ffc2..ddcf246e9c99c3 100644
--- a/data_model/clusters/DiagnosticsThread.xml
+++ b/data_model/clusters/DiagnosticsThread.xml
@@ -653,7 +653,7 @@ Davis, CA 95616, USA
-
+
diff --git a/data_model/clusters/KeypadInput.xml b/data_model/clusters/KeypadInput.xml
index 81f16ec0830aef..7179ae676b65fe 100644
--- a/data_model/clusters/KeypadInput.xml
+++ b/data_model/clusters/KeypadInput.xml
@@ -72,6 +72,266 @@ Davis, CA 95616, USA
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
-
@@ -88,7 +348,7 @@ Davis, CA 95616, USA
-
+
diff --git a/data_model/clusters/LocalizationTimeFormat.xml b/data_model/clusters/LocalizationTimeFormat.xml
index 9c0ffa062fec58..1a7b6976a69ec6 100644
--- a/data_model/clusters/LocalizationTimeFormat.xml
+++ b/data_model/clusters/LocalizationTimeFormat.xml
@@ -103,6 +103,9 @@ Davis, CA 95616, USA
-
+ -
+
+
-
@@ -111,17 +114,20 @@ Davis, CA 95616, USA
-
+ -
+
+
-
+
-
+
-
+
-
+
diff --git a/data_model/clusters/TargetNavigator.xml b/data_model/clusters/TargetNavigator.xml
index 3a49e7b5c6c838..ffb6955d27bf3c 100644
--- a/data_model/clusters/TargetNavigator.xml
+++ b/data_model/clusters/TargetNavigator.xml
@@ -75,6 +75,7 @@ Davis, CA 95616, USA
+
@@ -86,9 +87,8 @@ Davis, CA 95616, USA
-
+
-
diff --git a/data_model/clusters/WakeOnLAN.xml b/data_model/clusters/WakeOnLAN.xml
index eede336182e6dc..799c92a03fd9b8 100644
--- a/data_model/clusters/WakeOnLAN.xml
+++ b/data_model/clusters/WakeOnLAN.xml
@@ -61,11 +61,11 @@ Davis, CA 95616, USA
-
+
-
+
diff --git a/data_model/device_types/Aggregator.xml b/data_model/device_types/Aggregator.xml
new file mode 100644
index 00000000000000..3f70f3d78ccb4b
--- /dev/null
+++ b/data_model/device_types/Aggregator.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/clusters/Mode_LaundryWasher.xml b/data_model/device_types/AirPurifier.xml
similarity index 75%
rename from data_model/clusters/Mode_LaundryWasher.xml
rename to data_model/device_types/AirPurifier.xml
index 96190a4009850c..9793cd1d36b215 100644
--- a/data_model/clusters/Mode_LaundryWasher.xml
+++ b/data_model/device_types/AirPurifier.xml
@@ -55,37 +55,27 @@ Connectivity Standards Alliance
508 Second Street, Suite 206
Davis, CA 95616, USA
-->
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/AirQualitySensor.xml b/data_model/device_types/AirQualitySensor.xml
new file mode 100644
index 00000000000000..0c96fbd60515b7
--- /dev/null
+++ b/data_model/device_types/AirQualitySensor.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/BaseDeviceType.xml b/data_model/device_types/BaseDeviceType.xml
new file mode 100644
index 00000000000000..22cec956aa6061
--- /dev/null
+++ b/data_model/device_types/BaseDeviceType.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/BasicVideoPlayer.xml b/data_model/device_types/BasicVideoPlayer.xml
new file mode 100644
index 00000000000000..f6b86091004bfe
--- /dev/null
+++ b/data_model/device_types/BasicVideoPlayer.xml
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/BooleanSensor.xml b/data_model/device_types/BooleanSensor.xml
new file mode 100644
index 00000000000000..185fdc47176813
--- /dev/null
+++ b/data_model/device_types/BooleanSensor.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/BridgedNode.xml b/data_model/device_types/BridgedNode.xml
new file mode 100644
index 00000000000000..a383ed2b541d6b
--- /dev/null
+++ b/data_model/device_types/BridgedNode.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/CastingVideoClient.xml b/data_model/device_types/CastingVideoClient.xml
new file mode 100644
index 00000000000000..06ef2b5492f337
--- /dev/null
+++ b/data_model/device_types/CastingVideoClient.xml
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/CastingVideoPlayer.xml b/data_model/device_types/CastingVideoPlayer.xml
new file mode 100644
index 00000000000000..fd26bb675cbdf6
--- /dev/null
+++ b/data_model/device_types/CastingVideoPlayer.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ColorDimmerSwitch.xml b/data_model/device_types/ColorDimmerSwitch.xml
new file mode 100644
index 00000000000000..dcd2ac18b1a912
--- /dev/null
+++ b/data_model/device_types/ColorDimmerSwitch.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ColorTemperatureLight.xml b/data_model/device_types/ColorTemperatureLight.xml
new file mode 100644
index 00000000000000..5897f0ee0b796a
--- /dev/null
+++ b/data_model/device_types/ColorTemperatureLight.xml
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ContactSensor.xml b/data_model/device_types/ContactSensor.xml
new file mode 100644
index 00000000000000..e8a7c3f343a9f4
--- /dev/null
+++ b/data_model/device_types/ContactSensor.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ContentApp.xml b/data_model/device_types/ContentApp.xml
new file mode 100644
index 00000000000000..8f927c48f44a35
--- /dev/null
+++ b/data_model/device_types/ContentApp.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ControlBridge.xml b/data_model/device_types/ControlBridge.xml
new file mode 100644
index 00000000000000..6ed528c0122d96
--- /dev/null
+++ b/data_model/device_types/ControlBridge.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/CookSurface.xml b/data_model/device_types/CookSurface.xml
new file mode 100644
index 00000000000000..34f5556234a6e5
--- /dev/null
+++ b/data_model/device_types/CookSurface.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/Cooktop.xml b/data_model/device_types/Cooktop.xml
new file mode 100644
index 00000000000000..8288f38c8a87ba
--- /dev/null
+++ b/data_model/device_types/Cooktop.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/DimmableLight.xml b/data_model/device_types/DimmableLight.xml
new file mode 100644
index 00000000000000..39f193f53e7553
--- /dev/null
+++ b/data_model/device_types/DimmableLight.xml
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/DimmablePlug-InUnit.xml b/data_model/device_types/DimmablePlug-InUnit.xml
new file mode 100644
index 00000000000000..c262abf3741d7e
--- /dev/null
+++ b/data_model/device_types/DimmablePlug-InUnit.xml
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/DimmerSwitch.xml b/data_model/device_types/DimmerSwitch.xml
new file mode 100644
index 00000000000000..a3bae868a2498b
--- /dev/null
+++ b/data_model/device_types/DimmerSwitch.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/Dishwasher.xml b/data_model/device_types/Dishwasher.xml
new file mode 100644
index 00000000000000..429e96c149abe9
--- /dev/null
+++ b/data_model/device_types/Dishwasher.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/DoorLock.xml b/data_model/device_types/DoorLock.xml
new file mode 100644
index 00000000000000..d31aaad30d8d98
--- /dev/null
+++ b/data_model/device_types/DoorLock.xml
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/DoorLockController.xml b/data_model/device_types/DoorLockController.xml
new file mode 100644
index 00000000000000..4f4efb3ea90d1c
--- /dev/null
+++ b/data_model/device_types/DoorLockController.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/EVSE.xml b/data_model/device_types/EVSE.xml
new file mode 100644
index 00000000000000..b5e57c83aa3ac1
--- /dev/null
+++ b/data_model/device_types/EVSE.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/EnergyTariff.xml b/data_model/device_types/EnergyTariff.xml
new file mode 100644
index 00000000000000..9e6e0b4c12ab36
--- /dev/null
+++ b/data_model/device_types/EnergyTariff.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/EnergyTariffCalendar.xml b/data_model/device_types/EnergyTariffCalendar.xml
new file mode 100644
index 00000000000000..3dca889b777e66
--- /dev/null
+++ b/data_model/device_types/EnergyTariffCalendar.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ExtendedColorLight.xml b/data_model/device_types/ExtendedColorLight.xml
new file mode 100644
index 00000000000000..4120226176e7a1
--- /dev/null
+++ b/data_model/device_types/ExtendedColorLight.xml
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ExtractorHood.xml b/data_model/device_types/ExtractorHood.xml
new file mode 100644
index 00000000000000..5fdbc7c84a1583
--- /dev/null
+++ b/data_model/device_types/ExtractorHood.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/Fan.xml b/data_model/device_types/Fan.xml
new file mode 100644
index 00000000000000..49538ec32097b6
--- /dev/null
+++ b/data_model/device_types/Fan.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/FlowSensor.xml b/data_model/device_types/FlowSensor.xml
new file mode 100644
index 00000000000000..8c604586481536
--- /dev/null
+++ b/data_model/device_types/FlowSensor.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/GenericSwitch.xml b/data_model/device_types/GenericSwitch.xml
new file mode 100644
index 00000000000000..7e13a7e18223ab
--- /dev/null
+++ b/data_model/device_types/GenericSwitch.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/HeatingCoolingUnit.xml b/data_model/device_types/HeatingCoolingUnit.xml
new file mode 100644
index 00000000000000..244ff14b0a15fa
--- /dev/null
+++ b/data_model/device_types/HeatingCoolingUnit.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/HumiditySensor.xml b/data_model/device_types/HumiditySensor.xml
new file mode 100644
index 00000000000000..d59ed7caf43abe
--- /dev/null
+++ b/data_model/device_types/HumiditySensor.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/LaundryDryer.xml b/data_model/device_types/LaundryDryer.xml
new file mode 100644
index 00000000000000..a7d365f22e14fe
--- /dev/null
+++ b/data_model/device_types/LaundryDryer.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/LaundryWasher.xml b/data_model/device_types/LaundryWasher.xml
new file mode 100644
index 00000000000000..07cd62a605fc9c
--- /dev/null
+++ b/data_model/device_types/LaundryWasher.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/LightSensor.xml b/data_model/device_types/LightSensor.xml
new file mode 100644
index 00000000000000..618901b398b5f8
--- /dev/null
+++ b/data_model/device_types/LightSensor.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/MicrowaveOven.xml b/data_model/device_types/MicrowaveOven.xml
new file mode 100644
index 00000000000000..8e77925b4131fc
--- /dev/null
+++ b/data_model/device_types/MicrowaveOven.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ModeSelectDeviceType.xml b/data_model/device_types/ModeSelectDeviceType.xml
new file mode 100644
index 00000000000000..748dc1bae2f0a3
--- /dev/null
+++ b/data_model/device_types/ModeSelectDeviceType.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/NetworkInfraIntro.xml b/data_model/device_types/NetworkInfraIntro.xml
new file mode 100644
index 00000000000000..22d91b6f459c6d
--- /dev/null
+++ b/data_model/device_types/NetworkInfraIntro.xml
@@ -0,0 +1,58 @@
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/NetworkInfraManager.xml b/data_model/device_types/NetworkInfraManager.xml
new file mode 100644
index 00000000000000..750a97f22cad86
--- /dev/null
+++ b/data_model/device_types/NetworkInfraManager.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/OccupancySensor.xml b/data_model/device_types/OccupancySensor.xml
new file mode 100644
index 00000000000000..bef470cc1c9ec6
--- /dev/null
+++ b/data_model/device_types/OccupancySensor.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/OnOffLight.xml b/data_model/device_types/OnOffLight.xml
new file mode 100644
index 00000000000000..1ce39e8545c84a
--- /dev/null
+++ b/data_model/device_types/OnOffLight.xml
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/OnOffLightSwitch.xml b/data_model/device_types/OnOffLightSwitch.xml
new file mode 100644
index 00000000000000..c2c324c8ee5d2a
--- /dev/null
+++ b/data_model/device_types/OnOffLightSwitch.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/OnOffPlug-inUnit.xml b/data_model/device_types/OnOffPlug-inUnit.xml
new file mode 100644
index 00000000000000..1847119e49426c
--- /dev/null
+++ b/data_model/device_types/OnOffPlug-inUnit.xml
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/OnOffSensor.xml b/data_model/device_types/OnOffSensor.xml
new file mode 100644
index 00000000000000..d2c6553fc1140c
--- /dev/null
+++ b/data_model/device_types/OnOffSensor.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/OtaProvider.xml b/data_model/device_types/OtaProvider.xml
new file mode 100644
index 00000000000000..28c4e3c70b88e9
--- /dev/null
+++ b/data_model/device_types/OtaProvider.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/OtaRequestor.xml b/data_model/device_types/OtaRequestor.xml
new file mode 100644
index 00000000000000..7f5a8ca11c58c8
--- /dev/null
+++ b/data_model/device_types/OtaRequestor.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/Oven.xml b/data_model/device_types/Oven.xml
new file mode 100644
index 00000000000000..5a13b0ec9ba053
--- /dev/null
+++ b/data_model/device_types/Oven.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/PowerSource.xml b/data_model/device_types/PowerSource.xml
new file mode 100644
index 00000000000000..05aaa56f88cf92
--- /dev/null
+++ b/data_model/device_types/PowerSource.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/PressureSensor.xml b/data_model/device_types/PressureSensor.xml
new file mode 100644
index 00000000000000..f472daaf4e39ff
--- /dev/null
+++ b/data_model/device_types/PressureSensor.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/Pump.xml b/data_model/device_types/Pump.xml
new file mode 100644
index 00000000000000..6f1b1f39aae53c
--- /dev/null
+++ b/data_model/device_types/Pump.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/PumpController.xml b/data_model/device_types/PumpController.xml
new file mode 100644
index 00000000000000..070e3a5912942b
--- /dev/null
+++ b/data_model/device_types/PumpController.xml
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/Refrigerator.xml b/data_model/device_types/Refrigerator.xml
new file mode 100644
index 00000000000000..19a9b568872e4a
--- /dev/null
+++ b/data_model/device_types/Refrigerator.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/RoboticVacuumCleaner.xml b/data_model/device_types/RoboticVacuumCleaner.xml
new file mode 100644
index 00000000000000..4e02b17d772606
--- /dev/null
+++ b/data_model/device_types/RoboticVacuumCleaner.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/RoomAirConditioner.xml b/data_model/device_types/RoomAirConditioner.xml
new file mode 100644
index 00000000000000..86240698da6789
--- /dev/null
+++ b/data_model/device_types/RoomAirConditioner.xml
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/RootNodeDeviceType.xml b/data_model/device_types/RootNodeDeviceType.xml
new file mode 100644
index 00000000000000..f4792a2e1f5a96
--- /dev/null
+++ b/data_model/device_types/RootNodeDeviceType.xml
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/SmokeCOAlarm.xml b/data_model/device_types/SmokeCOAlarm.xml
new file mode 100644
index 00000000000000..5888e8148f0927
--- /dev/null
+++ b/data_model/device_types/SmokeCOAlarm.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/Speaker.xml b/data_model/device_types/Speaker.xml
new file mode 100644
index 00000000000000..f8bc0ab150036e
--- /dev/null
+++ b/data_model/device_types/Speaker.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/TemperatureControlledCabinet.xml b/data_model/device_types/TemperatureControlledCabinet.xml
new file mode 100644
index 00000000000000..93c09339a65a75
--- /dev/null
+++ b/data_model/device_types/TemperatureControlledCabinet.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/TemperatureSensor.xml b/data_model/device_types/TemperatureSensor.xml
new file mode 100644
index 00000000000000..19d3fef781c717
--- /dev/null
+++ b/data_model/device_types/TemperatureSensor.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/Thermostat.xml b/data_model/device_types/Thermostat.xml
new file mode 100644
index 00000000000000..ebc43e7dbf7203
--- /dev/null
+++ b/data_model/device_types/Thermostat.xml
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ThreadBorderRouter.xml b/data_model/device_types/ThreadBorderRouter.xml
new file mode 100644
index 00000000000000..5a069e57e93243
--- /dev/null
+++ b/data_model/device_types/ThreadBorderRouter.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/ThreePhasePowerSource.xml b/data_model/device_types/ThreePhasePowerSource.xml
new file mode 100644
index 00000000000000..3a3d5a018223b4
--- /dev/null
+++ b/data_model/device_types/ThreePhasePowerSource.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/Valve.xml b/data_model/device_types/Valve.xml
new file mode 100644
index 00000000000000..4ce864b01ab246
--- /dev/null
+++ b/data_model/device_types/Valve.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/VideoRemoteControl.xml b/data_model/device_types/VideoRemoteControl.xml
new file mode 100644
index 00000000000000..c86fb3ba437a55
--- /dev/null
+++ b/data_model/device_types/VideoRemoteControl.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/WaterHeater.xml b/data_model/device_types/WaterHeater.xml
new file mode 100644
index 00000000000000..2f2f7fae235e1b
--- /dev/null
+++ b/data_model/device_types/WaterHeater.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/WaterLeakDetector.xml b/data_model/device_types/WaterLeakDetector.xml
new file mode 100644
index 00000000000000..596a9cebb2ac04
--- /dev/null
+++ b/data_model/device_types/WaterLeakDetector.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/WindowCovering.xml b/data_model/device_types/WindowCovering.xml
new file mode 100644
index 00000000000000..83f03a2a04e5ed
--- /dev/null
+++ b/data_model/device_types/WindowCovering.xml
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/device_types/WindowCoveringController.xml b/data_model/device_types/WindowCoveringController.xml
new file mode 100644
index 00000000000000..c79d5a2279f6a8
--- /dev/null
+++ b/data_model/device_types/WindowCoveringController.xml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_model/scraper_version b/data_model/scraper_version
new file mode 100644
index 00000000000000..26aaba0e86632e
--- /dev/null
+++ b/data_model/scraper_version
@@ -0,0 +1 @@
+1.2.0
diff --git a/data_model/spec_sha b/data_model/spec_sha
index d114fd3ddcace3..03c3b85baa2427 100644
--- a/data_model/spec_sha
+++ b/data_model/spec_sha
@@ -1 +1 @@
-17cfdc4a04397eec62f1bce7984cace268b28ab3
+49003c1b2337aa51dad227977981b763667d1f75
diff --git a/docs/ci-cd/index.md b/docs/ci-cd/index.md
index 616c34ece1d43e..de54e466d8ce94 100644
--- a/docs/ci-cd/index.md
+++ b/docs/ci-cd/index.md
@@ -1,43 +1,26 @@
# CI/CD Documentation
+```{toctree}
+:glob:
+
+tools/*
+```
+
## Known Issues
- Python build running out of space
+ - [Fail example](https://github.com/project-chip/connectedhomeip/actions/runs/6239660536/job/16938053552?pr=29333)
+ - May need intermediate cleanup steps
## Tools
-### Daily Fail Summary
-
-#### Source
-
-Workflow:
-https://github.com/project-chip/connectedhomeip/blob/master/.github/workflows/recent_fail_summary.yaml
-
-Script:
-https://github.com/project-chip/connectedhomeip/blob/master/scripts/tools/summarize_fail.py
-
-Fail Definitions:
-https://github.com/project-chip/connectedhomeip/blob/master/scripts/tools/build_fail_definitions.yaml
-
-#### Summary
-
-Runs once per day; takes inventory of the previous day's workflow runs and
-parses them for fail statistics. Creates temporarily cached artifacts for easy
-data parsing. Also saves a daily pass percentage list of all workflows at
-https://github.com/project-chip/connectedhomeip/blob/daily_pass_percentage/docs/daily_pass_percentage.md.
-Fail definitions can be added to the file defined above to allow fast root cause
-determination of any fail with an error message.
-
-#### Improvement Ideas
-
-- Keep fail signature list updated to track causes of all common fails
-- Make script artifact more known and accessible so it can be easily shared
- and used by everyone
-- Deliver daily fail summaries in short form through a Slack bot for easy
- access
+- [Daily Fail Summary](tools/daily_fail_summary.md)
## To Do
- Cert image auto build
+ - [Initial code](https://github.com/woody-apple/connectedhomeip/tree/build-cert-bins)
+ - Need to change chip-build image builds to cut down time
+ - Do multi-platform builds for ARM64
## General Improvement Ideas
diff --git a/docs/ci-cd/tools/daily_fail_summary.md b/docs/ci-cd/tools/daily_fail_summary.md
new file mode 100644
index 00000000000000..8855a7a3de6086
--- /dev/null
+++ b/docs/ci-cd/tools/daily_fail_summary.md
@@ -0,0 +1,34 @@
+### Daily Fail Summary
+
+#### Source
+
+Workflow:
+https://github.com/project-chip/connectedhomeip/blob/master/.github/workflows/recent_fail_summary.yaml
+
+Script:
+https://github.com/project-chip/connectedhomeip/blob/master/scripts/tools/summarize_fail.py
+
+Fail Definitions:
+https://github.com/project-chip/connectedhomeip/blob/master/scripts/tools/build_fail_definitions.yaml
+
+#### Summary
+
+Runs once per day; takes inventory of the previous day's workflow runs and
+parses them for fail statistics. Creates temporarily cached artifacts for easy
+data parsing. Also saves a daily pass percentage list of all workflows at
+https://github.com/project-chip/connectedhomeip/blob/daily_pass_percentage/docs/daily_pass_percentage.md.
+Fail definitions can be added to the file defined above to allow fast root cause
+determination of any fail with an error message.
+
+#### To Do
+
+- Keep fail signature list updated to track causes of all common fails
+- Include Darwin Test fail definitions in fail summary script - for starters,
+ Test Reliable Message Protocol
+
+#### Improvement Ideas
+
+- Make script artifact more known and accessible so it can be easily shared
+ and used by everyone
+- Deliver daily fail summaries in short form through a Slack bot for easy
+ access
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 138e828cab9564..99693cb41a99b2 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
@@ -231,6 +231,8 @@ server cluster BasicInformation = 40 {
attribute access(write: manage) boolean localConfigDisabled = 16;
readonly attribute char_string<32> uniqueID = 18;
readonly attribute CapabilityMinimaStruct capabilityMinima = 19;
+ readonly attribute int32u specificationVersion = 21;
+ readonly attribute int16u maxPathsPerInvoke = 22;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -428,13 +430,13 @@ server cluster GeneralCommissioning = 48 {
request struct SetRegulatoryConfigRequest {
RegulatoryLocationTypeEnum newRegulatoryConfig = 0;
- char_string countryCode = 1;
+ char_string<2> countryCode = 1;
int64u breadcrumb = 2;
}
response struct ArmFailSafeResponse = 1 {
CommissioningErrorEnum errorCode = 0;
- char_string debugText = 1;
+ char_string<128> debugText = 1;
}
response struct SetRegulatoryConfigResponse = 3 {
@@ -483,6 +485,7 @@ server cluster NetworkCommissioning = 49 {
kWiFiNetworkInterface = 0x1;
kThreadNetworkInterface = 0x2;
kEthernetNetworkInterface = 0x4;
+ kPerDeviceCredentials = 0x8;
}
bitmap ThreadCapabilitiesBitmap : bitmap16 {
@@ -499,11 +502,14 @@ server cluster NetworkCommissioning = 49 {
kWPAPersonal = 0x4;
kWPA2Personal = 0x8;
kWPA3Personal = 0x10;
+ kWPA3MatterPDC = 0x20;
}
struct NetworkInfoStruct {
octet_string<32> networkID = 0;
boolean connected = 1;
+ optional nullable octet_string<20> networkIdentifier = 2;
+ optional nullable octet_string<20> clientIdentifier = 3;
}
struct ThreadInterfaceScanResultStruct {
@@ -550,6 +556,9 @@ server cluster NetworkCommissioning = 49 {
octet_string<32> ssid = 0;
octet_string<64> credentials = 1;
optional int64u breadcrumb = 2;
+ optional octet_string<140> networkIdentity = 3;
+ optional octet_string<20> clientIdentifier = 4;
+ optional octet_string<32> possessionNonce = 5;
}
request struct AddOrUpdateThreadNetworkRequest {
@@ -584,6 +593,8 @@ server cluster NetworkCommissioning = 49 {
NetworkCommissioningStatusEnum networkingStatus = 0;
optional char_string<512> debugText = 1;
optional int8u networkIndex = 2;
+ optional octet_string<140> clientIdentity = 3;
+ optional octet_string<64> possessionSignature = 4;
}
response struct ConnectNetworkResponse = 7 {
@@ -1812,8 +1823,10 @@ endpoint 0 {
persist attribute localConfigDisabled default = 0;
callback attribute uniqueID;
callback attribute capabilityMinima;
+ callback attribute specificationVersion;
+ callback attribute maxPathsPerInvoke;
ram attribute featureMap default = 0;
- ram attribute clusterRevision default = 1;
+ ram attribute clusterRevision default = 3;
}
server cluster OtaSoftwareUpdateRequestor {
diff --git a/examples/air-purifier-app/air-purifier-common/air-purifier-app.zap b/examples/air-purifier-app/air-purifier-common/air-purifier-app.zap
index 62293622ef43db..1f0867d7757cbb 100644
--- a/examples/air-purifier-app/air-purifier-common/air-purifier-app.zap
+++ b/examples/air-purifier-app/air-purifier-common/air-purifier-app.zap
@@ -632,6 +632,38 @@
"maxInterval": 65534,
"reportableChange": 0
},
+ {
+ "name": "SpecificationVersion",
+ "code": 21,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int32u",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 1,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "MaxPathsPerInvoke",
+ "code": 22,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int16u",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 1,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "FeatureMap",
"code": 65532,
@@ -658,7 +690,7 @@
"storageOption": "RAM",
"singleton": 1,
"bounded": 0,
- "defaultValue": "1",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
@@ -6886,7 +6918,7 @@
"code": 3,
"mfgCode": null,
"side": "server",
- "type": "temperature",
+ "type": "int16u",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -7559,5 +7591,6 @@
"endpointId": 4,
"networkId": 0
}
- ]
+ ],
+ "log": []
}
\ No newline at end of file
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 4ee5d80575496f..c0c1236fa44335 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
@@ -225,6 +225,8 @@ server cluster BasicInformation = 40 {
attribute access(write: manage) boolean localConfigDisabled = 16;
readonly attribute char_string<32> uniqueID = 18;
readonly attribute CapabilityMinimaStruct capabilityMinima = 19;
+ readonly attribute int32u specificationVersion = 21;
+ readonly attribute int16u maxPathsPerInvoke = 22;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -422,13 +424,13 @@ server cluster GeneralCommissioning = 48 {
request struct SetRegulatoryConfigRequest {
RegulatoryLocationTypeEnum newRegulatoryConfig = 0;
- char_string countryCode = 1;
+ char_string<2> countryCode = 1;
int64u breadcrumb = 2;
}
response struct ArmFailSafeResponse = 1 {
CommissioningErrorEnum errorCode = 0;
- char_string debugText = 1;
+ char_string<128> debugText = 1;
}
response struct SetRegulatoryConfigResponse = 3 {
@@ -477,6 +479,7 @@ server cluster NetworkCommissioning = 49 {
kWiFiNetworkInterface = 0x1;
kThreadNetworkInterface = 0x2;
kEthernetNetworkInterface = 0x4;
+ kPerDeviceCredentials = 0x8;
}
bitmap ThreadCapabilitiesBitmap : bitmap16 {
@@ -493,11 +496,14 @@ server cluster NetworkCommissioning = 49 {
kWPAPersonal = 0x4;
kWPA2Personal = 0x8;
kWPA3Personal = 0x10;
+ kWPA3MatterPDC = 0x20;
}
struct NetworkInfoStruct {
octet_string<32> networkID = 0;
boolean connected = 1;
+ optional nullable octet_string<20> networkIdentifier = 2;
+ optional nullable octet_string<20> clientIdentifier = 3;
}
struct ThreadInterfaceScanResultStruct {
@@ -544,6 +550,9 @@ server cluster NetworkCommissioning = 49 {
octet_string<32> ssid = 0;
octet_string<64> credentials = 1;
optional int64u breadcrumb = 2;
+ optional octet_string<140> networkIdentity = 3;
+ optional octet_string<20> clientIdentifier = 4;
+ optional octet_string<32> possessionNonce = 5;
}
request struct AddOrUpdateThreadNetworkRequest {
@@ -578,6 +587,8 @@ server cluster NetworkCommissioning = 49 {
NetworkCommissioningStatusEnum networkingStatus = 0;
optional char_string<512> debugText = 1;
optional int8u networkIndex = 2;
+ optional octet_string<140> clientIdentity = 3;
+ optional octet_string<64> possessionSignature = 4;
}
response struct ConnectNetworkResponse = 7 {
@@ -1822,8 +1833,10 @@ endpoint 0 {
persist attribute localConfigDisabled default = 0;
callback attribute uniqueID;
callback attribute capabilityMinima;
+ callback attribute specificationVersion;
+ callback attribute maxPathsPerInvoke;
ram attribute featureMap default = 0;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
}
server cluster OtaSoftwareUpdateRequestor {
diff --git a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.zap b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.zap
index 55241805cf8a25..1e8c4ca9bcc558 100644
--- a/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.zap
+++ b/examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.zap
@@ -632,6 +632,38 @@
"maxInterval": 65534,
"reportableChange": 0
},
+ {
+ "name": "SpecificationVersion",
+ "code": 21,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int32u",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 1,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "MaxPathsPerInvoke",
+ "code": 22,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int16u",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 1,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "FeatureMap",
"code": 65532,
@@ -658,7 +690,7 @@
"storageOption": "RAM",
"singleton": 1,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
@@ -1832,7 +1864,7 @@
"code": 10,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
@@ -1848,7 +1880,7 @@
"code": 11,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
@@ -1864,7 +1896,7 @@
"code": 12,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
@@ -2660,7 +2692,7 @@
"reportableChange": 0
},
{
- "name": "ActiveNetworkFaults",
+ "name": "ActiveNetworkFaultsList",
"code": 62,
"mfgCode": null,
"side": "server",
diff --git a/examples/air-quality-sensor-app/linux/README.md b/examples/air-quality-sensor-app/linux/README.md
index 51798c23ef441f..110c1fed58cd01 100644
--- a/examples/air-quality-sensor-app/linux/README.md
+++ b/examples/air-quality-sensor-app/linux/README.md
@@ -131,7 +131,7 @@ $ echo '{"Name":"AirQuality","NewValue":3}' > /tmp/chip_air_quality_fifo_
Generate event `TemperatureMeasurement`, to change the temperate value.
```
-$ echo '{"Name":"TemperatureMeasurement","NewValue":18}' > /tmp/chip_air_quality_fifo_
+$ echo '{"Name":"TemperatureMeasurement","NewValue":1800}' > /tmp/chip_air_quality_fifo_
```
### Trigger Humidity change event
diff --git a/examples/air-quality-sensor-app/linux/main.cpp b/examples/air-quality-sensor-app/linux/main.cpp
index cad641e8971cdd..fddb23fb7b38a6 100644
--- a/examples/air-quality-sensor-app/linux/main.cpp
+++ b/examples/air-quality-sensor-app/linux/main.cpp
@@ -21,7 +21,7 @@
#include
#include
-#include
+#include
#if defined(CHIP_IMGUI_ENABLED) && CHIP_IMGUI_ENABLED
#include
diff --git a/examples/air-quality-sensor-app/telink/CMakeLists.txt b/examples/air-quality-sensor-app/telink/CMakeLists.txt
index fd5a5b14256426..908bea9eb73a98 100644
--- a/examples/air-quality-sensor-app/telink/CMakeLists.txt
+++ b/examples/air-quality-sensor-app/telink/CMakeLists.txt
@@ -19,6 +19,23 @@ get_filename_component(CHIP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/third_party/connect
get_filename_component(TELINK_COMMON ${CHIP_ROOT}/examples/platform/telink REALPATH)
get_filename_component(GEN_DIR ${CHIP_ROOT}/zzz_generated/ REALPATH)
+set(ignoreMe "${TLNK_MARS_BOARD}")
+
+if(${TLNK_MARS_BOARD} MATCHES y)
+ if(EXISTS "${CHIP_ROOT}/src/platform/telink/${BOARD}_mars.overlay")
+ set(MARS_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}_mars.overlay")
+ else()
+ unset(MARS_DTC_OVERLAY_FILE)
+ endif()
+ if(EXISTS "${CHIP_ROOT}/src/platform/telink/${BOARD}_mars.conf")
+ set(MARS_CONF_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}_mars.conf")
+ else()
+ unset(MARS_CONF_OVERLAY_FILE)
+ endif()
+else()
+ unset(MARS_CONF_OVERLAY_FILE)
+endif()
+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}.overlay")
set(LOCAL_DTC_OVERLAY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD}.overlay")
else()
@@ -41,14 +58,14 @@ endif()
if(DTC_OVERLAY_FILE)
set(DTC_OVERLAY_FILE
- "${DTC_OVERLAY_FILE} ${GLOBAL_DTC_OVERLAY_FILE} ${FLASH_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE}"
+ "${DTC_OVERLAY_FILE} ${GLOBAL_DTC_OVERLAY_FILE} ${MARS_DTC_OVERLAY_FILE} ${FLASH_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE}"
CACHE STRING "" FORCE
)
else()
- set(DTC_OVERLAY_FILE ${GLOBAL_DTC_OVERLAY_FILE} ${FLASH_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE})
+ set(DTC_OVERLAY_FILE ${GLOBAL_DTC_OVERLAY_FILE} ${MARS_DTC_OVERLAY_FILE} ${FLASH_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE})
endif()
-set(CONF_FILE prj.conf)
+set(CONF_FILE ${MARS_CONF_OVERLAY_FILE} prj.conf)
# Load NCS/Zephyr build system
list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/telink/chip-module)
@@ -78,10 +95,12 @@ target_sources(app PRIVATE
src/ZclCallbacks.cpp
${TELINK_COMMON}/common/src/mainCommon.cpp
${TELINK_COMMON}/common/src/AppTaskCommon.cpp
+ ${TELINK_COMMON}/common/src/SensorManagerCommon.cpp
${TELINK_COMMON}/util/src/LEDWidget.cpp
${TELINK_COMMON}/util/src/ButtonManager.cpp
${TELINK_COMMON}/util/src/ThreadUtil.cpp
${TELINK_COMMON}/util/src/PWMDevice.cpp
+ ${TELINK_COMMON}/util/src/WS2812Device.cpp
${CHIP_ROOT}/examples/air-quality-sensor-app/air-quality-sensor-common/src/air-quality-sensor-manager.cpp)
chip_configure_data_model(app
diff --git a/examples/air-quality-sensor-app/telink/include/AppTask.h b/examples/air-quality-sensor-app/telink/include/AppTask.h
index a1b55a9b83108f..659de081dbf01f 100644
--- a/examples/air-quality-sensor-app/telink/include/AppTask.h
+++ b/examples/air-quality-sensor-app/telink/include/AppTask.h
@@ -31,7 +31,8 @@ class AppTask : public AppTaskCommon
CHIP_ERROR Init(void);
- static void AirQualityActionEventHandler(AppEvent * aEvent);
+ static void AirQualitySensorUpdateTimerTimeoutCallback(k_timer * timer);
+ static void AirQualitySensorUpdateTimerEventHandler(AppEvent * aEvent);
static AppTask sAppTask;
};
diff --git a/examples/air-quality-sensor-app/telink/prj.conf b/examples/air-quality-sensor-app/telink/prj.conf
index 703e78efb7ed4a..b43fbe9636d9aa 100644
--- a/examples/air-quality-sensor-app/telink/prj.conf
+++ b/examples/air-quality-sensor-app/telink/prj.conf
@@ -22,12 +22,6 @@
CONFIG_CHIP=y
CONFIG_STD_CPP17=y
-# enable GPIO
-CONFIG_GPIO=y
-
-# enable PWM
-CONFIG_PWM=y
-
# CHIP configuration
CONFIG_CHIP_PROJECT_CONFIG="include/CHIPProjectConfig.h"
CONFIG_CHIP_OPENTHREAD_CONFIG="../../platform/telink/project_include/OpenThreadConfig.h"
diff --git a/examples/air-quality-sensor-app/telink/src/AppTask.cpp b/examples/air-quality-sensor-app/telink/src/AppTask.cpp
index 94988ea8bbe5a0..ac2f61b3c06f52 100644
--- a/examples/air-quality-sensor-app/telink/src/AppTask.cpp
+++ b/examples/air-quality-sensor-app/telink/src/AppTask.cpp
@@ -17,50 +17,100 @@
*/
#include "AppTask.h"
+#include "SensorManagerCommon.h"
#include
LOG_MODULE_DECLARE(app, CONFIG_CHIP_APP_LOG_LEVEL);
+using namespace chip;
using namespace ::chip::app::Clusters;
using namespace ::chip::app::Clusters::AirQuality;
-AppTask AppTask::sAppTask;
+namespace {
+k_timer sAirQualitySensorUpdateTimer;
+constexpr uint16_t kAirQualitySensorUpdateTimerPeriod = 10000; // 10s timer period
+} // namespace
-constexpr EndpointId kAirQualityEndpoint = 1;
+AppTask AppTask::sAppTask;
CHIP_ERROR AppTask::Init(void)
{
+ CHIP_ERROR err;
+
#if APP_USE_EXAMPLE_START_BUTTON
- SetExampleButtonCallbacks(AirQualityActionEventHandler);
+ SetExampleButtonCallbacks(AirQualitySensorUpdateTimerEventHandler);
#endif
InitCommonParts();
- AirQualitySensorManager::InitInstance(kAirQualityEndpoint);
+ err = SensorMgr().Init();
+ if (err != CHIP_NO_ERROR)
+ {
+ LOG_ERR("Init of the Sensor Manager failed");
+ return err;
+ }
+
+ // Initialize air quality sensor update timer
+ k_timer_init(&sAirQualitySensorUpdateTimer, &AppTask::AirQualitySensorUpdateTimerTimeoutCallback, nullptr);
+ k_timer_user_data_set(&sAirQualitySensorUpdateTimer, this);
+ k_timer_start(&sAirQualitySensorUpdateTimer, K_MSEC(kAirQualitySensorUpdateTimerPeriod), K_NO_WAIT);
+
+ AirQualitySensorManager::InitInstance(kExampleEndpointId);
return CHIP_NO_ERROR;
}
void AppTask::UpdateClusterState(void)
{
+ CHIP_ERROR ret;
AirQualitySensorManager * mInstance = AirQualitySensorManager::GetInstance();
+ int16_t temperature;
+ uint16_t humidity;
+
+ ret = SensorMgr().GetTempAndHumMeasurValue(&temperature, &humidity);
+ if (ret != CHIP_NO_ERROR)
+ {
+ LOG_ERR("Update of the Air Quality clusters failed");
+ return;
+ }
+
+ LOG_INF("Update Air Quality: temperature is (%d*0.01)°C, humidity is %d", temperature, humidity);
// Update AirQuality value
- mInstance->OnAirQualityChangeHandler(AirQualityEnum::kModerate);
+ mInstance->OnAirQualityChangeHandler(AirQualityEnum::kUnknown);
// Update Carbon Dioxide
- mInstance->OnCarbonDioxideMeasurementChangeHandler(400);
+ mInstance->OnCarbonDioxideMeasurementChangeHandler(0);
// Update Temperature value
- mInstance->OnTemperatureMeasurementChangeHandler(18);
+ mInstance->OnTemperatureMeasurementChangeHandler(temperature);
// Update Humidity value
- mInstance->OnHumidityMeasurementChangeHandler(60);
+ mInstance->OnHumidityMeasurementChangeHandler(humidity);
+}
+
+void AppTask::AirQualitySensorUpdateTimerTimeoutCallback(k_timer * timer)
+{
+ if (!timer)
+ {
+ return;
+ }
+
+ AppEvent event;
+ event.Type = AppEvent::kEventType_Timer;
+ event.Handler = AirQualitySensorUpdateTimerEventHandler;
+ sAppTask.PostEvent(&event);
}
-void AppTask::AirQualityActionEventHandler(AppEvent * aEvent)
+void AppTask::AirQualitySensorUpdateTimerEventHandler(AppEvent * aEvent)
{
- if (aEvent->Type == AppEvent::kEventType_Button)
+ if ((aEvent->Type == AppEvent::kEventType_Button) || (aEvent->Type == AppEvent::kEventType_Timer))
{
sAppTask.UpdateClusterState();
}
+
+ if (aEvent->Type == AppEvent::kEventType_Timer)
+ {
+ // Start next timer to measurement the air quality sensor
+ k_timer_start(&sAirQualitySensorUpdateTimer, K_MSEC(kAirQualitySensorUpdateTimerPeriod), K_NO_WAIT);
+ }
}
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 191a87a0088dc2..3a6187874db2b0 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
@@ -143,14 +143,19 @@ provisional server cluster Scenes = 5 {
AttributeValuePair attributeValueList[] = 1;
}
- readonly attribute int8u sceneCount = 0;
- readonly attribute int8u currentScene = 1;
- readonly attribute group_id currentGroup = 2;
- readonly attribute boolean sceneValid = 3;
+ fabric_scoped struct SceneInfoStruct {
+ int8u sceneCount = 0;
+ fabric_sensitive int8u currentScene = 1;
+ fabric_sensitive group_id currentGroup = 2;
+ fabric_sensitive boolean sceneValid = 3;
+ int8u remainingCapacity = 4;
+ fabric_idx fabricIndex = 254;
+ }
+
readonly attribute NameSupportBitmap nameSupport = 4;
readonly attribute nullable node_id lastConfiguredBy = 5;
readonly attribute int16u sceneTableSize = 6;
- readonly attribute int8u remainingCapacity = 7;
+ readonly attribute SceneInfoStruct fabricSceneInfo[] = 7;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -436,12 +441,12 @@ server cluster OnOffSwitchConfiguration = 7 {
/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */
server cluster LevelControl = 8 {
- enum MoveMode : enum8 {
+ enum MoveModeEnum : enum8 {
kUp = 0;
kDown = 1;
}
- enum StepMode : enum8 {
+ enum StepModeEnum : enum8 {
kUp = 0;
kDown = 1;
}
@@ -452,7 +457,7 @@ server cluster LevelControl = 8 {
kFrequency = 0x4;
}
- bitmap LevelControlOptions : bitmap8 {
+ bitmap OptionsBitmap : bitmap8 {
kExecuteIfOff = 0x1;
kCoupleColorTempToLevel = 0x2;
}
@@ -464,7 +469,7 @@ server cluster LevelControl = 8 {
readonly attribute int16u currentFrequency = 4;
readonly attribute int16u minFrequency = 5;
readonly attribute int16u maxFrequency = 6;
- attribute LevelControlOptions options = 15;
+ attribute OptionsBitmap options = 15;
attribute int16u onOffTransitionTime = 16;
attribute nullable int8u onLevel = 17;
attribute nullable int16u onTransitionTime = 18;
@@ -481,55 +486,55 @@ server cluster LevelControl = 8 {
request struct MoveToLevelRequest {
int8u level = 0;
nullable int16u transitionTime = 1;
- LevelControlOptions optionsMask = 2;
- LevelControlOptions optionsOverride = 3;
+ OptionsBitmap optionsMask = 2;
+ OptionsBitmap optionsOverride = 3;
}
request struct MoveRequest {
- MoveMode moveMode = 0;
+ MoveModeEnum moveMode = 0;
nullable int8u rate = 1;
- LevelControlOptions optionsMask = 2;
- LevelControlOptions optionsOverride = 3;
+ OptionsBitmap optionsMask = 2;
+ OptionsBitmap optionsOverride = 3;
}
request struct StepRequest {
- StepMode stepMode = 0;
+ StepModeEnum stepMode = 0;
int8u stepSize = 1;
nullable int16u transitionTime = 2;
- LevelControlOptions optionsMask = 3;
- LevelControlOptions optionsOverride = 4;
+ OptionsBitmap optionsMask = 3;
+ OptionsBitmap optionsOverride = 4;
}
request struct StopRequest {
- LevelControlOptions optionsMask = 0;
- LevelControlOptions optionsOverride = 1;
+ OptionsBitmap optionsMask = 0;
+ OptionsBitmap optionsOverride = 1;
}
request struct MoveToLevelWithOnOffRequest {
int8u level = 0;
nullable int16u transitionTime = 1;
- LevelControlOptions optionsMask = 2;
- LevelControlOptions optionsOverride = 3;
+ OptionsBitmap optionsMask = 2;
+ OptionsBitmap optionsOverride = 3;
}
request struct MoveWithOnOffRequest {
- MoveMode moveMode = 0;
+ MoveModeEnum moveMode = 0;
nullable int8u rate = 1;
- LevelControlOptions optionsMask = 2;
- LevelControlOptions optionsOverride = 3;
+ OptionsBitmap optionsMask = 2;
+ OptionsBitmap optionsOverride = 3;
}
request struct StepWithOnOffRequest {
- StepMode stepMode = 0;
+ StepModeEnum stepMode = 0;
int8u stepSize = 1;
nullable int16u transitionTime = 2;
- LevelControlOptions optionsMask = 3;
- LevelControlOptions optionsOverride = 4;
+ OptionsBitmap optionsMask = 3;
+ OptionsBitmap optionsOverride = 4;
}
request struct StopWithOnOffRequest {
- LevelControlOptions optionsMask = 0;
- LevelControlOptions optionsOverride = 1;
+ OptionsBitmap optionsMask = 0;
+ OptionsBitmap optionsOverride = 1;
}
command MoveToLevel(MoveToLevelRequest): DefaultSuccess = 0;
@@ -845,6 +850,8 @@ server cluster BasicInformation = 40 {
readonly attribute char_string<32> uniqueID = 18;
readonly attribute CapabilityMinimaStruct capabilityMinima = 19;
readonly attribute ProductAppearanceStruct productAppearance = 20;
+ readonly attribute int32u specificationVersion = 21;
+ readonly attribute int16u maxPathsPerInvoke = 22;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1072,7 +1079,7 @@ server cluster UnitLocalization = 45 {
kTemperatureUnit = 0x1;
}
- attribute TempUnitEnum temperatureUnit = 0;
+ attribute access(write: manage) TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1364,13 +1371,13 @@ server cluster GeneralCommissioning = 48 {
request struct SetRegulatoryConfigRequest {
RegulatoryLocationTypeEnum newRegulatoryConfig = 0;
- char_string countryCode = 1;
+ char_string<2> countryCode = 1;
int64u breadcrumb = 2;
}
response struct ArmFailSafeResponse = 1 {
CommissioningErrorEnum errorCode = 0;
- char_string debugText = 1;
+ char_string<128> debugText = 1;
}
response struct SetRegulatoryConfigResponse = 3 {
@@ -1419,6 +1426,7 @@ server cluster NetworkCommissioning = 49 {
kWiFiNetworkInterface = 0x1;
kThreadNetworkInterface = 0x2;
kEthernetNetworkInterface = 0x4;
+ kPerDeviceCredentials = 0x8;
}
bitmap ThreadCapabilitiesBitmap : bitmap16 {
@@ -1435,11 +1443,14 @@ server cluster NetworkCommissioning = 49 {
kWPAPersonal = 0x4;
kWPA2Personal = 0x8;
kWPA3Personal = 0x10;
+ kWPA3MatterPDC = 0x20;
}
struct NetworkInfoStruct {
octet_string<32> networkID = 0;
boolean connected = 1;
+ optional nullable octet_string<20> networkIdentifier = 2;
+ optional nullable octet_string<20> clientIdentifier = 3;
}
struct ThreadInterfaceScanResultStruct {
@@ -1486,6 +1497,9 @@ server cluster NetworkCommissioning = 49 {
octet_string<32> ssid = 0;
octet_string<64> credentials = 1;
optional int64u breadcrumb = 2;
+ optional octet_string<140> networkIdentity = 3;
+ optional octet_string<20> clientIdentifier = 4;
+ optional octet_string<32> possessionNonce = 5;
}
request struct AddOrUpdateThreadNetworkRequest {
@@ -1520,6 +1534,8 @@ server cluster NetworkCommissioning = 49 {
NetworkCommissioningStatusEnum networkingStatus = 0;
optional char_string<512> debugText = 1;
optional int8u networkIndex = 2;
+ optional octet_string<140> clientIdentity = 3;
+ optional octet_string<64> possessionSignature = 4;
}
response struct ConnectNetworkResponse = 7 {
@@ -2467,74 +2483,6 @@ server cluster BooleanState = 69 {
readonly attribute int16u clusterRevision = 65533;
}
-/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
-server cluster IcdManagement = 70 {
- bitmap Feature : bitmap32 {
- kCheckInProtocolSupport = 0x1;
- kUserActiveModeTrigger = 0x2;
- kLongIdleTimeSupport = 0x4;
- }
-
- bitmap UserActiveModeTriggerBitmap : bitmap32 {
- kPowerCycle = 0x1;
- kSettingsMenu = 0x2;
- kCustomInstruction = 0x4;
- kDeviceManual = 0x8;
- kActuateSensor = 0x10;
- kActuateSensorSeconds = 0x20;
- kActuateSensorTimes = 0x40;
- kActuateSensorLightsBlink = 0x80;
- kResetButton = 0x100;
- kResetButtonLightsBlink = 0x200;
- kResetButtonSeconds = 0x400;
- kResetButtonTimes = 0x800;
- kSetupButton = 0x1000;
- kSetupButtonSeconds = 0x2000;
- kSetupButtonLightsBlink = 0x4000;
- kSetupButtonTimes = 0x8000;
- kAppDefinedButton = 0x10000;
- }
-
- fabric_scoped struct MonitoringRegistrationStruct {
- fabric_sensitive node_id checkInNodeID = 1;
- fabric_sensitive int64u monitoredSubject = 2;
- fabric_idx fabricIndex = 254;
- }
-
- readonly attribute int32u idleModeDuration = 0;
- readonly attribute int32u activeModeDuration = 1;
- readonly attribute int16u activeModeThreshold = 2;
- readonly attribute access(read: administer) MonitoringRegistrationStruct registeredClients[] = 3;
- readonly attribute access(read: administer) int32u ICDCounter = 4;
- readonly attribute int16u clientsSupportedPerFabric = 5;
- readonly attribute command_id generatedCommandList[] = 65528;
- readonly attribute command_id acceptedCommandList[] = 65529;
- readonly attribute event_id eventList[] = 65530;
- readonly attribute attrib_id attributeList[] = 65531;
- readonly attribute bitmap32 featureMap = 65532;
- readonly attribute int16u clusterRevision = 65533;
-
- request struct RegisterClientRequest {
- node_id checkInNodeID = 0;
- int64u monitoredSubject = 1;
- octet_string<16> key = 2;
- optional octet_string<16> verificationKey = 3;
- }
-
- request struct UnregisterClientRequest {
- node_id checkInNodeID = 0;
- optional octet_string<16> verificationKey = 1;
- }
-
- response struct RegisterClientResponse = 1 {
- int32u ICDCounter = 0;
- }
-
- fabric command access(invoke: manage) RegisterClient(RegisterClientRequest): RegisterClientResponse = 0;
- fabric command access(invoke: manage) UnregisterClient(UnregisterClientRequest): DefaultSuccess = 2;
- command access(invoke: manage) StayActiveRequest(): DefaultSuccess = 3;
-}
-
/** Attributes and commands for selecting a mode from a list of supported options. */
server cluster ModeSelect = 80 {
bitmap Feature : bitmap32 {
@@ -3764,9 +3712,28 @@ provisional server cluster FanControl = 514 {
/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */
server cluster ThermostatUserInterfaceConfiguration = 516 {
- attribute enum8 temperatureDisplayMode = 0;
- attribute access(write: manage) enum8 keypadLockout = 1;
- attribute access(write: manage) enum8 scheduleProgrammingVisibility = 2;
+ enum KeypadLockoutEnum : enum8 {
+ kNoLockout = 0;
+ kLockout1 = 1;
+ kLockout2 = 2;
+ kLockout3 = 3;
+ kLockout4 = 4;
+ kLockout5 = 5;
+ }
+
+ enum ScheduleProgrammingVisibilityEnum : enum8 {
+ kScheduleProgrammingPermitted = 0;
+ kScheduleProgrammingDenied = 1;
+ }
+
+ enum TemperatureDisplayModeEnum : enum8 {
+ kCelsius = 0;
+ kFahrenheit = 1;
+ }
+
+ attribute TemperatureDisplayModeEnum temperatureDisplayMode = 0;
+ attribute access(write: manage) KeypadLockoutEnum keypadLockout = 1;
+ attribute access(write: manage) ScheduleProgrammingVisibilityEnum scheduleProgrammingVisibility = 2;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -4768,7 +4735,7 @@ server cluster RadonConcentrationMeasurement = 1071 {
/** This cluster provides an interface for managing low power mode on a device that supports the Wake On LAN protocol. */
server cluster WakeOnLan = 1283 {
- readonly attribute char_string<32> MACAddress = 0;
+ readonly attribute char_string<12> MACAddress = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -5260,12 +5227,14 @@ endpoint 0 {
callback attribute uniqueID;
callback attribute capabilityMinima;
callback attribute productAppearance;
+ callback attribute specificationVersion;
+ callback attribute maxPathsPerInvoke;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
}
server cluster OtaSoftwareUpdateRequestor {
@@ -5647,25 +5616,6 @@ endpoint 0 {
ram attribute clusterRevision default = 1;
}
- server cluster IcdManagement {
- callback attribute idleModeDuration default = 500;
- callback attribute activeModeDuration default = 300;
- callback attribute activeModeThreshold default = 300;
- callback attribute registeredClients;
- callback attribute ICDCounter default = 0;
- callback attribute clientsSupportedPerFabric default = 2;
- callback attribute generatedCommandList;
- callback attribute acceptedCommandList;
- callback attribute attributeList;
- ram attribute featureMap default = 1;
- ram attribute clusterRevision default = 2;
-
- handle command RegisterClient;
- handle command RegisterClientResponse;
- handle command UnregisterClient;
- handle command StayActiveRequest;
- }
-
server cluster RelativeHumidityMeasurement {
ram attribute measuredValue;
ram attribute minMeasuredValue default = 0;
@@ -5727,19 +5677,15 @@ endpoint 1 {
}
server cluster Scenes {
- callback attribute sceneCount default = 0x00;
- ram attribute currentScene default = 0x00;
- ram attribute currentGroup default = 0x0000;
- ram attribute sceneValid default = 0x00;
ram attribute nameSupport default = 0x80;
ram attribute lastConfiguredBy;
ram attribute sceneTableSize default = 16;
- callback attribute remainingCapacity default = 8;
+ callback attribute fabricSceneInfo;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
- ram attribute featureMap default = 7;
+ ram attribute featureMap default = 15;
ram attribute clusterRevision default = 5;
handle command AddScene;
@@ -6811,19 +6757,15 @@ endpoint 2 {
}
server cluster Scenes {
- callback attribute sceneCount default = 0x00;
- ram attribute currentScene default = 0x00;
- ram attribute currentGroup default = 0x0000;
- ram attribute sceneValid default = 0x00;
ram attribute nameSupport default = 0x80;
ram attribute lastConfiguredBy;
ram attribute sceneTableSize default = 16;
- callback attribute remainingCapacity default = 8;
+ callback attribute fabricSceneInfo;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
- ram attribute featureMap default = 7;
+ ram attribute featureMap default = 15;
ram attribute clusterRevision default = 5;
handle command AddScene;
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
index 7984e376753968..5f391a52fa267a 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
@@ -17,6 +17,12 @@
}
],
"package": [
+ {
+ "pathRelativity": "relativeToZap",
+ "path": "../../../src/app/zap-templates/app-templates.json",
+ "type": "gen-templates-json",
+ "version": "chip-v1"
+ },
{
"pathRelativity": "relativeToZap",
"path": "../../../src/app/zap-templates/zcl/zcl-with-test-extensions.json",
@@ -24,12 +30,6 @@
"category": "matter",
"version": 1,
"description": "Matter SDK ZCL data with some extensions"
- },
- {
- "pathRelativity": "relativeToZap",
- "path": "../../../src/app/zap-templates/app-templates.json",
- "type": "gen-templates-json",
- "version": "chip-v1"
}
],
"endpointTypes": [
@@ -1074,6 +1074,38 @@
"maxInterval": 65534,
"reportableChange": 0
},
+ {
+ "name": "SpecificationVersion",
+ "code": 21,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int32u",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 1,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "MaxPathsPerInvoke",
+ "code": 22,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int16u",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 1,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "GeneratedCommandList",
"code": 65528,
@@ -1164,7 +1196,7 @@
"storageOption": "RAM",
"singleton": 1,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
@@ -3294,7 +3326,7 @@
"code": 10,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
@@ -3310,7 +3342,7 @@
"code": 11,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
@@ -3326,7 +3358,7 @@
"code": 12,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
@@ -4122,7 +4154,7 @@
"reportableChange": 0
},
{
- "name": "ActiveNetworkFaults",
+ "name": "ActiveNetworkFaultsList",
"code": 62,
"mfgCode": null,
"side": "server",
@@ -5835,226 +5867,6 @@
}
]
},
- {
- "name": "ICD Management",
- "code": 70,
- "mfgCode": null,
- "define": "ICD_MANAGEMENT_CLUSTER",
- "side": "server",
- "enabled": 1,
- "commands": [
- {
- "name": "RegisterClient",
- "code": 0,
- "mfgCode": null,
- "source": "client",
- "isIncoming": 1,
- "isEnabled": 1
- },
- {
- "name": "RegisterClientResponse",
- "code": 1,
- "mfgCode": null,
- "source": "server",
- "isIncoming": 0,
- "isEnabled": 1
- },
- {
- "name": "UnregisterClient",
- "code": 2,
- "mfgCode": null,
- "source": "client",
- "isIncoming": 1,
- "isEnabled": 1
- },
- {
- "name": "StayActiveRequest",
- "code": 3,
- "mfgCode": null,
- "source": "client",
- "isIncoming": 1,
- "isEnabled": 1
- }
- ],
- "attributes": [
- {
- "name": "IdleModeDuration",
- "code": 0,
- "mfgCode": null,
- "side": "server",
- "type": "int32u",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "500",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "ActiveModeDuration",
- "code": 1,
- "mfgCode": null,
- "side": "server",
- "type": "int32u",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "300",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "ActiveModeThreshold",
- "code": 2,
- "mfgCode": null,
- "side": "server",
- "type": "int16u",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "300",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "RegisteredClients",
- "code": 3,
- "mfgCode": null,
- "side": "server",
- "type": "array",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "ICDCounter",
- "code": 4,
- "mfgCode": null,
- "side": "server",
- "type": "int32u",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "ClientsSupportedPerFabric",
- "code": 5,
- "mfgCode": null,
- "side": "server",
- "type": "int16u",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "2",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "GeneratedCommandList",
- "code": 65528,
- "mfgCode": null,
- "side": "server",
- "type": "array",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "AcceptedCommandList",
- "code": 65529,
- "mfgCode": null,
- "side": "server",
- "type": "array",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "AttributeList",
- "code": 65531,
- "mfgCode": null,
- "side": "server",
- "type": "array",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "FeatureMap",
- "code": 65532,
- "mfgCode": null,
- "side": "server",
- "type": "bitmap32",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "1",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "ClusterRevision",
- "code": 65533,
- "mfgCode": null,
- "side": "server",
- "type": "int16u",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "2",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- }
- ]
- },
{
"name": "Relative Humidity Measurement",
"code": 1029,
@@ -6814,76 +6626,12 @@
}
],
"attributes": [
- {
- "name": "SceneCount",
- "code": 0,
- "mfgCode": null,
- "side": "server",
- "type": "int8u",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "CurrentScene",
- "code": 1,
- "mfgCode": null,
- "side": "server",
- "type": "int8u",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "CurrentGroup",
- "code": 2,
- "mfgCode": null,
- "side": "server",
- "type": "group_id",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0000",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "SceneValid",
- "code": 3,
- "mfgCode": null,
- "side": "server",
- "type": "boolean",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
{
"name": "NameSupport",
"code": 4,
"mfgCode": null,
"side": "server",
- "type": "bitmap8",
+ "type": "NameSupportBitmap",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -6927,16 +6675,16 @@
"reportableChange": 0
},
{
- "name": "RemainingCapacity",
+ "name": "FabricSceneInfo",
"code": 7,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "array",
"included": 1,
- "storageOption": "External",
+ "storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "8",
+ "defaultValue": "",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
@@ -7016,7 +6764,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "7",
+ "defaultValue": "15",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
@@ -7609,7 +7357,7 @@
"code": 15,
"mfgCode": null,
"side": "server",
- "type": "LevelControlOptions",
+ "type": "OptionsBitmap",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -13253,7 +13001,7 @@
"code": 0,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "TemperatureDisplayModeEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -13269,7 +13017,7 @@
"code": 1,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "KeypadLockoutEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -13285,7 +13033,7 @@
"code": 2,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "ScheduleProgrammingVisibilityEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -14856,7 +14604,7 @@
"code": 3,
"mfgCode": null,
"side": "server",
- "type": "temperature",
+ "type": "int16u",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -20406,76 +20154,12 @@
}
],
"attributes": [
- {
- "name": "SceneCount",
- "code": 0,
- "mfgCode": null,
- "side": "server",
- "type": "int8u",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "CurrentScene",
- "code": 1,
- "mfgCode": null,
- "side": "server",
- "type": "int8u",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "CurrentGroup",
- "code": 2,
- "mfgCode": null,
- "side": "server",
- "type": "group_id",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0000",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "SceneValid",
- "code": 3,
- "mfgCode": null,
- "side": "server",
- "type": "boolean",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
{
"name": "NameSupport",
"code": 4,
"mfgCode": null,
"side": "server",
- "type": "bitmap8",
+ "type": "NameSupportBitmap",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -20519,16 +20203,16 @@
"reportableChange": 0
},
{
- "name": "RemainingCapacity",
+ "name": "FabricSceneInfo",
"code": 7,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "array",
"included": 1,
- "storageOption": "External",
+ "storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "8",
+ "defaultValue": "",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
@@ -20608,7 +20292,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "7",
+ "defaultValue": "15",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
@@ -21902,4 +21586,6 @@
"networkId": 0
}
]
-}
\ No newline at end of file
+}
+
+
diff --git a/examples/all-clusters-app/ameba/README.md b/examples/all-clusters-app/ameba/README.md
index 139512593a0fef..0ccc472986ed53 100644
--- a/examples/all-clusters-app/ameba/README.md
+++ b/examples/all-clusters-app/ameba/README.md
@@ -27,11 +27,11 @@ The CHIP demo application is supported on
- Pull docker image:
- $ docker pull ghcr.io/project-chip/chip-build-ameba:24
+ $ docker pull ghcr.io/project-chip/chip-build-ameba:26
- Run docker container:
- $ docker run -it -v ${CHIP_DIR}:/root/chip ghcr.io/project-chip/chip-build-ameba:24
+ $ docker run -it -v ${CHIP_DIR}:/root/chip ghcr.io/project-chip/chip-build-ameba:26
- Setup build environment:
diff --git a/examples/all-clusters-app/ameba/main/include/LevelControlCommands.h b/examples/all-clusters-app/ameba/main/include/LevelControlCommands.h
index da82f0f6bbdaf9..f596534992e1bf 100644
--- a/examples/all-clusters-app/ameba/main/include/LevelControlCommands.h
+++ b/examples/all-clusters-app/ameba/main/include/LevelControlCommands.h
@@ -20,6 +20,8 @@
#include "controller/ReadInteraction.h"
#include
+#include
+
#if CONFIG_ENABLE_CHIP_SHELL
#include "lib/shell/Engine.h"
#include "lib/shell/commands/Help.h"
@@ -27,7 +29,9 @@
using namespace chip;
using namespace chip::app;
-using chip::app::Clusters::LevelControl::LevelControlOptions;
+using chip::app::Clusters::LevelControl::MoveModeEnum;
+using chip::app::Clusters::LevelControl::OptionsBitmap;
+using chip::app::Clusters::LevelControl::StepModeEnum;
#if CONFIG_ENABLE_CHIP_SHELL
using Shell::Engine;
@@ -40,6 +44,16 @@ Engine sShellSwitchLevelControlReadSubCommands;
Engine sShellSwitchGroupsLevelControlSubCommands;
#endif // defined(ENABLE_CHIP_SHELL)
+namespace {
+
+template
+T from_underlying(std::underlying_type_t value)
+{
+ return static_cast(value);
+}
+
+} // namespace
+
void ProcessLevelControlUnicastBindingRead(BindingCommandData * data, const EmberBindingTableEntry & binding,
OperationalDeviceProxy * peer_device)
{
@@ -159,34 +173,34 @@ void ProcessLevelControlUnicastBindingCommand(BindingCommandData * data, const E
case Clusters::LevelControl::Commands::MoveToLevel::Id:
moveToLevelCommand.level = static_cast(data->args[0]);
moveToLevelCommand.transitionTime = static_cast>(data->args[1]);
- moveToLevelCommand.optionsMask = static_cast>(data->args[2]);
- moveToLevelCommand.optionsOverride = static_cast>(data->args[3]);
+ moveToLevelCommand.optionsMask = static_cast>(data->args[2]);
+ moveToLevelCommand.optionsOverride = static_cast>(data->args[3]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
moveToLevelCommand, onSuccess, onFailure);
break;
case Clusters::LevelControl::Commands::Move::Id:
- moveCommand.moveMode = static_cast(data->args[0]);
+ moveCommand.moveMode = from_underlying(data->args[0]);
moveCommand.rate = static_cast>(data->args[1]);
- moveCommand.optionsMask = static_cast>(data->args[2]);
- moveCommand.optionsOverride = static_cast>(data->args[3]);
+ moveCommand.optionsMask = static_cast>(data->args[2]);
+ moveCommand.optionsOverride = static_cast>(data->args[3]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
moveCommand, onSuccess, onFailure);
break;
case Clusters::LevelControl::Commands::Step::Id:
- stepCommand.stepMode = static_cast(data->args[0]);
+ stepCommand.stepMode = from_underlying(data->args[0]);
stepCommand.stepSize = static_cast(data->args[1]);
stepCommand.transitionTime = static_cast>(data->args[2]);
- stepCommand.optionsMask = static_cast>(data->args[3]);
- stepCommand.optionsOverride = static_cast>(data->args[4]);
+ stepCommand.optionsMask = static_cast>(data->args[3]);
+ stepCommand.optionsOverride = static_cast>(data->args[4]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
stepCommand, onSuccess, onFailure);
break;
case Clusters::LevelControl::Commands::Stop::Id:
- stopCommand.optionsMask = static_cast>(data->args[0]);
- stopCommand.optionsOverride = static_cast>(data->args[1]);
+ stopCommand.optionsMask = static_cast>(data->args[0]);
+ stopCommand.optionsOverride = static_cast>(data->args[1]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
stopCommand, onSuccess, onFailure);
break;
@@ -194,34 +208,34 @@ void ProcessLevelControlUnicastBindingCommand(BindingCommandData * data, const E
case Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Id:
moveToLevelWithOnOffCommand.level = static_cast(data->args[0]);
moveToLevelWithOnOffCommand.transitionTime = static_cast>(data->args[1]);
- moveToLevelWithOnOffCommand.optionsMask = static_cast>(data->args[2]);
- moveToLevelWithOnOffCommand.optionsOverride = static_cast>(data->args[3]);
+ moveToLevelWithOnOffCommand.optionsMask = static_cast>(data->args[2]);
+ moveToLevelWithOnOffCommand.optionsOverride = static_cast>(data->args[3]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
moveToLevelWithOnOffCommand, onSuccess, onFailure);
break;
case Clusters::LevelControl::Commands::MoveWithOnOff::Id:
- moveWithOnOffCommand.moveMode = static_cast(data->args[0]);
+ moveWithOnOffCommand.moveMode = from_underlying(data->args[0]);
moveWithOnOffCommand.rate = static_cast>(data->args[1]);
- moveWithOnOffCommand.optionsMask = static_cast>(data->args[2]);
- moveWithOnOffCommand.optionsOverride = static_cast>(data->args[3]);
+ moveWithOnOffCommand.optionsMask = static_cast>(data->args[2]);
+ moveWithOnOffCommand.optionsOverride = static_cast>(data->args[3]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
moveWithOnOffCommand, onSuccess, onFailure);
break;
case Clusters::LevelControl::Commands::StepWithOnOff::Id:
- stepWithOnOffCommand.stepMode = static_cast(data->args[0]);
+ stepWithOnOffCommand.stepMode = from_underlying(data->args[0]);
stepWithOnOffCommand.stepSize = static_cast(data->args[1]);
stepWithOnOffCommand.transitionTime = static_cast>(data->args[2]);
- stepWithOnOffCommand.optionsMask = static_cast>(data->args[3]);
- stepWithOnOffCommand.optionsOverride = static_cast>(data->args[4]);
+ stepWithOnOffCommand.optionsMask = static_cast>(data->args[3]);
+ stepWithOnOffCommand.optionsOverride = static_cast>(data->args[4]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
stepWithOnOffCommand, onSuccess, onFailure);
break;
case Clusters::LevelControl::Commands::StopWithOnOff::Id:
- stopWithOnOffCommand.optionsMask = static_cast>(data->args[0]);
- stopWithOnOffCommand.optionsOverride = static_cast>(data->args[1]);
+ stopWithOnOffCommand.optionsMask = static_cast>(data->args[0]);
+ stopWithOnOffCommand.optionsOverride = static_cast>(data->args[1]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
stopWithOnOffCommand, onSuccess, onFailure);
break;
@@ -246,62 +260,62 @@ void ProcessLevelControlGroupBindingCommand(BindingCommandData * data, const Emb
case Clusters::LevelControl::Commands::MoveToLevel::Id:
moveToLevelCommand.level = static_cast(data->args[0]);
moveToLevelCommand.transitionTime = static_cast>(data->args[1]);
- moveToLevelCommand.optionsMask = static_cast>(data->args[2]);
- moveToLevelCommand.optionsOverride = static_cast>(data->args[3]);
+ moveToLevelCommand.optionsMask = static_cast>(data->args[2]);
+ moveToLevelCommand.optionsOverride = static_cast>(data->args[3]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, moveToLevelCommand);
break;
case Clusters::LevelControl::Commands::Move::Id:
- moveCommand.moveMode = static_cast(data->args[0]);
+ moveCommand.moveMode = from_underlying(data->args[0]);
moveCommand.rate = static_cast>(data->args[1]);
- moveCommand.optionsMask = static_cast>(data->args[2]);
- moveCommand.optionsOverride = static_cast>(data->args[3]);
+ moveCommand.optionsMask = static_cast>(data->args[2]);
+ moveCommand.optionsOverride = static_cast>(data->args[3]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, moveCommand);
break;
case Clusters::LevelControl::Commands::Step::Id:
- stepCommand.stepMode = static_cast(data->args[0]);
+ stepCommand.stepMode = from_underlying(data->args[0]);
stepCommand.stepSize = static_cast(data->args[1]);
stepCommand.transitionTime = static_cast>(data->args[2]);
- stepCommand.optionsMask = static_cast>(data->args[3]);
- stepCommand.optionsOverride = static_cast>(data->args[4]);
+ stepCommand.optionsMask = static_cast>(data->args[3]);
+ stepCommand.optionsOverride = static_cast>(data->args[4]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, stepCommand);
break;
case Clusters::LevelControl::Commands::Stop::Id:
- stopCommand.optionsMask = static_cast>(data->args[0]);
- stopCommand.optionsOverride = static_cast>(data->args[1]);
+ stopCommand.optionsMask = static_cast>(data->args[0]);
+ stopCommand.optionsOverride = static_cast>(data->args[1]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, stopCommand);
break;
case Clusters::LevelControl::Commands::MoveToLevelWithOnOff::Id:
moveToLevelWithOnOffCommand.level = static_cast(data->args[0]);
moveToLevelWithOnOffCommand.transitionTime = static_cast>(data->args[1]);
- moveToLevelWithOnOffCommand.optionsMask = static_cast>(data->args[2]);
- moveToLevelWithOnOffCommand.optionsOverride = static_cast>(data->args[3]);
+ moveToLevelWithOnOffCommand.optionsMask = static_cast>(data->args[2]);
+ moveToLevelWithOnOffCommand.optionsOverride = static_cast>(data->args[3]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, moveToLevelWithOnOffCommand);
break;
case Clusters::LevelControl::Commands::MoveWithOnOff::Id:
- moveWithOnOffCommand.moveMode = static_cast(data->args[0]);
+ moveWithOnOffCommand.moveMode = from_underlying(data->args[0]);
moveWithOnOffCommand.rate = static_cast>(data->args[1]);
- moveWithOnOffCommand.optionsMask = static_cast>(data->args[2]);
- moveWithOnOffCommand.optionsOverride = static_cast>(data->args[3]);
+ moveWithOnOffCommand.optionsMask = static_cast>(data->args[2]);
+ moveWithOnOffCommand.optionsOverride = static_cast>(data->args[3]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, moveWithOnOffCommand);
break;
case Clusters::LevelControl::Commands::StepWithOnOff::Id:
- stepWithOnOffCommand.stepMode = static_cast(data->args[0]);
+ stepWithOnOffCommand.stepMode = from_underlying(data->args[0]);
stepWithOnOffCommand.stepSize = static_cast(data->args[1]);
stepWithOnOffCommand.transitionTime = static_cast>(data->args[2]);
- stepWithOnOffCommand.optionsMask = static_cast>(data->args[3]);
- stepWithOnOffCommand.optionsOverride = static_cast>(data->args[4]);
+ stepWithOnOffCommand.optionsMask = static_cast>(data->args[3]);
+ stepWithOnOffCommand.optionsOverride = static_cast>(data->args[4]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, stepWithOnOffCommand);
break;
case Clusters::LevelControl::Commands::StopWithOnOff::Id:
- stopWithOnOffCommand.optionsMask = static_cast>(data->args[0]);
- stopWithOnOffCommand.optionsOverride = static_cast>(data->args[1]);
+ stopWithOnOffCommand.optionsMask = static_cast>(data->args[0]);
+ stopWithOnOffCommand.optionsOverride = static_cast>(data->args[1]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, stopWithOnOffCommand);
break;
}
diff --git a/examples/all-clusters-app/linux/BUILD.gn b/examples/all-clusters-app/linux/BUILD.gn
index e41cb9843c42c7..215f79f7540241 100644
--- a/examples/all-clusters-app/linux/BUILD.gn
+++ b/examples/all-clusters-app/linux/BUILD.gn
@@ -48,9 +48,6 @@ source_set("chip-all-clusters-common") {
deps = [
"${chip_root}/examples/all-clusters-app/all-clusters-common",
"${chip_root}/examples/platform/linux:app-main",
-
- # Issue 29397 for the icd:cluster dep
- "${chip_root}/src/app/icd:cluster",
"${chip_root}/src/app/tests/suites/credentials:dac_provider",
"${chip_root}/src/lib",
"${chip_root}/third_party/jsoncpp",
diff --git a/examples/all-clusters-app/linux/main-common.cpp b/examples/all-clusters-app/linux/main-common.cpp
index a6deafde128983..b477555a3643c3 100644
--- a/examples/all-clusters-app/linux/main-common.cpp
+++ b/examples/all-clusters-app/linux/main-common.cpp
@@ -27,6 +27,7 @@
#include "resource-monitoring-delegates.h"
#include "rvc-modes.h"
#include "tcc-mode.h"
+#include
#include
#include
#include
@@ -46,10 +47,6 @@
#include
#include
-#include
-
-#include
-
using namespace chip;
using namespace chip::app;
using namespace chip::DeviceLayer;
@@ -217,11 +214,6 @@ void ApplicationInit()
#endif
Clusters::TemperatureControl::SetInstance(&sAppSupportedTemperatureLevelsDelegate);
- // Issue 29397
- // Somehow All-cluster-app test the ICDManagementServer cluster without having
- // CHIP_CONFIG_ENABLE_ICD_SERVER set to 1.
- ICDManagementServer::GetInstance().SetSymmetricKeystore(Server::GetInstance().GetSessionKeystore());
-
SetTagList(/* endpoint= */ 0, Span(gEp0TagList));
SetTagList(/* endpoint= */ 1, Span(gEp1TagList));
SetTagList(/* endpoint= */ 2, Span(gEp2TagList));
diff --git a/examples/all-clusters-app/nrfconnect/README.md b/examples/all-clusters-app/nrfconnect/README.md
index a3e2edb3deac69..18df16f5e11654 100644
--- a/examples/all-clusters-app/nrfconnect/README.md
+++ b/examples/all-clusters-app/nrfconnect/README.md
@@ -176,93 +176,63 @@ communicate with it using the
Before building the example, check out the Matter repository and sync submodules
using the following command:
- $ git submodule update --init
+ $ python3 scripts/checkout_submodules.py --shallow --platform nrfconnect
-The example requires a specific revision of the nRF Connect SDK. You can either
-install it along with the related tools directly on your system or use a Docker
-image that has the tools pre-installed.
-
-If you are a macOS user, you won't be able to use the Docker container to flash
-the application onto a Nordic development kit due to
-[certain limitations of Docker for macOS](https://docs.docker.com/docker-for-mac/faqs/#can-i-pass-through-a-usb-device-to-a-container).
-Use the [native shell](#using-native-shell-for-setup) for building instead.
-
-### Using Docker container for setup
-
-To use the Docker container for setup, complete the following steps:
-
-1. If you do not have the nRF Connect SDK installed yet, create a directory for
- it by running the following command:
-
- $ mkdir ~/nrfconnect
-
-2. Download the latest version of the nRF Connect SDK Docker image by running
- the following command:
+> **Note**:
+>
+> For Linux operating system install
+> [SEGGER J-Link Software](https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack).
- $ docker pull nordicsemi/nrfconnect-chip
+### Install Command Line Tools
-3. Start Docker with the downloaded image by running the following command,
- customized to your needs as described below:
+With admin permissions enabled, download and install the
+[nRF Command Line Tools](https://www.nordicsemi.com/Products/Development-tools/nrf-command-line-tools).
- $ docker run --rm -it -e RUNAS=$(id -u) -v ~/nrfconnect:/var/ncs -v ~/connectedhomeip:/var/chip \
- -v /dev/bus/usb:/dev/bus/usb --device-cgroup-rule "c 189:* rmw" nordicsemi/nrfconnect-chip
+### Install Toolchain Manager
- In this command:
+Toolchain Manager is available from
+[nRF Connect for Desktop](https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-desktop),
+a cross-platform tool that provides different applications that simplify
+installing the nRF Connect SDK. Both the tool and the application are available
+for Windows, Linux, and macOS.
- - _~/nrfconnect_ can be replaced with an absolute path to the nRF Connect
- SDK source directory.
- - _~/connectedhomeip_ must be replaced with an absolute path to the CHIP
- source directory.
- - _-v /dev/bus/usb:/dev/bus/usb --device-cgroup-rule "c 189:_ rmw"\*
- parameters can be omitted if you are not planning to flash the example
- onto hardware. These parameters give the container access to USB devices
- connected to your computer such as the nRF52840 DK.
- - _--rm_ can be omitted if you do not want the container to be
- auto-removed when you exit the container shell session.
- - _-e RUNAS=\$(id -u)_ is needed to start the container session as the
- current user instead of root.
+To install the Toolchain Manager app, complete the following steps:
-4. Update the nRF Connect SDK to the most recent supported revision, by running
- the following command:
+1. [Download nRF Connect for Desktop](https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-desktop/download#infotabs)
+ for your operating system.
- $ cd /var/chip
- $ python3 scripts/setup/nrfconnect/update_ncs.py --update
-
-Now you can proceed with the [Building](#building) instruction.
+2. Install and run the tool on your machine.
-### Using native shell for setup
+3. In the **APPS** section, click **Install** button on the Toolchain Manager
+ tab.
-To use the native shell for setup, complete the following steps:
+### Install nRF Connect SDK
-1. Download and install the following additional software:
+Complete the following steps to install the nRF Connect SDK:
- - [nRF Command Line Tools](https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Command-Line-Tools)
- - [GN meta-build system](https://gn.googlesource.com/gn/)
+1. Open Toolchain Manager in nRF Connect for Desktop.
-2. If you do not have the nRF Connect SDK installed, follow the
- [guide](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/gs_assistant.html#)
- in the nRF Connect SDK documentation to install the latest stable nRF
- Connect SDK version. Since command-line tools will be used for building the
- example, installing SEGGER Embedded Studio is not required.
+2. Click the **Install** button next to the
+ [recommended](../../../config/nrfconnect/.nrfconnect-recommended-revision)
+ version of the nRF Connect SDK.
- If you have the SDK already installed, continue to the next step and update
- the nRF Connect SDK after initializing environment variables.
+3. A pop-up window will inform you about the current installation directory. If
+ you want to change the directory, click the **Change directory** button.
+ Otherwise, click the **Continue installation** button.
-3. Initialize environment variables referred to by the CHIP and the nRF Connect
- SDK build scripts. Replace _nrfconnect-dir_ with the path to your nRF
- Connect SDK installation directory, and _toolchain-dir_ with the path to GNU
- Arm Embedded Toolchain.
+4. When the nRF Connect SDK is installed on your machine, the **Install**
+ button changes to the **Open VS Code** button.
- $ source nrfconnect-dir/zephyr/zephyr-env.sh
- $ export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb
- $ export GNUARMEMB_TOOLCHAIN_PATH=toolchain-dir
+5. Click the dropdown menu next to the **Open VS Code** button for the
+ installed nRF Connect SDK version, and select **Open terminal**.
-4. Update the nRF Connect SDK to the most recent supported revision by running
- the following command (replace _matter-dir_ with the path to Matter
- repository directory):
+6. Make sure that the nRF Connect SDK version is compatible with the Matter SDK
+ version:
- $ cd matter-dir
+ ```
+ $ cd {connectedhomeip directory}
$ python3 scripts/setup/nrfconnect/update_ncs.py --update
+ ```
Now you can proceed with the [Building](#building) instruction.
@@ -270,8 +240,7 @@ Now you can proceed with the [Building](#building) instruction.
## Building
-Complete the following steps, regardless of the method used for setting up the
-environment:
+Complete the following steps to build the sample:
1. Navigate to the example's directory:
diff --git a/examples/all-clusters-app/nxp/mw320/main.cpp b/examples/all-clusters-app/nxp/mw320/main.cpp
index 8344be7cda1b80..5e29a11cc9b290 100644
--- a/examples/all-clusters-app/nxp/mw320/main.cpp
+++ b/examples/all-clusters-app/nxp/mw320/main.cpp
@@ -172,7 +172,7 @@ void InitOTARequestor(void)
// TODO: instatiate and initialize these values when QueryImageResponse tells us an image is available
// TODO: add API for OTARequestor to pass QueryImageResponse info to the application to use for OTADownloader init
// OTAImageProcessor ipParams;
- // ipParams.imageFile = CharSpan("dnld_img.txt");
+ // ipParams.imageFile = "dnld_img.txt"_span;
// gImageProcessor.SetOTAImageProcessorParams(ipParams);
gImageProcessor.SetOTADownloader(&gDownloader);
diff --git a/examples/all-clusters-app/telink/prj.conf b/examples/all-clusters-app/telink/prj.conf
index f0e82ad971d4d8..18b7edcc11f395 100644
--- a/examples/all-clusters-app/telink/prj.conf
+++ b/examples/all-clusters-app/telink/prj.conf
@@ -22,12 +22,6 @@
CONFIG_CHIP=y
CONFIG_STD_CPP17=y
-# enable GPIO
-CONFIG_GPIO=y
-
-# enable PWM
-CONFIG_PWM=y
-
# CHIP configuration
CONFIG_CHIP_PROJECT_CONFIG="include/CHIPProjectConfig.h"
CONFIG_CHIP_OPENTHREAD_CONFIG="../../platform/telink/project_include/OpenThreadConfig.h"
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 d4c6725bd0f594..cbb1b7efd20700 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
@@ -143,14 +143,19 @@ provisional server cluster Scenes = 5 {
AttributeValuePair attributeValueList[] = 1;
}
- readonly attribute int8u sceneCount = 0;
- readonly attribute int8u currentScene = 1;
- readonly attribute group_id currentGroup = 2;
- readonly attribute boolean sceneValid = 3;
+ fabric_scoped struct SceneInfoStruct {
+ int8u sceneCount = 0;
+ fabric_sensitive int8u currentScene = 1;
+ fabric_sensitive group_id currentGroup = 2;
+ fabric_sensitive boolean sceneValid = 3;
+ int8u remainingCapacity = 4;
+ fabric_idx fabricIndex = 254;
+ }
+
readonly attribute NameSupportBitmap nameSupport = 4;
readonly attribute nullable node_id lastConfiguredBy = 5;
readonly attribute int16u sceneTableSize = 6;
- readonly attribute int8u remainingCapacity = 7;
+ readonly attribute SceneInfoStruct fabricSceneInfo[] = 7;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -309,12 +314,12 @@ server cluster OnOff = 6 {
/** Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' */
server cluster LevelControl = 8 {
- enum MoveMode : enum8 {
+ enum MoveModeEnum : enum8 {
kUp = 0;
kDown = 1;
}
- enum StepMode : enum8 {
+ enum StepModeEnum : enum8 {
kUp = 0;
kDown = 1;
}
@@ -325,14 +330,14 @@ server cluster LevelControl = 8 {
kFrequency = 0x4;
}
- bitmap LevelControlOptions : bitmap8 {
+ bitmap OptionsBitmap : bitmap8 {
kExecuteIfOff = 0x1;
kCoupleColorTempToLevel = 0x2;
}
readonly attribute nullable int8u currentLevel = 0;
readonly attribute int16u remainingTime = 1;
- attribute LevelControlOptions options = 15;
+ attribute OptionsBitmap options = 15;
attribute nullable int8u onLevel = 17;
attribute access(write: manage) nullable int8u startUpCurrentLevel = 16384;
readonly attribute command_id generatedCommandList[] = 65528;
@@ -345,55 +350,55 @@ server cluster LevelControl = 8 {
request struct MoveToLevelRequest {
int8u level = 0;
nullable int16u transitionTime = 1;
- LevelControlOptions optionsMask = 2;
- LevelControlOptions optionsOverride = 3;
+ OptionsBitmap optionsMask = 2;
+ OptionsBitmap optionsOverride = 3;
}
request struct MoveRequest {
- MoveMode moveMode = 0;
+ MoveModeEnum moveMode = 0;
nullable int8u rate = 1;
- LevelControlOptions optionsMask = 2;
- LevelControlOptions optionsOverride = 3;
+ OptionsBitmap optionsMask = 2;
+ OptionsBitmap optionsOverride = 3;
}
request struct StepRequest {
- StepMode stepMode = 0;
+ StepModeEnum stepMode = 0;
int8u stepSize = 1;
nullable int16u transitionTime = 2;
- LevelControlOptions optionsMask = 3;
- LevelControlOptions optionsOverride = 4;
+ OptionsBitmap optionsMask = 3;
+ OptionsBitmap optionsOverride = 4;
}
request struct StopRequest {
- LevelControlOptions optionsMask = 0;
- LevelControlOptions optionsOverride = 1;
+ OptionsBitmap optionsMask = 0;
+ OptionsBitmap optionsOverride = 1;
}
request struct MoveToLevelWithOnOffRequest {
int8u level = 0;
nullable int16u transitionTime = 1;
- LevelControlOptions optionsMask = 2;
- LevelControlOptions optionsOverride = 3;
+ OptionsBitmap optionsMask = 2;
+ OptionsBitmap optionsOverride = 3;
}
request struct MoveWithOnOffRequest {
- MoveMode moveMode = 0;
+ MoveModeEnum moveMode = 0;
nullable int8u rate = 1;
- LevelControlOptions optionsMask = 2;
- LevelControlOptions optionsOverride = 3;
+ OptionsBitmap optionsMask = 2;
+ OptionsBitmap optionsOverride = 3;
}
request struct StepWithOnOffRequest {
- StepMode stepMode = 0;
+ StepModeEnum stepMode = 0;
int8u stepSize = 1;
nullable int16u transitionTime = 2;
- LevelControlOptions optionsMask = 3;
- LevelControlOptions optionsOverride = 4;
+ OptionsBitmap optionsMask = 3;
+ OptionsBitmap optionsOverride = 4;
}
request struct StopWithOnOffRequest {
- LevelControlOptions optionsMask = 0;
- LevelControlOptions optionsOverride = 1;
+ OptionsBitmap optionsMask = 0;
+ OptionsBitmap optionsOverride = 1;
}
command MoveToLevel(MoveToLevelRequest): DefaultSuccess = 0;
@@ -686,6 +691,8 @@ server cluster BasicInformation = 40 {
readonly attribute int32u softwareVersion = 9;
readonly attribute char_string<64> softwareVersionString = 10;
readonly attribute CapabilityMinimaStruct capabilityMinima = 19;
+ readonly attribute int32u specificationVersion = 21;
+ readonly attribute int16u maxPathsPerInvoke = 22;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1188,13 +1195,13 @@ server cluster GeneralCommissioning = 48 {
request struct SetRegulatoryConfigRequest {
RegulatoryLocationTypeEnum newRegulatoryConfig = 0;
- char_string countryCode = 1;
+ char_string<2> countryCode = 1;
int64u breadcrumb = 2;
}
response struct ArmFailSafeResponse = 1 {
CommissioningErrorEnum errorCode = 0;
- char_string debugText = 1;
+ char_string<128> debugText = 1;
}
response struct SetRegulatoryConfigResponse = 3 {
@@ -1243,6 +1250,7 @@ server cluster NetworkCommissioning = 49 {
kWiFiNetworkInterface = 0x1;
kThreadNetworkInterface = 0x2;
kEthernetNetworkInterface = 0x4;
+ kPerDeviceCredentials = 0x8;
}
bitmap ThreadCapabilitiesBitmap : bitmap16 {
@@ -1259,11 +1267,14 @@ server cluster NetworkCommissioning = 49 {
kWPAPersonal = 0x4;
kWPA2Personal = 0x8;
kWPA3Personal = 0x10;
+ kWPA3MatterPDC = 0x20;
}
struct NetworkInfoStruct {
octet_string<32> networkID = 0;
boolean connected = 1;
+ optional nullable octet_string<20> networkIdentifier = 2;
+ optional nullable octet_string<20> clientIdentifier = 3;
}
struct ThreadInterfaceScanResultStruct {
@@ -1310,6 +1321,9 @@ server cluster NetworkCommissioning = 49 {
octet_string<32> ssid = 0;
octet_string<64> credentials = 1;
optional int64u breadcrumb = 2;
+ optional octet_string<140> networkIdentity = 3;
+ optional octet_string<20> clientIdentifier = 4;
+ optional octet_string<32> possessionNonce = 5;
}
request struct AddOrUpdateThreadNetworkRequest {
@@ -1344,6 +1358,8 @@ server cluster NetworkCommissioning = 49 {
NetworkCommissioningStatusEnum networkingStatus = 0;
optional char_string<512> debugText = 1;
optional int8u networkIndex = 2;
+ optional octet_string<140> clientIdentity = 3;
+ optional octet_string<64> possessionSignature = 4;
}
response struct ConnectNetworkResponse = 7 {
@@ -2907,8 +2923,27 @@ provisional server cluster FanControl = 514 {
/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */
server cluster ThermostatUserInterfaceConfiguration = 516 {
- attribute enum8 temperatureDisplayMode = 0;
- attribute access(write: manage) enum8 keypadLockout = 1;
+ enum KeypadLockoutEnum : enum8 {
+ kNoLockout = 0;
+ kLockout1 = 1;
+ kLockout2 = 2;
+ kLockout3 = 3;
+ kLockout4 = 4;
+ kLockout5 = 5;
+ }
+
+ enum ScheduleProgrammingVisibilityEnum : enum8 {
+ kScheduleProgrammingPermitted = 0;
+ kScheduleProgrammingDenied = 1;
+ }
+
+ enum TemperatureDisplayModeEnum : enum8 {
+ kCelsius = 0;
+ kFahrenheit = 1;
+ }
+
+ attribute TemperatureDisplayModeEnum temperatureDisplayMode = 0;
+ attribute access(write: manage) KeypadLockoutEnum keypadLockout = 1;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -3193,7 +3228,7 @@ server cluster Channel = 1284 {
/** This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. */
server cluster TargetNavigator = 1285 {
- enum TargetNavigatorStatusEnum : enum8 {
+ enum StatusEnum : enum8 {
kSuccess = 0;
kTargetNotFound = 1;
kNotAllowed = 2;
@@ -3201,7 +3236,7 @@ server cluster TargetNavigator = 1285 {
struct TargetInfoStruct {
int8u identifier = 0;
- char_string<32> name = 1;
+ char_string name = 1;
}
readonly attribute TargetInfoStruct targetList[] = 0;
@@ -3218,7 +3253,7 @@ server cluster TargetNavigator = 1285 {
}
response struct NavigateTargetResponse = 1 {
- TargetNavigatorStatusEnum status = 0;
+ StatusEnum status = 0;
optional char_string data = 1;
}
@@ -3420,7 +3455,7 @@ server cluster KeypadInput = 1289 {
kData = 118;
}
- enum KeypadInputStatusEnum : enum8 {
+ enum StatusEnum : enum8 {
kSuccess = 0;
kUnsupportedKey = 1;
kInvalidKeyInCurrentState = 2;
@@ -3444,7 +3479,7 @@ server cluster KeypadInput = 1289 {
}
response struct SendKeyResponse = 1 {
- KeypadInputStatusEnum status = 0;
+ StatusEnum status = 0;
}
command SendKey(SendKeyRequest): SendKeyResponse = 0;
@@ -3452,12 +3487,6 @@ server cluster KeypadInput = 1289 {
/** This cluster provides an interface for launching content on a media player device such as a TV or Speaker. */
server cluster ContentLauncher = 1290 {
- enum ContentLaunchStatusEnum : enum8 {
- kSuccess = 0;
- kUrlNotAvailable = 1;
- kAuthFailed = 2;
- }
-
enum MetricTypeEnum : enum8 {
kPixels = 0;
kPercentage = 1;
@@ -3480,12 +3509,18 @@ server cluster ContentLauncher = 1290 {
kVideo = 13;
}
+ enum StatusEnum : enum8 {
+ kSuccess = 0;
+ kURLNotAvailable = 1;
+ kAuthFailed = 2;
+ }
+
bitmap Feature : bitmap32 {
kContentSearch = 0x1;
kURLPlayback = 0x2;
}
- bitmap SupportedStreamingProtocol : bitmap32 {
+ bitmap SupportedProtocolsBitmap : bitmap32 {
kDASH = 0x1;
kHLS = 0x2;
}
@@ -3497,13 +3532,13 @@ server cluster ContentLauncher = 1290 {
}
struct AdditionalInfoStruct {
- char_string name = 0;
- char_string value = 1;
+ char_string<256> name = 0;
+ char_string<8192> value = 1;
}
struct ParameterStruct {
ParameterEnum type = 0;
- char_string value = 1;
+ char_string<1024> value = 1;
optional AdditionalInfoStruct externalIDList[] = 2;
}
@@ -3512,13 +3547,13 @@ server cluster ContentLauncher = 1290 {
}
struct StyleInformationStruct {
- optional char_string imageURL = 0;
- optional char_string color = 1;
+ optional char_string<8192> imageURL = 0;
+ optional char_string<9> color = 1;
optional DimensionStruct size = 2;
}
struct BrandingInformationStruct {
- char_string providerName = 0;
+ char_string<256> providerName = 0;
optional StyleInformationStruct background = 1;
optional StyleInformationStruct logo = 2;
optional StyleInformationStruct progressBar = 3;
@@ -4078,12 +4113,14 @@ endpoint 0 {
callback attribute softwareVersion default = 0;
callback attribute softwareVersionString;
callback attribute capabilityMinima;
+ callback attribute specificationVersion;
+ callback attribute maxPathsPerInvoke;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
}
server cluster OtaSoftwareUpdateRequestor {
@@ -4392,19 +4429,15 @@ endpoint 1 {
}
server cluster Scenes {
- callback attribute sceneCount default = 0x00;
- ram attribute currentScene default = 0x00;
- ram attribute currentGroup default = 0x0000;
- ram attribute sceneValid default = 0x00;
- ram attribute nameSupport default = 0x80;
- ram attribute lastConfiguredBy;
- ram attribute sceneTableSize default = 16;
- callback attribute remainingCapacity default = 8;
+ callback attribute nameSupport default = 0x80;
+ callback attribute lastConfiguredBy;
+ callback attribute sceneTableSize default = 16;
+ callback attribute fabricSceneInfo;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
- ram attribute featureMap default = 7;
+ ram attribute featureMap default = 15;
ram attribute clusterRevision default = 5;
handle command AddScene;
@@ -4956,18 +4989,14 @@ endpoint 2 {
}
server cluster Scenes {
- callback attribute sceneCount default = 0x00;
- ram attribute currentScene default = 0x00;
- ram attribute currentGroup default = 0x0000;
- ram attribute sceneValid default = 0x00;
- ram attribute nameSupport default = 0x80;
- ram attribute sceneTableSize default = 16;
- callback attribute remainingCapacity default = 8;
+ callback attribute nameSupport default = 0x80;
+ callback attribute sceneTableSize default = 16;
+ callback attribute fabricSceneInfo;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
- ram attribute featureMap default = 7;
+ ram attribute featureMap default = 15;
ram attribute clusterRevision default = 5;
handle command AddScene;
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
index 5fdadf6b7ec4d3..43de928aba7937 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
@@ -915,6 +915,38 @@
"maxInterval": 65534,
"reportableChange": 0
},
+ {
+ "name": "SpecificationVersion",
+ "code": 21,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int32u",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 1,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "MaxPathsPerInvoke",
+ "code": 22,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int16u",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 1,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "GeneratedCommandList",
"code": 65528,
@@ -1005,7 +1037,7 @@
"storageOption": "RAM",
"singleton": 1,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
@@ -2748,7 +2780,7 @@
"code": 10,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
@@ -2764,7 +2796,7 @@
"code": 11,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
@@ -2780,7 +2812,7 @@
"code": 12,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
@@ -2856,7 +2888,7 @@
"reportableChange": 0
},
{
- "name": "ActiveNetworkFaults",
+ "name": "ActiveNetworkFaultsList",
"code": 62,
"mfgCode": null,
"side": "server",
@@ -4633,78 +4665,14 @@
}
],
"attributes": [
- {
- "name": "SceneCount",
- "code": 0,
- "mfgCode": null,
- "side": "server",
- "type": "int8u",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "CurrentScene",
- "code": 1,
- "mfgCode": null,
- "side": "server",
- "type": "int8u",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "CurrentGroup",
- "code": 2,
- "mfgCode": null,
- "side": "server",
- "type": "group_id",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0000",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "SceneValid",
- "code": 3,
- "mfgCode": null,
- "side": "server",
- "type": "boolean",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
{
"name": "NameSupport",
"code": 4,
"mfgCode": null,
"side": "server",
- "type": "bitmap8",
+ "type": "NameSupportBitmap",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "0x80",
@@ -4720,7 +4688,7 @@
"side": "server",
"type": "node_id",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -4736,7 +4704,7 @@
"side": "server",
"type": "int16u",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "16",
@@ -4746,16 +4714,16 @@
"reportableChange": 0
},
{
- "name": "RemainingCapacity",
+ "name": "FabricSceneInfo",
"code": 7,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "array",
"included": 1,
- "storageOption": "External",
+ "storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "8",
+ "defaultValue": "",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
@@ -4835,7 +4803,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "7",
+ "defaultValue": "15",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
@@ -5206,7 +5174,7 @@
"code": 15,
"mfgCode": null,
"side": "server",
- "type": "LevelControlOptions",
+ "type": "OptionsBitmap",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -7096,7 +7064,7 @@
"code": 0,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "TemperatureDisplayModeEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -7112,7 +7080,7 @@
"code": 1,
"mfgCode": null,
"side": "server",
- "type": "enum8",
+ "type": "KeypadLockoutEnum",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -10933,78 +10901,14 @@
}
],
"attributes": [
- {
- "name": "SceneCount",
- "code": 0,
- "mfgCode": null,
- "side": "server",
- "type": "int8u",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "CurrentScene",
- "code": 1,
- "mfgCode": null,
- "side": "server",
- "type": "int8u",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "CurrentGroup",
- "code": 2,
- "mfgCode": null,
- "side": "server",
- "type": "group_id",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0000",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "SceneValid",
- "code": 3,
- "mfgCode": null,
- "side": "server",
- "type": "boolean",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
{
"name": "NameSupport",
"code": 4,
"mfgCode": null,
"side": "server",
- "type": "bitmap8",
+ "type": "NameSupportBitmap",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "0x80",
@@ -11020,7 +10924,7 @@
"side": "server",
"type": "int16u",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "16",
@@ -11030,16 +10934,16 @@
"reportableChange": 0
},
{
- "name": "RemainingCapacity",
+ "name": "FabricSceneInfo",
"code": 7,
"mfgCode": null,
"side": "server",
- "type": "int8u",
+ "type": "array",
"included": 1,
- "storageOption": "External",
+ "storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "8",
+ "defaultValue": "",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
@@ -11119,7 +11023,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "7",
+ "defaultValue": "15",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
@@ -12349,4 +12253,6 @@
"networkId": 0
}
]
-}
\ No newline at end of file
+}
+
+
diff --git a/examples/all-clusters-minimal-app/ameba/README.md b/examples/all-clusters-minimal-app/ameba/README.md
index 1583fe5fccea87..b7189f9931a11c 100644
--- a/examples/all-clusters-minimal-app/ameba/README.md
+++ b/examples/all-clusters-minimal-app/ameba/README.md
@@ -27,13 +27,13 @@ The CHIP demo application is supported on
- Pull docker image:
```
- $ docker pull ghcr.io/project-chip/chip-build-ameba:24
+ $ docker pull ghcr.io/project-chip/chip-build-ameba:26
```
- Run docker container:
```
- $ docker run -it -v ${CHIP_DIR}:/root/chip ghcr.io/project-chip/chip-build-ameba:24
+ $ docker run -it -v ${CHIP_DIR}:/root/chip ghcr.io/project-chip/chip-build-ameba:26
```
- Setup build environment:
diff --git a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/GroupSettingFragment.kt b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/GroupSettingFragment.kt
index 9687237a814e0d..8943801c080c80 100644
--- a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/GroupSettingFragment.kt
+++ b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/GroupSettingFragment.kt
@@ -12,19 +12,12 @@ import android.widget.EditText
import android.widget.Spinner
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
+import chip.devicecontroller.ChipClusters
import chip.devicecontroller.ChipDeviceController
-import chip.devicecontroller.ClusterIDMapping
+import chip.devicecontroller.ChipStructs
+import chip.devicecontroller.ChipStructs.AccessControlClusterAccessControlEntryStruct
+import chip.devicecontroller.ChipStructs.GroupKeyManagementClusterGroupKeySetStruct
import chip.devicecontroller.GroupKeySecurityPolicy
-import chip.devicecontroller.InvokeCallback
-import chip.devicecontroller.ReportCallback
-import chip.devicecontroller.WriteAttributesCallback
-import chip.devicecontroller.cluster.structs.AccessControlClusterAccessControlEntryStruct
-import chip.devicecontroller.cluster.structs.GroupKeyManagementClusterGroupKeySetStruct
-import chip.devicecontroller.model.AttributeWriteRequest
-import chip.devicecontroller.model.ChipAttributePath
-import chip.devicecontroller.model.ChipEventPath
-import chip.devicecontroller.model.InvokeElement
-import chip.devicecontroller.model.NodeState
import com.google.chip.chiptool.ChipClient
import com.google.chip.chiptool.GenericChipDeviceListener
import com.google.chip.chiptool.R
@@ -33,10 +26,6 @@ import com.google.chip.chiptool.util.DeviceIdUtil
import java.lang.Exception
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
-import matter.tlv.AnonymousTag
-import matter.tlv.ContextSpecificTag
-import matter.tlv.TlvReader
-import matter.tlv.TlvWriter
class GroupSettingFragment : Fragment() {
private val deviceController: ChipDeviceController
@@ -260,14 +249,17 @@ class GroupSettingFragment : Fragment() {
scope.launch {
val keySetWritestruct =
GroupKeyManagementClusterGroupKeySetStruct(
- keySetIdEd.text.toString().toUInt(),
- GroupKeySecurityPolicy.valueOf(keySecurityPolicySp.selectedItem.toString()).id.toUInt(),
+ keySetIdEd.text.toString().toUInt().toInt(),
+ GroupKeySecurityPolicy.valueOf(keySecurityPolicySp.selectedItem.toString())
+ .id
+ .toUInt()
+ .toInt(),
hexStringToByteArray(epochKey0Ed.text.toString()),
- epochStartTime0Ed.text.toString().toULong(),
+ epochStartTime0Ed.text.toString().toULong().toLong(),
hexStringToByteArray(epochKey1Ed.text.toString()),
- epochStartTime1Ed.text.toString().toULong(),
+ epochStartTime1Ed.text.toString().toULong().toLong(),
hexStringToByteArray(epochKey2Ed.text.toString()),
- epochStartTime2Ed.text.toString().toULong()
+ epochStartTime2Ed.text.toString().toULong().toLong()
)
sendKeySetWrite(keySetWritestruct)
requireActivity().runOnUiThread { dialog.dismiss() }
@@ -279,41 +271,24 @@ class GroupSettingFragment : Fragment() {
private suspend fun sendKeySetWrite(
groupKeySetStruct: GroupKeyManagementClusterGroupKeySetStruct
) {
- val tlvWriter =
- TlvWriter()
- .startStructure(AnonymousTag)
- .apply {
- groupKeySetStruct.toTlv(
- ContextSpecificTag(
- ClusterIDMapping.GroupKeyManagement.KeySetWriteCommandField.GroupKeySet.id
- ),
- this
- )
- }
- .endStructure()
-
- deviceController.invoke(
- object : InvokeCallback {
- override fun onError(e: java.lang.Exception?) {
+ val cluster =
+ ChipClusters.GroupKeyManagementCluster(
+ ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId),
+ 0
+ )
+ cluster.keySetWrite(
+ object : ChipClusters.DefaultClusterCallback {
+ override fun onError(e: Exception?) {
Log.d(TAG, "onError : ", e)
showMessage("onError : ${e.toString()}")
}
- override fun onResponse(invokeElement: InvokeElement?, successCode: Long) {
+ override fun onSuccess() {
Log.d(TAG, "onResponse")
- showMessage("onResponse : $successCode")
+ showMessage("onResponse")
}
},
- ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId),
- InvokeElement.newInstance(
- 0,
- ClusterIDMapping.GroupKeyManagement.ID,
- ClusterIDMapping.GroupKeyManagement.Command.KeySetWrite.id,
- tlvWriter.getEncoded(),
- null
- ),
- 0,
- 0
+ groupKeySetStruct
)
}
@@ -336,39 +311,30 @@ class GroupSettingFragment : Fragment() {
}
private suspend fun writeGroupKeyMap(groupId: UInt, groupKeySetId: UInt) {
- val tlvWriter =
- TlvWriter().apply {
- startArray(AnonymousTag)
- startStructure(AnonymousTag)
- put(ContextSpecificTag(1), groupId)
- put(ContextSpecificTag(2), groupKeySetId)
- endStructure()
- endArray()
- }
-
- deviceController.write(
- object : WriteAttributesCallback {
- override fun onError(attributePath: ChipAttributePath?, e: Exception?) {
+ val cluster =
+ ChipClusters.GroupKeyManagementCluster(
+ ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId),
+ 0
+ )
+ cluster.writeGroupKeyMapAttribute(
+ object : ChipClusters.DefaultClusterCallback {
+ override fun onError(e: Exception?) {
Log.d(TAG, "onError : ", e)
showMessage("Error : ${e.toString()}")
}
- override fun onResponse(attributePath: ChipAttributePath?) {
+ override fun onSuccess() {
Log.d(TAG, "onResponse")
showMessage("write Success")
}
},
- ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId),
- listOf(
- AttributeWriteRequest.newInstance(
- 0,
- ClusterIDMapping.GroupKeyManagement.ID,
- ClusterIDMapping.GroupKeyManagement.Attribute.GroupKeyMap.id,
- tlvWriter.getEncoded()
+ arrayListOf(
+ ChipStructs.GroupKeyManagementClusterGroupKeyMapStruct(
+ groupId.toInt(),
+ groupKeySetId.toInt(),
+ deviceController.fabricIndex
)
- ),
- 0,
- 0
+ )
)
}
@@ -390,75 +356,52 @@ class GroupSettingFragment : Fragment() {
}
private suspend fun sendAddGroup(groupId: UInt, groupName: String) {
- val tlvWriter =
- TlvWriter().apply {
- startStructure(AnonymousTag)
- put(ContextSpecificTag(0), groupId)
- put(ContextSpecificTag(1), groupName)
- endStructure()
- }
-
- deviceController.invoke(
- object : InvokeCallback {
+ val cluster =
+ ChipClusters.GroupsCluster(
+ ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId),
+ 0
+ )
+ cluster.addGroup(
+ object : ChipClusters.GroupsCluster.AddGroupResponseCallback {
override fun onError(e: Exception?) {
Log.d(TAG, "onError : ", e)
showMessage("Error : ${e.toString()}")
}
- override fun onResponse(invokeElement: InvokeElement?, successCode: Long) {
+ override fun onSuccess(status: Int?, groupID: Int?) {
Log.d(TAG, "onResponse")
- showMessage("onResponse : $successCode")
+ showMessage("onResponse : $status, $groupID")
}
},
- ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId),
- InvokeElement.newInstance(
- 0,
- ClusterIDMapping.Groups.ID,
- ClusterIDMapping.Groups.Command.AddGroup.id,
- tlvWriter.getEncoded(),
- null
- ),
- 0,
- 0
+ groupId.toInt(),
+ groupName
)
}
private suspend fun readAccessControl() {
- val endpointId = 0
- val clusterId = ClusterIDMapping.AccessControl.ID
- val attributeId = ClusterIDMapping.AccessControl.Attribute.Acl.id
-
- val attributePath = ChipAttributePath.newInstance(endpointId, clusterId, attributeId)
- deviceController.readAttributePath(
- object : ReportCallback {
- override fun onError(
- attributePath: ChipAttributePath?,
- eventPath: ChipEventPath?,
- e: Exception
- ) {
+ val cluster =
+ ChipClusters.AccessControlCluster(
+ ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId),
+ 0
+ )
+ cluster.readAclAttribute(
+ object : ChipClusters.AccessControlCluster.AclAttributeCallback {
+ override fun onError(e: Exception?) {
Log.d(TAG, "onError : ", e)
showMessage("Error : $e")
}
- override fun onReport(nodeState: NodeState?) {
- Log.d(TAG, "onResponse")
- val tlv =
- nodeState
- ?.getEndpointState(endpointId)
- ?.getClusterState(clusterId)
- ?.getAttributeState(attributeId)
- ?.tlv
- requireActivity().runOnUiThread { showAddAccessControlDialog(tlv) }
+ override fun onSuccess(value: MutableList?) {
+ requireActivity().runOnUiThread { showAddAccessControlDialog(value) }
}
- },
- ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId),
- listOf(attributePath),
- 0
+ }
)
}
- private fun showAddAccessControlDialog(tlv: ByteArray?) {
- if (tlv == null) {
+ private fun showAddAccessControlDialog(
+ value: List?
+ ) {
+ if (value == null) {
Log.d(TAG, "Access Control read fail")
showMessage("Access Control read fail")
return
@@ -479,7 +422,7 @@ class GroupSettingFragment : Fragment() {
dialogView.findViewById