diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 1ecf1b4af10e50..3daabb694fb026 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -5,6 +5,7 @@
"--security-opt",
"seccomp=unconfined",
"--network=host",
+ "--privileged",
"-v",
"/dev/bus/usb:/dev/bus/usb:ro",
"--device-cgroup-rule=a 189:* rmw",
@@ -16,7 +17,7 @@
"build": {
"dockerfile": "Dockerfile",
"args": {
- "BUILD_VERSION": "0.5.25"
+ "BUILD_VERSION": "0.5.33"
}
},
"remoteUser": "vscode",
diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt
index 391e7bde76f92b..0ee788694f3dac 100644
--- a/.github/.wordlist.txt
+++ b/.github/.wordlist.txt
@@ -26,9 +26,9 @@ AdvRouterAddr
AdvSendAdvert
AE
aef
+AES
algs
alloc
-ameba
Ameba
amebad
amebaiot
@@ -39,6 +39,7 @@ AppConfig
ApplicationBasic
ApplicationIdentifier
ApplicationLauncher
+ApplyUpdateRequest
approver
appspot
aps
@@ -50,6 +51,7 @@ armeabi
ARMmbed
armv
asdk
+AssertionError
ASYNC
att
attId
@@ -80,11 +82,11 @@ BasicCHIPRegression
baudrate
BD
BDX
+BDXDownloader
BeagleBone
befc
bitbake
bld
-ble
BLE
BleApplicationDelegate
BleLayer
@@ -156,7 +158,6 @@ CHIPTest
CHIPTool
chmod
chrpath
-cipd
CIPD
CircleCI
cJTAG
@@ -215,6 +216,7 @@ cppreference
CPROTO
cpuapp
cpython
+CQM
crypto
cryptographic
CSA
@@ -269,6 +271,7 @@ DevKitC
DevKitM
df
dfu
+dhclient
DHCP
DHCPC
DHCPv
@@ -277,6 +280,7 @@ dialout
diffstat
diffsyms
dimmable
+dirname
dirs
disambiguated
discoverable
@@ -288,6 +292,7 @@ DK
DL
DM
DMG
+DMM
DNS
Dnsmasq
dnsmasqd
@@ -310,6 +315,8 @@ eabi
EB
ECC
ECD
+ECDH
+ECDSA
EchoMessage
EchoRequests
EchoResponse
@@ -321,7 +328,6 @@ ee
EEE
eef
ef
-efr
EFR
eg
EjQ
@@ -337,9 +343,11 @@ eno
entrypoint
enum
env
+eq
esd
ESPPORT
Espressif
+esptool
eth
EthernetNetworkDiagnostics
ethernets
@@ -379,11 +387,11 @@ flashdebug
focusable
forkpty
formatOnSave
-fota
FOTA
FreeRTOS
FreeRTOSConfig
fsl
+fstab
fsync
fullclean
gcloud
@@ -409,7 +417,6 @@ gn
GND
gni
GNinja
-gnuarmemb
GNUARMEMB
gnueabihf
googleapis
@@ -427,6 +434,7 @@ Gv
gz
hardcoded
hardknott
+hardwarever
HardwareVersion
HardwareVersionString
hci
@@ -435,6 +443,7 @@ hciconfig
hdlc
HKDF
hoc
+homebrew
hostapd
hostname
href
@@ -449,7 +458,6 @@ ifdef
ifdefs
IGMP
ihex
-im
IM
imager
imagetool
@@ -485,13 +493,14 @@ IPv
ISCAN
itemName
iterable
+JDK
jinja
-jlink
JLink
JLinkExe
JLinkRTTClient
JN
jpg
+jre
js
json
JTAG
@@ -535,6 +544,8 @@ lightin
LightingColor
LightingState
LinkSoftwareAndDocumentationPack
+LinuxOTAImageProcessor
+LinuxOTARequestorDriver
LocalConfigDisabled
localhost
localstatedir
@@ -636,6 +647,7 @@ navpad
ncs
nding
NDK
+netcmp
netif
netplan
NetworkCommissioning
@@ -672,6 +684,7 @@ OnOff
OnOffClusterTest
OnPlatformEvent
OO
+openjdk
OpenOCD
OpenSSL
OpenThread
@@ -686,6 +699,16 @@ optionsMask
optionsOverride
orgs
OTA
+OTADownloader
+OTAImageProcessorDriver
+OTAImageProcessorInterface
+OTAProviderIpAddress
+OTAProviderNodeId
+OTAProviderSerialPort
+OTARequesterImpl
+OTARequestor
+OTARequestorDriver
+OTARequestorSerialPort
OTBR
otcli
PAA
@@ -731,8 +754,6 @@ prj
ProductID
ProductLabel
ProductName
-productrev
-ProductRevision
ProductURL
proto
protobuf
@@ -757,6 +778,7 @@ PyFunction
pylint
PyObject
PyRun
+pytest
QEMU
Qorvo
QPG
@@ -770,6 +792,7 @@ qvCHIP
RADVD
raspberryPi
RasPi
+rAv
RCP
ReadConfigValue
readelf
@@ -832,7 +855,6 @@ SDK's
SDKs
SDKTARGETSYSROOT
sdl
-segger
SEGGER
semver
sendto
@@ -840,10 +862,15 @@ SERIALDEVICE
SerialNumber
ServiceId
SetDns
+SetImageProcessorDelegate
+SetOtaRequestorDriver
SetpointRaiseLower
+SetRequestorInstance
SetUpPINCode
SetupQRCode
sexualized
+SHA
+shubhamdp
SIGINT
SiLabs
SiliconLabs
@@ -854,6 +881,7 @@ SLAAC
SLTB
SLWSTK
SmartThings
+smoketest
SMP
socat
socio
@@ -882,6 +910,7 @@ subcommand
subcommands
subdirectories
subdirectory
+subfolder
submodule
submodules
subprocess
@@ -896,7 +925,6 @@ sysconfdir
SysConfig
sysctl
sysdeps
-sysroot
SYSROOT
systemctl
systemd
@@ -956,7 +984,6 @@ ttyUSB
TvChannel
TXD
txt
-uart
UART
udhcpc
UDP
@@ -965,7 +992,6 @@ udpPort
ug
ui
uint
-unblur
UNBLUR
uncommissioned
unfocus
@@ -980,6 +1006,7 @@ URI
usbmodem
USBtoUART
uscif
+userguide
USERINTERFACE
UserLabel
usermod
diff --git a/.github/workflows/android.yaml b/.github/workflows/android.yaml
index cdb345ff65173f..384a9db623b0bf 100644
--- a/.github/workflows/android.yaml
+++ b/.github/workflows/android.yaml
@@ -34,7 +34,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-android:0.5.25
+ image: connectedhomeip/chip-build-android:0.5.33
volumes:
- "/tmp/log_output:/tmp/test_logs"
diff --git a/.github/workflows/bloat_check.yaml b/.github/workflows/bloat_check.yaml
index 136366acbd2441..36532934ada930 100644
--- a/.github/workflows/bloat_check.yaml
+++ b/.github/workflows/bloat_check.yaml
@@ -30,7 +30,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: connectedhomeip/chip-build:0.5.25
+ image: connectedhomeip/chip-build:0.5.33
steps:
- name: Checkout
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index d10766215d9aea..39a01b9d163935 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -32,7 +32,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build:0.5.25
+ image: connectedhomeip/chip-build:0.5.33
volumes:
- "/tmp/log_output:/tmp/test_logs"
options:
@@ -68,7 +68,7 @@ jobs:
run: scripts/build/gn_gen.sh --args="chip_config_memory_debug_checks=true chip_config_memory_debug_dmalloc=true"
- name: Run Build
timeout-minutes: 20
- run: scripts/build/gn_build.sh
+ run: scripts/run_in_build_env.sh "ninja -C ./out"
- name: Run Tests
timeout-minutes: 2
run: scripts/tests/gn_tests.sh
@@ -84,21 +84,21 @@ jobs:
run: scripts/build/gn_gen.sh --args="chip_detail_logging=false"
- name: Run Build Without Detail Logging
timeout-minutes: 20
- run: scripts/build/gn_build.sh
+ run: scripts/run_in_build_env.sh "ninja -C ./out"
- name: Setup Build Without Progress Logging
run: scripts/build/gn_gen.sh --args="chip_detail_logging=false chip_progress_logging=false"
- name: Run Build Without Progress Logging
timeout-minutes: 20
- run: scripts/build/gn_build.sh
+ run: scripts/run_in_build_env.sh "ninja -C ./out"
build_linux:
- name: Build on Linux (gcc_release, clang, mbedtls)
+ name: Build on Linux (gcc_release, clang, mbedtls, simulated)
timeout-minutes: 60
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build:0.5.25
+ image: connectedhomeip/chip-build:0.5.33
volumes:
- "/tmp/log_output:/tmp/test_logs"
options:
@@ -135,6 +135,14 @@ jobs:
path: |
.environment/gn_out/.ninja_log
.environment/pigweed-venv/*.log
+ - name: Setup and Build Simulated Device
+ timeout-minutes: 5
+ run: |
+ BUILD_TYPE=simulated
+ GN_ARGS='chip_tests_zap_config="app1" chip_project_config_include_dirs=["../../examples/placeholder/linux/apps/app1/include", "../../config/standalone"] chip_config_network_layer_ble=false'
+ CHIP_ROOT_PATH=examples/placeholder/linux
+ CHIP_ROOT_PATH="$CHIP_ROOT_PATH" BUILD_TYPE="$BUILD_TYPE" scripts/build/gn_gen.sh --args="$GN_ARGS"
+ scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
- name: Setup Build, Run Build and Run Tests
timeout-minutes: 50
run: |
@@ -146,7 +154,7 @@ jobs:
esac
scripts/build/gn_gen.sh --args="$GN_ARGS"
- scripts/build/gn_build.sh
+ scripts/run_in_build_env.sh "ninja -C ./out"
scripts/tests/gn_tests.sh
done
- name: Build using build_examples.py
@@ -156,7 +164,7 @@ jobs:
run: |
./scripts/run_in_build_env.sh \
"./scripts/build/build_examples.py --no-log-timestamps --target-glob 'linux-x64-*' build"
-
+
# TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227
# TODO https://github.com/project-chip/connectedhomeip/issues/1512
# - name: Run Code Coverage
@@ -182,7 +190,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build:0.5.25
+ image: connectedhomeip/chip-build:0.5.33
volumes:
- "/tmp/log_output:/tmp/test_logs"
options:
@@ -202,64 +210,23 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
- # - name: Initialize CodeQL
- # if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/master' }}
- # uses: github/codeql-action/init@v1
- # with:
- # languages: "cpp"
-
- name: Bootstrap
timeout-minutes: 10
run: scripts/build/gn_bootstrap.sh
- # - name: Uploading bootstrap logs
- # uses: actions/upload-artifact@v2
- # if: ${{ always() }}
- # with:
- # name: bootstrap-logs
- # path: |
- # .environment/gn_out/.ninja_log
- # .environment/pigweed-venv/*.log
- name: Setup Build, Run Build and Run Tests
timeout-minutes: 50
run: |
- for BUILD_TYPE in python_lib; do
- case $BUILD_TYPE in
- "python_lib") GN_ARGS='enable_rtti=true enable_pylib=true chip_config_memory_debug_checks=false chip_config_memory_debug_dmalloc=false';;
- esac
-
- scripts/build/gn_gen.sh --args="$GN_ARGS"
- scripts/build/gn_build.sh
- scripts/tests/gn_tests.sh
- done
+ scripts/build/gn_gen.sh --args="enable_rtti=true enable_pylib=true chip_config_memory_debug_checks=false chip_config_memory_debug_dmalloc=false"
+ scripts/run_in_build_env.sh "ninja -C ./out"
+ scripts/tests/gn_tests.sh
- name: Run Python library specific unit tests
timeout-minutes: 5
run: |
scripts/run_in_build_env.sh 'pip3 install ./out/controller/python/chip-0.0-cp37-abi3-linux_x86_64.whl'
scripts/run_in_build_env.sh '(cd src/controller/python/test/unit_tests/ && python3 -m unittest -v)'
- # TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227
- # TODO https://github.com/project-chip/connectedhomeip/issues/1512
- # - name: Run Code Coverage
- # if: ${{ contains('main', env.BUILD_TYPE) }}
- # run: scripts/tools/codecoverage.sh
- # - name: Upload Code Coverage
- # if: ${{ contains('main', env.BUILD_TYPE) }}
- # run: bash <(curl -s https://codecov.io/bash)
- # - name: Remove third_party binaries for CodeQL Analysis
- # run: find out -type d -name "third_party" -exec rm -rf {} +
- # - name: Remove dbus binaries for CodeQL Analysis
- # run: find out -type d -name "dbus" -exec rm -rf {} +
- # - name: Remove nrfxlib binaries for CodeQL Analysis
- # run: find . -type d -name "nrfxlib" -exec rm -rf {} +
- # - name: Perform CodeQL Analysis
- # if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/master' }}
- # uses: github/codeql-action/analyze@v1
build_darwin:
- name: Build on Darwin (clang, python_lib)
+ name: Build on Darwin (clang, python_lib, simulated)
timeout-minutes: 90
-
- env:
- BUILD_TYPE: clang
-
runs-on: macos-latest
if: github.actor != 'restyled-io[bot]'
@@ -292,6 +259,14 @@ jobs:
path: |
.environment/gn_out/.ninja_log
.environment/pigweed-venv/*.log
+ - name: Setup and Build Simulated Device
+ timeout-minutes: 5
+ run: |
+ BUILD_TYPE=simulated
+ GN_ARGS='chip_tests_zap_config="app1" chip_project_config_include_dirs=["../../examples/placeholder/linux/apps/app1/include", "../../config/standalone"] chip_config_network_layer_ble=false'
+ CHIP_ROOT_PATH=examples/placeholder/linux
+ CHIP_ROOT_PATH="$CHIP_ROOT_PATH" BUILD_TYPE="$BUILD_TYPE" scripts/build/gn_gen.sh --args="$GN_ARGS"
+ scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
- name: Setup Build, Run Build and Run Tests
timeout-minutes: 75
# Just go ahead and do the "all" build; on Darwin that's fairly
@@ -301,11 +276,11 @@ jobs:
run: |
for BUILD_TYPE in clang python_lib; do
case $BUILD_TYPE in
- "clang") GN_ARGS='is_clang=true target_os="all"';;
+ "clang") GN_ARGS='is_clang=true target_os="all" is_asan=true';;
"python_lib") GN_ARGS='enable_rtti=true enable_pylib=true';;
esac
scripts/build/gn_gen.sh --args="$GN_ARGS"
- scripts/build/gn_build.sh
+ scripts/run_in_build_env.sh "ninja -C ./out"
scripts/tests/gn_tests.sh
done
- name: Uploading diagnostic logs
diff --git a/.github/workflows/cirque.yaml b/.github/workflows/cirque.yaml
index e1e031a3895d18..a695bb218e96d7 100644
--- a/.github/workflows/cirque.yaml
+++ b/.github/workflows/cirque.yaml
@@ -29,7 +29,7 @@ jobs:
timeout-minutes: 60
env:
- DOCKER_RUN_VERSION: 0.5.25
+ DOCKER_RUN_VERSION: 0.5.33
GITHUB_CACHE_PATH: /tmp/cirque-cache/
runs-on: ubuntu-latest
@@ -38,7 +38,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: connectedhomeip/chip-build-cirque:0.5.25
+# image: connectedhomeip/chip-build-cirque:0.5.33
# volumes:
# - "/tmp:/tmp"
# - "/dev/pts:/dev/pts"
@@ -102,9 +102,11 @@ jobs:
--volume /tmp:/tmp \
-- ./gn_build.sh \
chip_build_tests=false \
+ chip_enable_wifi=false \
enable_host_gcc_build=true \
enable_host_gcc_mbedtls_build=false \
- enable_host_clang_build = false
+ enable_host_clang_build=false \
+ enable_fake_tests=false
- name: Run Tests
timeout-minutes: 25
run: |
diff --git a/.github/workflows/darwin.yaml b/.github/workflows/darwin.yaml
index ead897aa3e924e..3880c6bbe8f8fe 100644
--- a/.github/workflows/darwin.yaml
+++ b/.github/workflows/darwin.yaml
@@ -114,7 +114,7 @@ jobs:
run: |
mkdir -p /tmp/darwin/framework-tests
../../../out/debug/chip-all-clusters-app > >(tee /tmp/darwin/framework-tests/all-cluster-app.log) 2> >(tee /tmp/darwin/framework-tests/all-cluster-app-err.log >&2) &
- xcodebuild test -target "CHIP" -scheme "CHIP Framework Tests" -sdk macosx > >(tee /tmp/darwin/framework-tests/darwin-tests.log) 2> >(tee /tmp/darwin/framework-tests/darwin-tests-err.log >&2)
+ xcodebuild test -target "CHIP" -scheme "CHIP Framework Tests" -sdk macosx OTHER_CFLAGS='${inherited} -Werror -Wno-documentation -Wno-conditional-uninitialized -Wno-incomplete-umbrella' > >(tee /tmp/darwin/framework-tests/darwin-tests.log) 2> >(tee /tmp/darwin/framework-tests/darwin-tests-err.log >&2)
working-directory: src/darwin/Framework
- name: Uploading log files
uses: actions/upload-artifact@v2
diff --git a/.github/workflows/docker_img.yaml b/.github/workflows/docker_img.yaml
index 8d97ea78450a90..b25df22401c6b6 100644
--- a/.github/workflows/docker_img.yaml
+++ b/.github/workflows/docker_img.yaml
@@ -32,7 +32,7 @@ jobs:
fail-fast: false
matrix:
# TODO: Enables "-crosscompile" and "-vscode" images
- img: ["", "-android", "-cirque", "-efr32", "-esp32", "-esp32-qemu", "-infineon", "-k32w", "-mbed-os", "-nrf-platform", "-telink", "-tizen"]
+ img: ["", "-android", "-cirque", "-doxygen", "-efr32", "-esp32", "-esp32-qemu", "-infineon", "-k32w", "-mbed-os", "-nrf-platform", "-telink", "-tizen"]
steps:
- name: Checkout
uses: actions/checkout@v2
@@ -43,6 +43,6 @@ jobs:
- name: Scan for vulnerabilities
uses: crazy-max/docker-scan-action@master
with:
- image: connectedhomeip/chip-build${{ matrix.img }}:0.5.25
+ image: connectedhomeip/chip-build${{ matrix.img }}:0.5.33
annotations: true
diff --git a/.github/workflows/doxygen.yaml b/.github/workflows/doxygen.yaml
index 615eb5ab69d44d..df454c8ce40479 100644
--- a/.github/workflows/doxygen.yaml
+++ b/.github/workflows/doxygen.yaml
@@ -29,6 +29,9 @@ jobs:
timeout-minutes: 5
runs-on: ubuntu-20.04
+ container:
+ image: connectedhomeip/chip-build-doxygen:0.5.33
+
if: github.actor != 'restyled-io[bot]'
steps:
diff --git a/.github/workflows/examples-ameba.yaml b/.github/workflows/examples-ameba.yaml
index 501328f3153271..5c36324109bd32 100644
--- a/.github/workflows/examples-ameba.yaml
+++ b/.github/workflows/examples-ameba.yaml
@@ -28,7 +28,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-ameba:0.5.25
+ image: connectedhomeip/chip-build-ameba:0.5.33
options: --user root
steps:
diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml
index eac49417cefa2a..b7ef9c604c8032 100644
--- a/.github/workflows/examples-efr32.yaml
+++ b/.github/workflows/examples-efr32.yaml
@@ -21,7 +21,7 @@ on:
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
cancel-in-progress: true
-
+
jobs:
efr32:
name: EFR32
@@ -30,15 +30,12 @@ jobs:
env:
EFR32_BOARD: BRD4161A
BUILD_TYPE: gn_efr32
- GH_EVENT_PR: ${{ github.event_name == 'pull_request' && github.event.number || 0 }}
- GH_EVENT_HASH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- GH_EVENT_PARENT: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-efr32:0.5.25
+ image: connectedhomeip/chip-build-efr32:0.5.33
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
@@ -46,6 +43,13 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
+
+ - name: Set up environment for size reports
+ if: ${{ !env.ACT }}
+ env:
+ GH_CONTEXT: ${{ toJson(github) }}
+ run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"
+
- name: Bootstrap
timeout-minutes: 25
run: scripts/build/gn_bootstrap.sh
@@ -82,6 +86,7 @@ jobs:
scripts/examples/gn_efr32_example.sh examples/window-app/efr32/ out/window_app_debug BRD4161A
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A window-app \
out/window_app_debug/BRD4161A/chip-efr32-window-example.out /tmp/bloat_reports/
+
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
diff --git a/.github/workflows/examples-esp32.yaml b/.github/workflows/examples-esp32.yaml
index 67e903ec847ef0..c211657b4342db 100644
--- a/.github/workflows/examples-esp32.yaml
+++ b/.github/workflows/examples-esp32.yaml
@@ -30,15 +30,12 @@ jobs:
env:
BUILD_TYPE: esp32
- GH_EVENT_PR: ${{ github.event_name == 'pull_request' && github.event.number || 0 }}
- GH_EVENT_HASH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- GH_EVENT_PARENT: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-esp32:0.5.25
+ image: connectedhomeip/chip-build-esp32:0.5.33
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
@@ -47,6 +44,13 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
+
+ - name: Set up environment for size reports
+ if: ${{ !env.ACT }}
+ env:
+ GH_CONTEXT: ${{ toJson(github) }}
+ run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"
+
- name: Bootstrap
timeout-minutes: 25
run: scripts/build/gn_bootstrap.sh
@@ -103,6 +107,7 @@ jobs:
- name: Build example IPv6 Only App
timeout-minutes: 10
run: scripts/examples/esp_example.sh ipv6only-app sdkconfig.defaults
+
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
diff --git a/.github/workflows/examples-infineon.yaml b/.github/workflows/examples-infineon.yaml
index 421e946f9fb426..de651be3d54ad9 100644
--- a/.github/workflows/examples-infineon.yaml
+++ b/.github/workflows/examples-infineon.yaml
@@ -26,24 +26,26 @@ concurrency:
jobs:
infineon:
name: Infineon examples building
- timeout-minutes: 30
-
- env:
- GH_EVENT_PR: ${{ github.event_name == 'pull_request' && github.event.number || 0 }}
- GH_EVENT_HASH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- GH_EVENT_PARENT: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
+ timeout-minutes: 60
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-infineon:0.5.25
+ image: connectedhomeip/chip-build-infineon:0.5.33
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: true
+
+ - name: Set up environment for size reports
+ if: ${{ !env.ACT }}
+ env:
+ GH_CONTEXT: ${{ toJson(github) }}
+ run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"
+
- name: Bootstrap
timeout-minutes: 25
run: scripts/build/gn_bootstrap.sh
@@ -71,6 +73,14 @@ jobs:
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
p6 default all-clusters-app \
out/infineon-p6-all-clusters/chip-p6-clusters-example.out
+ - name: Build lighting-app example
+ timeout-minutes: 10
+ run: |
+ scripts/run_in_build_env.sh \
+ "scripts/build/build_examples.py --no-log-timestamps --target 'infineon-p6-light' build"
+ .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
+ p6 default light-app \
+ out/infineon-p6-light/chip-p6-lighting-example.out
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
@@ -79,3 +89,4 @@ jobs:
path: |
out/infineon-p6-lock/p6-default-lock-app-sizes.json
out/infineon-p6-all-clusters/p6-default-all-clusters-app-sizes.json
+ out/infineon-p6-light/p6-default-light-app-sizes.json
diff --git a/.github/workflows/examples-k32w.yaml b/.github/workflows/examples-k32w.yaml
index 91b3fb1f9124ca..69f2fc023680c7 100644
--- a/.github/workflows/examples-k32w.yaml
+++ b/.github/workflows/examples-k32w.yaml
@@ -29,15 +29,12 @@ jobs:
env:
BUILD_TYPE: gn_k32w
- GH_EVENT_PR: ${{ github.event_name == 'pull_request' && github.event.number || 0 }}
- GH_EVENT_HASH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- GH_EVENT_PARENT: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-k32w:0.5.25
+ image: connectedhomeip/chip-build-k32w:0.5.33
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
@@ -45,6 +42,13 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
+
+ - name: Set up environment for size reports
+ if: ${{ !env.ACT }}
+ env:
+ GH_CONTEXT: ${{ toJson(github) }}
+ run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"
+
- name: Bootstrap
timeout-minutes: 25
run: scripts/build/gn_bootstrap.sh
@@ -83,6 +87,7 @@ jobs:
k32w k32w061+se05x+release lighting-app \
out/lighting_app_se_release/chip-k32w061-light-example \
/tmp/bloat_reports/
+
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
diff --git a/.github/workflows/examples-linux-standalone.yaml b/.github/workflows/examples-linux-standalone.yaml
index 81e5fd51c33d4e..12e651dcaf4bad 100644
--- a/.github/workflows/examples-linux-standalone.yaml
+++ b/.github/workflows/examples-linux-standalone.yaml
@@ -29,15 +29,12 @@ jobs:
env:
BUILD_TYPE: gn_linux
- GH_EVENT_PR: ${{ github.event_name == 'pull_request' && github.event.number || 0 }}
- GH_EVENT_HASH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- GH_EVENT_PARENT: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build:0.5.25
+ image: connectedhomeip/chip-build:0.5.33
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
@@ -46,6 +43,13 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
+
+ - name: Set up environment for size reports
+ if: ${{ !env.ACT }}
+ env:
+ GH_CONTEXT: ${{ toJson(github) }}
+ run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"
+
- name: Bootstrap
timeout-minutes: 10
run: scripts/build/gn_bootstrap.sh
@@ -123,6 +127,7 @@ jobs:
linux debug ota-requestor-app \
out/ota_requestor_debug/chip-ota-requestor-app \
/tmp/bloat_reports/
+
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
diff --git a/.github/workflows/examples-mbed.yaml b/.github/workflows/examples-mbed.yaml
index 3140094dec60f6..ccbf9526c4ca67 100644
--- a/.github/workflows/examples-mbed.yaml
+++ b/.github/workflows/examples-mbed.yaml
@@ -32,15 +32,12 @@ jobs:
BUILD_TYPE: mbedos
APP_PROFILE: release
APP_TARGET: CY8CPROTO_062_4343W
- GH_EVENT_PR: ${{ github.event_name == 'pull_request' && github.event.number || 0 }}
- GH_EVENT_HASH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- GH_EVENT_PARENT: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-mbed-os:0.5.25
+ image: connectedhomeip/chip-build-mbed-os:0.5.33
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
@@ -50,6 +47,12 @@ jobs:
with:
submodules: true
+ - name: Set up environment for size reports
+ if: ${{ !env.ACT }}
+ env:
+ GH_CONTEXT: ${{ toJson(github) }}
+ run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"
+
- name: Bootstrap
timeout-minutes: 10
run: scripts/build/gn_bootstrap.sh
@@ -82,7 +85,7 @@ jobs:
/tmp/bloat_reports/
- name: Build pigweed-app example
- timeout-minutes: 10
+ timeout-minutes: 15
run: |
scripts/examples/mbed_example.sh -a=pigweed-app -b=$APP_TARGET -p=$APP_PROFILE
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
diff --git a/.github/workflows/examples-nrfconnect.yaml b/.github/workflows/examples-nrfconnect.yaml
index 988346ff2e98e5..b22a210938bb16 100644
--- a/.github/workflows/examples-nrfconnect.yaml
+++ b/.github/workflows/examples-nrfconnect.yaml
@@ -29,15 +29,12 @@ jobs:
env:
BUILD_TYPE: nrfconnect
- GH_EVENT_PR: ${{ github.event_name == 'pull_request' && github.event.number || 0 }}
- GH_EVENT_HASH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- GH_EVENT_PARENT: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-nrf-platform:0.5.25
+ image: connectedhomeip/chip-build-nrf-platform:0.5.33
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
@@ -46,6 +43,13 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
+
+ - name: Set up environment for size reports
+ if: ${{ !env.ACT }}
+ env:
+ GH_CONTEXT: ${{ toJson(github) }}
+ run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"
+
- name: Bootstrap
timeout-minutes: 25
run: scripts/build/gn_bootstrap.sh
@@ -144,6 +148,15 @@ jobs:
timeout-minutes: 10
run: |
scripts/run_in_build_env.sh "scripts/tests/nrfconnect_native_posix_tests.sh native_posix_64"
+
+ - name: Uploading Failed Test Logs
+ uses: actions/upload-artifact@v2
+ if: ${{ failure() }} && ${{ !env.ACT }}
+ with:
+ name: test-log
+ path: |
+ src/test_driver/nrfconnect/build/Testing/Temporary/LastTest.log
+
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
diff --git a/.github/workflows/examples-qpg.yaml b/.github/workflows/examples-qpg.yaml
index 82103a141b710c..2c4a08084d107c 100644
--- a/.github/workflows/examples-qpg.yaml
+++ b/.github/workflows/examples-qpg.yaml
@@ -29,15 +29,12 @@ jobs:
env:
BUILD_TYPE: gn_qpg
- GH_EVENT_PR: ${{ github.event_name == 'pull_request' && github.event.number || 0 }}
- GH_EVENT_HASH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- GH_EVENT_PARENT: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build:0.5.25
+ image: connectedhomeip/chip-build:0.5.33
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
steps:
@@ -45,6 +42,13 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
+
+ - name: Set up environment for size reports
+ if: ${{ !env.ACT }}
+ env:
+ GH_CONTEXT: ${{ toJson(github) }}
+ run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"
+
- name: Bootstrap
timeout-minutes: 25
run: scripts/build/gn_bootstrap.sh
@@ -85,6 +89,7 @@ jobs:
timeout-minutes: 5
run: |
config/qpg/chip-gn/build.sh
+
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
diff --git a/.github/workflows/examples-telink.yaml b/.github/workflows/examples-telink.yaml
index dd65e5b34871e9..d2f838772926fe 100644
--- a/.github/workflows/examples-telink.yaml
+++ b/.github/workflows/examples-telink.yaml
@@ -27,15 +27,12 @@ jobs:
name: Telink
env:
BUILD_TYPE: telink
- GH_EVENT_PR: ${{ github.event_name == 'pull_request' && github.event.number || 0 }}
- GH_EVENT_HASH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
- GH_EVENT_PARENT: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
runs-on: ubuntu-latest
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-telink:0.5.25
+ image: connectedhomeip/chip-build-telink:0.5.33
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
@@ -44,6 +41,13 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
+
+ - name: Set up environment for size reports
+ if: ${{ !env.ACT }}
+ env:
+ GH_CONTEXT: ${{ toJson(github) }}
+ run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"
+
- name: Build example Telink Lighting App
run: |
./scripts/run_in_build_env.sh \
@@ -52,6 +56,7 @@ jobs:
telink tlsr9518adk80d lighting-app \
out/telink-tlsr9518adk80d-light/zephyr/zephyr.elf \
/tmp/bloat_reports/
+
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
diff --git a/.github/workflows/examples-tizen.yaml b/.github/workflows/examples-tizen.yaml
index cf67d3adcaaf21..2d51cde782ccc3 100644
--- a/.github/workflows/examples-tizen.yaml
+++ b/.github/workflows/examples-tizen.yaml
@@ -28,7 +28,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-tizen:0.5.25
+ image: connectedhomeip/chip-build-tizen:0.5.33
options: --user root
volumes:
- "/tmp/bloat_reports:/tmp/bloat_reports"
diff --git a/.github/workflows/qemu.yaml b/.github/workflows/qemu.yaml
index 3f61f8feb2efb7..8cb4edf47f36be 100644
--- a/.github/workflows/qemu.yaml
+++ b/.github/workflows/qemu.yaml
@@ -34,7 +34,7 @@ jobs:
if: github.actor != 'restyled-io[bot]'
container:
- image: connectedhomeip/chip-build-esp32-qemu:0.5.25
+ image: connectedhomeip/chip-build-esp32-qemu:0.5.33
volumes:
- "/tmp/log_output:/tmp/test_logs"
diff --git a/.github/workflows/release_artifacts.yaml b/.github/workflows/release_artifacts.yaml
index 18fbb755ad2368..cae99f252b8119 100644
--- a/.github/workflows/release_artifacts.yaml
+++ b/.github/workflows/release_artifacts.yaml
@@ -29,7 +29,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: connectedhomeip/chip-build-esp32:0.5.25
+ image: connectedhomeip/chip-build-esp32:0.5.33
steps:
- name: Checkout
@@ -70,7 +70,7 @@ jobs:
runs-on: ubuntu-latest
container:
- image: connectedhomeip/chip-build-efr32:0.5.25
+ image: connectedhomeip/chip-build-efr32:0.5.33
steps:
- name: Checkout
uses: actions/checkout@v2
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index c9b7b25f417943..4e7cc5b84567c0 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -20,7 +20,10 @@ on:
workflow_dispatch:
concurrency:
- group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
+ group:
+ ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name ==
+ 'pull_request' && github.event.number) || (github.event_name ==
+ 'workflow_dispatch' && github.run_number) || github.sha }}
cancel-in-progress: true
jobs:
@@ -29,18 +32,18 @@ jobs:
timeout-minutes: 60
strategy:
- matrix:
- type: [tsan]
- eventloop: [eventloop_same, eventloop_separate]
+ matrix:
+ build_variant: [no-ble-tsan]
+ chip_tool: ["", -same-event-loop]
env:
- USE_SEPARATE_EVENTLOOP: ${{ matrix.eventloop == 'eventloop_separate' }}
- USE_TSAN: ${{ matrix.type == 'tsan' }}
+ BUILD_VARIANT: ${{matrix.build_variant}}
+ CHIP_TOOL_VARIANT: ${{matrix.chip_tool}}
if: github.actor != 'restyled-io[bot]'
runs-on: ubuntu-latest
container:
- image: connectedhomeip/chip-build:0.5.25
+ image: connectedhomeip/chip-build:0.5.33
options:
--privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"
@@ -50,7 +53,9 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
- - name: Try to ensure the directories for core dumping exist and we can write them.
+ - name:
+ Try to ensure the directories for core dumping exist and we
+ can write them.
run: |
mkdir /tmp/cores || true
sysctl -w kernel.core_pattern=/tmp/cores/core.%u.%p.%t || true
@@ -62,40 +67,41 @@ jobs:
uses: actions/upload-artifact@v2
if: ${{ always() }} && ${{ !env.ACT }}
with:
- name: bootstrap-logs-linux-${{ matrix.type }}-${{ matrix.eventloop }}
+ name:
+ bootstrap-logs-linux-${{ matrix.type }}-${{
+ matrix.eventloop }}
path: |
- .environment/gn_out/.ninja_log
- .environment/pigweed-venv/*.log
- - name: Build all clusters app
- timeout-minutes: 5
- run: |
- scripts/examples/gn_build_example.sh examples/all-clusters-app/linux out/debug/standalone/ chip_config_network_layer_ble=false is_tsan=${USE_TSAN}
- - name: Build TV app
- timeout-minutes: 5
- run: |
- scripts/examples/gn_build_example.sh examples/tv-app/linux out/debug/standalone/ chip_config_network_layer_ble=false is_tsan=${USE_TSAN}
- - name: Build chip-tool
- timeout-minutes: 5
- run: |
- scripts/examples/gn_build_example.sh examples/chip-tool out/debug/standalone/ is_tsan=${USE_TSAN} config_use_separate_eventloop=${USE_SEPARATE_EVENTLOOP}
- - name: Copy objdir
- run: |
- # The idea is to not upload our objdir unless builds have
- # actually succeeded, because that just wastes space.
- rsync -a out/debug/standalone/ objdir-clone || true
- - name: Run Tests
+ .environment/gn_out/.ninja_log
+ .environment/pigweed-venv/*.log
+ - name: Build Apps
timeout-minutes: 20
run: |
- scripts/tests/test_suites.sh
- - name: Run TV Tests
- timeout-minutes: 10
+ ./scripts/run_in_build_env.sh \
+ "./scripts/build/build_examples.py \
+ --target linux-x64-chip-tool-${BUILD_VARIANT}${CHIP_TOOL_VARIANT} \
+ --target linux-x64-all-clusters-${BUILD_VARIANT}-test-group \
+ --target linux-x64-tv-app-${BUILD_VARIANT} \
+ build \
+ --copy-artifacts-to objdir-clone \
+ "
+ - name: Run Tests
+ timeout-minutes: 30
run: |
- scripts/tests/test_suites.sh -a tv
+ ./scripts/run_in_build_env.sh \
+ "./scripts/tests/run_test_suite.py \
+ --chip-tool ./out/linux-x64-chip-tool-${BUILD_VARIANT}${CHIP_TOOL_VARIANT}/chip-tool \
+ run \
+ --iterations 1 \
+ --all-clusters-app ./out/linux-x64-all-clusters-${BUILD_VARIANT}-test-group/chip-all-clusters-app \
+ --tv-app ./out/linux-x64-tv-app-${BUILD_VARIANT}/chip-tv-app \
+ "
- name: Uploading core files
uses: actions/upload-artifact@v2
if: ${{ failure() }} && ${{ !env.ACT }}
with:
- name: crash-core-linux-${{ matrix.type }}-${{ matrix.eventloop }}
+ name:
+ crash-core-linux-${{ matrix.type }}-${{ matrix.eventloop
+ }}
path: /tmp/cores/
# Cores are big; don't hold on to them too long.
retention-days: 5
@@ -103,7 +109,9 @@ jobs:
uses: actions/upload-artifact@v2
if: ${{ failure() }} && ${{ !env.ACT }}
with:
- name: crash-objdir-linux-${{ matrix.type }}-${{ matrix.eventloop }}
+ name:
+ crash-objdir-linux-${{ matrix.type }}-${{ matrix.eventloop
+ }}
path: objdir-clone/
# objdirs are big; don't hold on to them too long.
retention-days: 5
@@ -112,12 +120,12 @@ jobs:
timeout-minutes: 60
strategy:
- matrix:
- type: [tsan]
- eventloop: [eventloop_same, eventloop_separate]
+ matrix:
+ build_variant: [no-ble-tsan, no-ble-asan]
+ chip_tool: ["", -same-event-loop]
env:
- USE_SEPARATE_EVENTLOOP: ${{ matrix.eventloop == 'eventloop_separate' }}
- USE_TSAN: ${{ matrix.type == 'tsan' }}
+ BUILD_VARIANT: ${{matrix.build_variant}}
+ CHIP_TOOL_VARIANT: ${{matrix.chip_tool}}
if: github.actor != 'restyled-io[bot]'
runs-on: macos-latest
@@ -130,7 +138,9 @@ jobs:
- name: Setup Environment
# coreutils for stdbuf
run: brew install openssl pkg-config coreutils
- - name: Try to ensure the directories for core dumping and diagnostic log collection exist and we can write them.
+ - name:
+ Try to ensure the directories for core dumping and diagnostic
+ log collection exist and we can write them.
run: |
sudo chown ${USER} /cores || true
mkdir -p ~/Library/Logs/DiagnosticReports || true
@@ -150,39 +160,40 @@ jobs:
uses: actions/upload-artifact@v2
if: ${{ always() }} && ${{ !env.ACT }}
with:
- name: bootstrap-logs-darwin-${{ matrix.type }}-${{ matrix.eventloop }}
+ name:
+ bootstrap-logs-darwin-${{ matrix.type }}-${{
+ matrix.eventloop }}
path: |
- .environment/gn_out/.ninja_log
- .environment/pigweed-venv/*.log
- - name: Run Build Test Server
- timeout-minutes: 10
- run: |
- scripts/examples/gn_build_example.sh examples/all-clusters-app/linux out/debug/standalone/ chip_config_network_layer_ble=false is_tsan=${USE_TSAN}
- - name: Build chip-tool
- timeout-minutes: 10
- run: |
- scripts/examples/gn_build_example.sh examples/chip-tool out/debug/standalone/ is_tsan=${USE_TSAN} config_use_separate_eventloop=${USE_SEPARATE_EVENTLOOP}
- - name: Copy objdir
+ .environment/gn_out/.ninja_log
+ .environment/pigweed-venv/*.log
+ - name: Build Apps
+ timeout-minutes: 20
run: |
- # The idea is to not upload our objdir unless builds have
- # actually succeeded, because that just wastes space.
- rsync -a out/debug/standalone/ objdir-clone || true
- - name: Run Test Suites
- timeout-minutes: 35
+ ./scripts/run_in_build_env.sh \
+ "./scripts/build/build_examples.py \
+ --target darwin-x64-chip-tool-${BUILD_VARIANT}${CHIP_TOOL_VARIANT} \
+ --target darwin-x64-all-clusters-${BUILD_VARIANT} \
+ build \
+ --copy-artifacts-to objdir-clone \
+ "
+ - name: Run Tests
+ timeout-minutes: 45
run: |
- scripts/tests/test_suites.sh
- - name: Uploading application logs
- uses: actions/upload-artifact@v2
- if: ${{ failure() }} && ${{ !env.ACT }}
- with:
- name: test-suite-app-logs-${{ matrix.type }}-${{ matrix.eventloop }}
- path: /tmp/test_suites_app_logs/
- retention-days: 5
+ ./scripts/run_in_build_env.sh \
+ "./scripts/tests/run_test_suite.py \
+ --chip-tool ./out/darwin-x64-chip-tool-${BUILD_VARIANT}${CHIP_TOOL_VARIANT}/chip-tool \
+ --target-skip-glob '{TestGroupMessaging,TV_*}' \
+ run \
+ --iterations 1 \
+ --all-clusters-app ./out/darwin-x64-all-clusters-${BUILD_VARIANT}/chip-all-clusters-app \
+ "
- name: Uploading core files
uses: actions/upload-artifact@v2
if: ${{ failure() }} && ${{ !env.ACT }}
with:
- name: crash-core-darwin-${{ matrix.type }}-${{ matrix.eventloop }}
+ name:
+ crash-core-darwin-${{ matrix.type }}-${{ matrix.eventloop
+ }}
path: /cores/
# Cores are big; don't hold on to them too long.
retention-days: 5
@@ -190,13 +201,17 @@ jobs:
uses: actions/upload-artifact@v2
if: ${{ failure() }} && ${{ !env.ACT }}
with:
- name: crash-log-darwin-${{ matrix.type }}-${{ matrix.eventloop }}
+ name:
+ crash-log-darwin-${{ matrix.type }}-${{ matrix.eventloop
+ }}
path: ~/Library/Logs/DiagnosticReports/
- name: Uploading objdir for debugging
uses: actions/upload-artifact@v2
if: ${{ failure() }} && ${{ !env.ACT }}
with:
- name: crash-objdir-darwin-${{ matrix.type }}-${{ matrix.eventloop }}
+ name:
+ crash-objdir-darwin-${{ matrix.type }}-${{
+ matrix.eventloop }}
path: objdir-clone/
# objdirs are big; don't hold on to them too long.
retention-days: 5
diff --git a/.github/workflows/unit_integration_test.yaml b/.github/workflows/unit_integration_test.yaml
index e7132151972fc0..d692edd02592d5 100644
--- a/.github/workflows/unit_integration_test.yaml
+++ b/.github/workflows/unit_integration_test.yaml
@@ -37,10 +37,9 @@ jobs:
runs-on: ubuntu-latest
container:
- image: connectedhomeip/chip-build:0.5.25
+ image: connectedhomeip/chip-build:0.5.33
volumes:
- "/tmp/log_output:/tmp/test_logs"
- - "/tmp/happy_test_logs:/tmp/happy_test_logs"
options:
--privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"
@@ -52,10 +51,7 @@ jobs:
- name: Bootstrap
timeout-minutes: 10
run: |
- mkdir -p /tmp/happy_test_logs ;
mkdir -p /tmp/log_output ;
- scripts/tests/happy_tests.sh install_packages ;
- scripts/tests/happy_tests.sh bootstrap ;
scripts/build/gn_bootstrap.sh ;
- name: Uploading bootstrap logs
uses: actions/upload-artifact@v2
@@ -82,20 +78,13 @@ jobs:
*) ;;
esac
- scripts/build/gn_gen.sh --args="$GN_ARGS chip_enable_happy_tests=true"
+ scripts/build/gn_gen.sh --args="$GN_ARGS"
- name: Run Build
timeout-minutes: 8
- run: scripts/build/gn_build.sh
+ run: scripts/run_in_build_env.sh "ninja -C out/$BUILD_TYPE"
- name: Run Tests
timeout-minutes: 15
- run: RUN_HAPPY_TESTS=1 scripts/tests/gn_tests.sh
- - name: Uploading Happy Test Log
- uses: actions/upload-artifact@v2
- if: ${{ always() }} && ${{ !env.ACT }}
- with:
- name:
- happy_log-${{ steps.outsuffix.outputs.value }}-${{ matrix.type }}
- path: /tmp/happy_test_logs/
+ run: scripts/tests/gn_tests.sh
# TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227
# TODO https://github.com/project-chip/connectedhomeip/issues/1512
# - name: Run Code Coverage
diff --git a/.github/workflows/zap_templates.yaml b/.github/workflows/zap_templates.yaml
index 008d696457df00..66e0890624e8e7 100644
--- a/.github/workflows/zap_templates.yaml
+++ b/.github/workflows/zap_templates.yaml
@@ -39,7 +39,7 @@ jobs:
uses: actions/setup-node@v1
with:
node-version: '14.x'
- - name: Use Java
+ - name: Use Java
uses: actions/setup-java@v2
with:
distribution: 'zulu'
@@ -56,7 +56,7 @@ jobs:
npm rebuild canvas --update-binary
npm run build-spa
- name: Generate all
- timeout-minutes: 5
+ timeout-minutes: 15
run: scripts/tools/zap_regen_all.py
- name: Check for uncommited changes
run: |
diff --git a/.gitignore b/.gitignore
index 888e0a722532c3..878192f2bddb6d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,3 +57,6 @@ docs/html
# compilation database for VSCode and other Ides
compile_commands.json
+
+# backup files, usually created by the ZAP tool
+*~
diff --git a/.gitmodules b/.gitmodules
index bee8a7489182fa..85e0f84d9a05ce 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -46,10 +46,6 @@
path = third_party/cirque/repo
url = https://github.com/openweave/cirque.git
branch = master
-[submodule "happy"]
- path = third_party/happy/repo
- url = https://github.com/openweave/happy.git
- branch = master
[submodule "nanopb"]
path = third_party/nanopb/repo
url = https://github.com/nanopb/nanopb.git
diff --git a/.restyled.yaml b/.restyled.yaml
index 176c2498fedc5b..2417db2ba8e7ea 100644
--- a/.restyled.yaml
+++ b/.restyled.yaml
@@ -67,6 +67,8 @@ exclude:
- "third_party/nanopb/repo/**/*"
- "src/android/CHIPTool/gradlew" # gradle wrapper generated file
- "third_party/android_deps/gradlew" # gradle wrapper generated file
+ - "src/controller/python/chip/clusters/Objects.py" # generated file, no point to restyle
+ - "src/controller/python/chip/clusters/CHIPClusters.py" # generated file, no point to restyle
changed_paths:
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 147053871024d8..f89d0eaf3c462b 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -192,7 +192,7 @@
"name": "Debug Mbed unit tests",
"type": "cortex-debug",
"request": "launch",
- "cwd": "${workspaceRoot}/src/test_driver/mbed",
+ "cwd": "${workspaceRoot}/src/test_driver/mbed/unit_tests",
"executable": "./build-${input:mbedTarget}/${input:mbedDebugProfile}/chip-mbed-unit-tests.elf",
"armToolchainPath": "${env:PW_ENVIRONMENT_ROOT}/cipd/pigweed/bin/", // Pigweed environment bootstraping required
"servertype": "openocd",
@@ -225,7 +225,7 @@
"name": "Debug Mbed unit tests [remote]",
"type": "cortex-debug",
"request": "launch",
- "cwd": "${workspaceRoot}/src/test_driver/mbed",
+ "cwd": "${workspaceRoot}/src/test_driver/mbed/unit_tests",
"executable": "./build-${input:mbedTarget}/${input:mbedDebugProfile}/chip-mbed-unit-tests.elf",
"armToolchainPath": "${env:PW_ENVIRONMENT_ROOT}/cipd/pigweed/bin/", // Pigweed environment bootstraping required
"servertype": "external",
@@ -252,7 +252,7 @@
"name": "Flash Mbed unit tests",
"type": "cortex-debug",
"request": "launch",
- "cwd": "${workspaceRoot}/src/test_driver/mbed",
+ "cwd": "${workspaceRoot}/src/test_driver/mbed//unit_tests",
"executable": "./build-${input:mbedTarget}/${input:mbedFlashProfile}/chip-mbed-unit-tests.elf",
"armToolchainPath": "${env:PW_ENVIRONMENT_ROOT}/cipd/pigweed/bin/", // Pigweed environment bootstraping required
"servertype": "openocd",
@@ -277,7 +277,7 @@
"name": "Flash Mbed unit tests [remote]",
"type": "cortex-debug",
"request": "launch",
- "cwd": "${workspaceRoot}/src/test_driver/mbed",
+ "cwd": "${workspaceRoot}/src/test_driver/mbed/unit_tests",
"executable": "./build-${input:mbedTarget}/${input:mbedFlashProfile}/chip-mbed-unit-tests.elf",
"armToolchainPath": "${env:PW_ENVIRONMENT_ROOT}/cipd/pigweed/bin/", // Pigweed environment bootstraping required
"servertype": "external",
diff --git a/.vscode/settings.json b/.vscode/settings.json
index c4290296d8315f..6ff631080c2465 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -156,5 +156,6 @@
"clang-format.fallbackStyle": "WebKit",
"files.trimFinalNewlines": true,
"C_Cpp.default.cppStandard": "gnu++14",
- "C_Cpp.default.cStandard": "gnu11"
+ "C_Cpp.default.cStandard": "gnu11",
+ "cmake.configureOnOpen": false
}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index a7a102d81514e2..a0f49412f87aed 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -167,9 +167,20 @@
"base": "$gcc",
"fileLocation": [
"relative",
- "${workspaceFolder}/src/test_driver/mbed/build"
+ "${workspaceFolder}/src/test_driver/mbed/unit_tests/build"
]
}
+ },
+ {
+ "label": "Flash EFR32 board",
+ "type": "shell",
+ "command": "python3",
+ "args": [
+ "${workspaceFolder}/out/${input:exampleTarget}/chip-efr32-*.flash.py"
+ ],
+ "problemMatcher": {
+ "base": "$gcc"
+ }
}
],
"inputs": [
@@ -229,10 +240,45 @@
"android-x64-chip-tool",
"android-x86-chip-tool",
"efr32-brd4161a-light",
+ "efr32-brd4163a-light",
+ "efr32-brd4164a-light",
+ "efr32-brd4166a-light",
+ "efr32-brd4170a-light",
+ "efr32-brd4186a-light",
+ "efr32-brd4187a-light",
+ "efr32-brd4304a-light",
"efr32-brd4161a-light-rpc",
+ "efr32-brd4163a-light-rpc",
+ "efr32-brd4164a-light-rpc",
+ "efr32-brd4166a-light-rpc",
+ "efr32-brd4170a-light-rpc",
+ "efr32-brd4186a-light-rpc",
+ "efr32-brd4187a-light-rpc",
+ "efr32-brd4304a-light-rpc",
"efr32-brd4161a-lock",
+ "efr32-brd4163a-lock",
+ "efr32-brd4164a-lock",
+ "efr32-brd4166a-lock",
+ "efr32-brd4170a-lock",
+ "efr32-brd4186a-lock",
+ "efr32-brd4187a-lock",
+ "efr32-brd4304a-lock",
"efr32-brd4161a-unit-test",
+ "efr32-brd4163a-unit-test",
+ "efr32-brd4164a-unit-test",
+ "efr32-brd4166a-unit-test",
+ "efr32-brd4170a-unit-test",
+ "efr32-brd4186a-unit-test",
+ "efr32-brd4187a-unit-test",
+ "efr32-brd4304a-unit-test",
"efr32-brd4161a-window-covering",
+ "efr32-brd4163a-window-covering",
+ "efr32-brd4164a-window-covering",
+ "efr32-brd4166a-window-covering",
+ "efr32-brd4170a-window-covering",
+ "efr32-brd4186a-window-covering",
+ "efr32-brd4187a-window-covering",
+ "efr32-brd4304a-window-covering",
"esp32-c3devkit-all-clusters",
"esp32-devkitc-all-clusters",
"esp32-devkitc-all-clusters-ipv6only",
@@ -246,6 +292,7 @@
"esp32-m5stack-all-clusters-rpc-ipv6only",
"infineon-p6-all-clusters",
"infineon-p6-lock",
+ "infineon-p6-light",
"linux-arm64-all-clusters",
"linux-arm64-all-clusters-ipv6only",
"linux-arm64-chip-tool",
diff --git a/BUILD.gn b/BUILD.gn
index 57d4f38b76ce10..fb27e5768c16c5 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -57,7 +57,6 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") {
"$dir_pw_watch/py",
"integrations/mobly:chip_mobly",
"scripts:requirements",
- "third_party/happy",
]
}
@@ -163,15 +162,6 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") {
]
}
}
-
- # We don't always want to run happy tests, make them a seperate group.
- if (chip_enable_happy_tests) {
- group("happy_tests") {
- if (chip_link_tests) {
- deps = [ "//src:happy_tests" ]
- }
- }
- }
} else {
# This is the unified build. Configure various real toolchains.
import("${chip_root}/build/chip/chip_build.gni")
@@ -315,7 +305,7 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") {
if (enable_fake_tests) {
chip_build("fake_platform") {
- toolchain = "${build_root}/toolchain/host:fake_${host_cpu}_gcc"
+ toolchain = "${build_root}/toolchain/fake:fake_${host_cpu}_gcc"
}
}
diff --git a/build/chip/happy_test.gni b/build/chip/happy_test.gni
deleted file mode 100644
index 18392e9f9b9803..00000000000000
--- a/build/chip/happy_test.gni
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (c) 2020 Project CHIP Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import("//build_overrides/build.gni")
-import("//build_overrides/chip.gni")
-
-import("${chip_root}/build/chip/tests.gni")
-
-assert(chip_build_tests)
-assert(chip_enable_happy_tests)
-
-template("happy_test") {
- _suite_name = target_name
- _deps = invoker.deps
- _test_output_dir = "${root_out_dir}/tests"
-
- _tests = []
- if (defined(invoker.tests)) {
- foreach(_test, invoker.tests) {
- action("${_test}_test") {
- script = rebase_path("${chip_root}/scripts/tests/happy_test_wrapper.py")
- data_deps = _deps
- inputs = [ "${_test}.py" ]
- outputs = [ "${_test_output_dir}/${_test}.testout" ]
-
- # GN will run python under virtual env, which will cause test failed to run
- args = [
- "--ci=True",
- "--silent=True",
- "--test-bin-dir",
- rebase_path("${_test_output_dir}"),
- rebase_path("${_test}.py"),
- ]
- }
-
- _tests += [ ":${_test}_test" ]
- }
- }
-
- group("${_suite_name}") {
- deps = _tests
- }
-}
diff --git a/build/chip/tests.gni b/build/chip/tests.gni
index 9d4089874027e9..70218c49728ed8 100644
--- a/build/chip/tests.gni
+++ b/build/chip/tests.gni
@@ -20,9 +20,6 @@ import("${chip_root}/src/platform/device.gni")
declare_args() {
# Enable building tests.
chip_build_tests = current_os != "freertos"
-
- # Enable happy tests.
- chip_enable_happy_tests = false
}
declare_args() {
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index d26edebaf3a929..81fb08caa8afdb 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -304,6 +304,9 @@ declare_args() {
# enable undefined behavior sanitizer
is_ubsan = false
+ # enable libfuzzer
+ is_libfuzzer = false
+
# Exit on sanitize error. Generally standard libraries may get errors
# so not stopping on the first error is often useful
is_sanitize_fatal = true
@@ -374,7 +377,16 @@ config("sanitize_default") {
}
}
+config("libfuzzer_fuzzing") {
+ cflags = [ "-fsanitize=fuzzer" ]
+ ldflags = cflags
+}
+
config("fuzzing_default") {
+ configs = []
+ if (is_libfuzzer) {
+ configs += [ ":libfuzzer_fuzzing" ]
+ }
}
declare_args() {
diff --git a/build/toolchain/android/android_toolchain.gni b/build/toolchain/android/android_toolchain.gni
index d54d2184913059..b2c3290a39a50b 100644
--- a/build/toolchain/android/android_toolchain.gni
+++ b/build/toolchain/android/android_toolchain.gni
@@ -55,6 +55,9 @@ template("android_clang_toolchain") {
_ndk_host_cpu = ""
if (host_cpu == "x64") {
_ndk_host_cpu = "-x86_64"
+ } else if (host_cpu == "arm64") {
+ # until NDK 24.0.7856742-beta1, the host cpu on apple silicon is x86_64
+ _ndk_host_cpu = "-x86_64"
}
_ndk_host = _ndk_host_os + _ndk_host_cpu
diff --git a/build/toolchain/fake/BUILD.gn b/build/toolchain/fake/BUILD.gn
new file mode 100644
index 00000000000000..62ef8fffcac96d
--- /dev/null
+++ b/build/toolchain/fake/BUILD.gn
@@ -0,0 +1,27 @@
+# Copyright 2020 The Pigweed Authors
+# Copyright (c) 2020 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("${build_root}/toolchain/gcc_toolchain.gni")
+
+gcc_toolchain("fake_${host_cpu}_gcc") {
+ toolchain_args = {
+ current_os = host_os
+ current_os = host_os
+ current_cpu = host_cpu
+ is_clang = false
+ chip_fake_platform = true
+ }
+}
diff --git a/build/toolchain/flashable_executable.gni b/build/toolchain/flashable_executable.gni
index afd155547a12a3..fdcb716cbaeb6e 100644
--- a/build/toolchain/flashable_executable.gni
+++ b/build/toolchain/flashable_executable.gni
@@ -57,6 +57,7 @@ template("gen_flashing_script") {
[
"flashing_script_generator",
"flashing_script_name",
+ "flashing_script_inputs",
"flashing_options",
"deps",
"data_deps",
@@ -72,6 +73,7 @@ template("gen_flashing_script") {
]
script = flashing_script_generator
+ inputs = flashing_script_inputs
}
}
@@ -131,6 +133,7 @@ template("flashable_executable") {
gen_flashing_script("$target_name.flashing") {
flashing_script_generator = invoker.flashing_script_generator
+ flashing_script_inputs = invoker.flashing_script_inputs
flashing_script_name = "$root_out_dir/${invoker.flashing_script_name}"
if (defined(invoker.flashing_options)) {
flashing_options = invoker.flashing_options
diff --git a/build/toolchain/host/BUILD.gn b/build/toolchain/host/BUILD.gn
index 9640e65e51620a..5f8833852bf537 100644
--- a/build/toolchain/host/BUILD.gn
+++ b/build/toolchain/host/BUILD.gn
@@ -32,13 +32,3 @@ gcc_toolchain("${host_os}_${host_cpu}_clang") {
is_clang = true
}
}
-
-gcc_toolchain("fake_${host_cpu}_gcc") {
- toolchain_args = {
- current_os = host_os
- current_os = host_os
- current_cpu = host_cpu
- is_clang = false
- chip_fake_platform = true
- }
-}
diff --git a/build_overrides/k32w0_sdk.gni b/build_overrides/k32w0_sdk.gni
index e8519a3ecafe91..fa487e9e7fb254 100644
--- a/build_overrides/k32w0_sdk.gni
+++ b/build_overrides/k32w0_sdk.gni
@@ -14,5 +14,5 @@
declare_args() {
# Root directory for K32W SDK build files.
- k32w0_sdk_build_root = "//third_party/k32w_sdk/nxp/k32w/k32w0"
+ k32w0_sdk_build_root = "//third_party/nxp/k32w0_sdk"
}
diff --git a/config/ameba/args.gni b/config/ameba/args.gni
index b3f7af63e284ab..5d9420e0fbb63c 100755
--- a/config/ameba/args.gni
+++ b/config/ameba/args.gni
@@ -31,7 +31,5 @@ chip_inet_config_enable_udp_endpoint = true
chip_bypass_rendezvous = false
chip_config_network_layer_ble = true
-chip_ip_commissioning = true
-chip_use_clusters_for_ip_commissioning = true
custom_toolchain = "//third_party/connectedhomeip/config/ameba/toolchain:ameba"
diff --git a/config/esp32/components/chip/CMakeLists.txt b/config/esp32/components/chip/CMakeLists.txt
index 967c2c6fcfd374..d45d7f365de625 100644
--- a/config/esp32/components/chip/CMakeLists.txt
+++ b/config/esp32/components/chip/CMakeLists.txt
@@ -29,14 +29,16 @@ if(NOT CHIP_ROOT)
get_filename_component(CHIP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../.. REALPATH)
endif()
-set(CHIP_REQURIE_COMPONENTS freertos lwip bt mdns mbedtls fatfs)
+set(CHIP_REQURIE_COMPONENTS freertos lwip bt mdns mbedtls fatfs app_update console openthread)
-if (CONFIG_ENABLE_CHIP_SHELL)
- list(APPEND CHIP_REQURIE_COMPONENTS console)
-endif()
-
-if (CONFIG_OPENTHREAD_ENABLED)
- list(APPEND CHIP_REQURIE_COMPONENTS openthread)
+if (NOT CMAKE_BUILD_EARLY_EXPANSION)
+ if (CONFIG_COMPILER_OPTIMIZATION_DEFAULT OR CONFIG_COMPILER_OPTIMIZATION_NONE)
+ set(is_debug TRUE)
+ else()
+ if (NOT CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE)
+ message(FATAL_ERROR "CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE shall be set")
+ endif()
+ endif()
endif()
idf_component_register(SRCS chip.c chip.cpp
@@ -62,7 +64,7 @@ chip_gn_arg_append("esp32_ar" "\"${CMAKE_AR}\"")
chip_gn_arg_append("esp32_cc" "\"${CMAKE_C_COMPILER}\"")
chip_gn_arg_append("esp32_cxx" "\"${CMAKE_CXX_COMPILER}\"")
chip_gn_arg_append("esp32_cpu" "\"esp32\"")
-chip_gn_arg_bool("is_debug" is_debug)
+chip_gn_arg_bool("is_debug" ${is_debug})
if(CONFIG_BT_ENABLED)
chip_gn_arg_append("chip_config_network_layer_ble" "true")
@@ -97,6 +99,10 @@ if (CONFIG_OPENTHREAD_ENABLED)
chip_gn_arg_append("chip_enable_openthread" "true")
endif()
+if (CONFIG_ENABLE_OTA_REQUESTOR)
+ chip_gn_arg_append("chip_enable_ota_requestor" "true")
+endif()
+
set(args_gn_input "${CMAKE_CURRENT_BINARY_DIR}/args.gn.in")
file(GENERATE OUTPUT "${args_gn_input}" CONTENT "${chip_gn_args}")
@@ -224,3 +230,8 @@ target_link_libraries(${COMPONENT_LIB} INTERFACE -Wl,--start-group
# Make the component dependent on our CHIP build
add_dependencies(${COMPONENT_LIB} chip_gn)
+
+if(CONFIG_ENABLE_PW_RPC)
+ set(WRAP_FUNCTIONS esp_log_write)
+ target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=${WRAP_FUNCTIONS}")
+endif()
diff --git a/config/esp32/components/chip/Kconfig b/config/esp32/components/chip/Kconfig
index 904c657f6bf1df..3e59822a63553b 100644
--- a/config/esp32/components/chip/Kconfig
+++ b/config/esp32/components/chip/Kconfig
@@ -67,17 +67,6 @@ menu "CHIP Core"
message handlers with the CHIP message layer to direct incoming messages to
their code.
- config RMP_TIMER_DEFAULT_PERIOD_SHIFT
- int "Default WRMP Timer Tick Interval Shift (ms)"
- range 0 16
- default 6
- help
- The default interval shift, in milliseconds (e.g. 6 bits shift
- = 64ms), at which items in the WRMP pending message list are
- processed for the purpose of retransmission or timeout.
-
- This value can be overridden by the application at runtime.
-
config ENABLE_PW_RPC
bool "Enable Pigweed RPC library"
default n
@@ -400,26 +389,26 @@ menu "CHIP Device Layer"
The device product id (in hex). This is a unique id assigned by the device vendor to identify the product or device type.
Defaults to a CHIP-assigned id designating a non-production or test "product".
- config DEFAULT_DEVICE_PRODUCT_REVISION
- int "Default Device Product Revision"
+ config DEFAULT_DEVICE_HARDWARE_VERSION
+ int "Default Device Hardware Version"
range 0 65535
default 0
help
- The default device product revision.
+ The default device hardware version.
- Product revisions are specific to a particular device vendor and product id, and typically
- correspond to a revision of the physical device, a change to its packaging, and/or a change
+ Hardware versions are specific to a particular device vendor and product id, and typically
+ correspond to a version of the physical device, a change to its packaging, and/or a change
to its marketing presentation. This value is generally *not* incremented for device software
- revisions.
+ versions.
- This is a default value which is used when a product revision has not been stored in device
+ This is a default value which is used when a hardware version has not been stored in device
persistent storage (e.g. by a factory provisioning process).
- config DEVICE_FIRMWARE_REVISION
- string "Device Firmware Revision"
+ config DEVICE_SOFTWARE_VERSION
+ string "Device Software Version"
default ""
help
- A string identifying the firmware revision running on the device.
+ A string identifying the software version running on the device.
config DEVICE_TYPE
int "Default Device type"
diff --git a/config/esp32/components/chip/component.mk b/config/esp32/components/chip/component.mk
index c1a18058759fff..21339e3bc3f95c 100644
--- a/config/esp32/components/chip/component.mk
+++ b/config/esp32/components/chip/component.mk
@@ -99,8 +99,8 @@ COMPONENT_ADD_INCLUDEDIRS += $(REL_OUTPUT_DIR)/src/include \
# Tell the ESP-IDF build system that the CHIP component defines its own build
# and clean targets.
-COMPONENT_OWNBUILDTARGET = 1
-COMPONENT_OWNCLEANTARGET = 1
+COMPONENT_OWNBUILDTARGET := chip_build
+COMPONENT_OWNCLEANTARGET := chip_clean
is_debug ?= true
@@ -156,10 +156,10 @@ endif
cd $(COMPONENT_PATH); ninja $(subst 1,-v,$(filter 1,$(V))) -C $(OUTPUT_DIR) esp32
-build : install-chip
+chip_build : install-chip
echo "CHIP built and installed..."
cp -a ${OUTPUT_DIR}/lib/libCHIP.a ${OUTPUT_DIR}/libchip.a
-clean:
+chip_clean:
echo "RM $(OUTPUT_DIR)"
rm -rf $(OUTPUT_DIR)
diff --git a/src/app/zap-templates/common/StructHelper.js b/config/ios/SystemProjectConfig.h
similarity index 77%
rename from src/app/zap-templates/common/StructHelper.js
rename to config/ios/SystemProjectConfig.h
index 8e37a6ba056295..06d9baaee59492 100644
--- a/src/app/zap-templates/common/StructHelper.js
+++ b/config/ios/SystemProjectConfig.h
@@ -15,14 +15,12 @@
* limitations under the License.
*/
-const kType = 'STRUCT';
-
-function isStruct(type)
-{
- return type.toUpperCase() == kType;
-}
+/**
+ * @file
+ * chip::System project configuration for standalone builds on iOS
+ *
+ */
+#ifndef SYSTEMPROJECTCONFIG_H
+#define SYSTEMPROJECTCONFIG_H
-//
-// Module exports
-//
-exports.isStruct = isStruct;
+#endif /* SYSTEMPROJECTCONFIG_H */
diff --git a/config/mbed/CMakeLists.txt b/config/mbed/CMakeLists.txt
index b6bf30cfe9453b..b3e362e6ece434 100644
--- a/config/mbed/CMakeLists.txt
+++ b/config/mbed/CMakeLists.txt
@@ -371,6 +371,7 @@ target_include_directories(${APP_TARGET} PRIVATE
${PIGWEED_ROOT}/pw_log_basic/public_overrides
${PIGWEED_ROOT}/pw_span/public_overrides
${PIGWEED_ROOT}/pw_span/public
+ ${PIGWEED_ROOT}/pw_sync/public
${PIGWEED_ROOT}/pw_polyfill/public
${PIGWEED_ROOT}/pw_polyfill/standard_library_public
${PIGWEED_ROOT}/pw_polyfill/public_overrides
diff --git a/config/nrfconnect/app/overlay-ota_requestor.conf b/config/nrfconnect/app/overlay-ota_requestor.conf
new file mode 100644
index 00000000000000..51f0acd210a330
--- /dev/null
+++ b/config/nrfconnect/app/overlay-ota_requestor.conf
@@ -0,0 +1,17 @@
+#
+# Copyright (c) 2021 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+CONFIG_CHIP_OTA_REQUESTOR=y
diff --git a/config/nrfconnect/app/sample-defaults.conf b/config/nrfconnect/app/sample-defaults.conf
index 829ef8ef29c880..93ac000214ad8b 100644
--- a/config/nrfconnect/app/sample-defaults.conf
+++ b/config/nrfconnect/app/sample-defaults.conf
@@ -25,6 +25,9 @@ CONFIG_ASSERT=y
CONFIG_HW_STACK_PROTECTION=y
CONFIG_SHELL=y
+# Enable getting reboot reasons information
+CONFIG_HWINFO=y
+
# Generic networking options
CONFIG_NETWORKING=y
CONFIG_NET_SOCKETS=y
diff --git a/config/nrfconnect/chip-module/CMakeLists.txt b/config/nrfconnect/chip-module/CMakeLists.txt
index b78bb83f021844..4852fefa702fe2 100644
--- a/config/nrfconnect/chip-module/CMakeLists.txt
+++ b/config/nrfconnect/chip-module/CMakeLists.txt
@@ -196,6 +196,7 @@ chip_gn_arg_bool ("chip_enable_openthread" CONFIG_NET_L2_OPENTH
chip_gn_arg_bool ("chip_config_network_layer_ble" CONFIG_BT)
chip_gn_arg_bool ("chip_inet_config_enable_ipv4" CONFIG_NET_IPV4)
chip_gn_arg_bool ("chip_enable_nfc" CONFIG_CHIP_NFC_COMMISSIONING)
+chip_gn_arg_bool ("chip_enable_ota_requestor" CONFIG_CHIP_OTA_REQUESTOR)
chip_gn_arg_bool ("chip_build_tests" CONFIG_CHIP_BUILD_TESTS)
chip_gn_arg_bool ("chip_monolithic_tests" CONFIG_CHIP_BUILD_TESTS)
chip_gn_arg_bool ("chip_inet_config_enable_tcp_endpoint" CONFIG_CHIP_BUILD_TESTS)
diff --git a/config/nrfconnect/chip-module/Kconfig b/config/nrfconnect/chip-module/Kconfig
index 0969370e93f5a5..1789996f2d3279 100644
--- a/config/nrfconnect/chip-module/Kconfig
+++ b/config/nrfconnect/chip-module/Kconfig
@@ -26,4 +26,11 @@ config CHIP_NFC_COMMISSIONING
imply NFC_NDEF_URI_REC
imply NFC_NDEF_URI_MSG
help
- Enables NFC commissioning by sharing onboarding payload in NFC tag.
\ No newline at end of file
+ Enables NFC commissioning by sharing onboarding payload in NFC tag.
+
+# See config/zephyr/Kconfig for full definition
+config CHIP_OTA_REQUESTOR
+ bool
+ imply DFU_TARGET
+ imply STREAM_FLASH
+ imply STREAM_FLASH_ERASE
diff --git a/config/python/CHIPProjectConfig.h b/config/python/CHIPProjectConfig.h
index bdb2b613f7ceb7..7282f35db3a033 100644
--- a/config/python/CHIPProjectConfig.h
+++ b/config/python/CHIPProjectConfig.h
@@ -25,8 +25,6 @@
#define CHIP_CONFIG_ENABLE_EPHEMERAL_UDP_PORT 1
-#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
-
#define CHIP_CONFIG_EVENT_LOGGING_NUM_EXTERNAL_CALLBACKS 2
#define CHIP_CONFIG_EVENT_LOGGING_EXTERNAL_EVENT_SUPPORT 1
diff --git a/config/standalone/CHIPProjectConfig.h b/config/standalone/CHIPProjectConfig.h
index 35343fc1561630..90873026e001ce 100644
--- a/config/standalone/CHIPProjectConfig.h
+++ b/config/standalone/CHIPProjectConfig.h
@@ -26,8 +26,6 @@
#define CHIP_CONFIG_ENABLE_EPHEMERAL_UDP_PORT 1
-#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
-
#define CHIP_CONFIG_EVENT_LOGGING_NUM_EXTERNAL_CALLBACKS 2
#define CHIP_CONFIG_EVENT_LOGGING_EXTERNAL_EVENT_SUPPORT 1
@@ -53,6 +51,8 @@
// WARNING: These options make it possible to circumvent basic Chip security functionality,
// including message encryption. Because of this they MUST NEVER BE ENABLED IN PRODUCTION BUILDS.
//
+// To build with this flag, pass 'treat_warnings_as_errors=false' to gn/ninja.
+//
#define CHIP_CONFIG_SECURITY_TEST_MODE 0
#define CHIP_CONFIG_REQUIRE_AUTH 1
@@ -69,4 +69,10 @@
#define CHIP_CONFIG_DATA_MANAGEMENT_CLIENT_EXPERIMENTAL 1
+#ifndef CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT
+#define CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT 4
+#endif
+
+#define CONFIG_IM_BUILD_FOR_UNIT_TEST 1
+
#endif /* CHIPPROJECTCONFIG_H */
diff --git a/config/telink/chip-module/CMakeLists.txt b/config/telink/chip-module/CMakeLists.txt
index 1e7c32e137c359..384e66ace0bc90 100644
--- a/config/telink/chip-module/CMakeLists.txt
+++ b/config/telink/chip-module/CMakeLists.txt
@@ -198,7 +198,6 @@ chip_gn_arg_bool ("chip_inet_config_enable_ipv4" CONFIG_NET_IPV4)
chip_gn_arg_bool ("chip_build_tests" CONFIG_CHIP_BUILD_TESTS)
chip_gn_arg_bool ("chip_inet_config_enable_tcp_endpoint" CONFIG_CHIP_BUILD_TESTS)
chip_gn_arg_bool ("chip_build_libshell" CONFIG_CHIP_LIB_SHELL)
-chip_gn_arg_bool ("chip_build_pw_rpc_lib" CONFIG_CHIP_PW_RPC)
if (BOARD STREQUAL "native_posix")
chip_gn_arg_string("target_cpu" "x86")
@@ -246,6 +245,9 @@ target_include_directories(chip INTERFACE
${CMAKE_CURRENT_BINARY_DIR}/gen/include
)
target_link_directories(chip INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/lib)
+if (CONFIG_CHIP_LIB_SHELL)
+ target_link_options(chip INTERFACE -Wl,--whole-archive -lCHIPShell -Wl,--no-whole-archive)
+endif()
target_link_libraries(chip INTERFACE -Wl,--start-group ${CHIP_LIBRARIES} -Wl,--end-group)
add_dependencies(chip chip-gn)
diff --git a/config/zephyr/Kconfig b/config/zephyr/Kconfig
index 63aa1b37cde36b..63b9e727d17fbb 100644
--- a/config/zephyr/Kconfig
+++ b/config/zephyr/Kconfig
@@ -101,6 +101,13 @@ config CHIP_ENABLE_SLEEPY_END_DEVICE_SUPPORT
help
Enables Thread Sleepy End Device support in Matter.
+config CHIP_OTA_REQUESTOR
+ bool "Enable OTA requestor"
+ help
+ Enables OTA (Over-the-air) Requestor role that allows a device to perform
+ Device Firmware Upgrade by quering and downloading a new firmware image
+ from an external OTA Provider node.
+
config APP_LINK_WITH_CHIP
bool "Link 'app' with Connected Home over IP"
default y
diff --git a/docs/README.md b/docs/README.md
index f71b164d56f965..9b49300f55f6b8 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -6,7 +6,7 @@
[the build guide](guides/BUILDING.md)
- Documentation about running [cirque](https://github.com/openweave/cirque)
tests can be found in
- [the cirque test guide](src/test_driver/linux-cirque/README.md)
+ [the cirque test guide](../src/test_driver/linux-cirque/README.md)
- Documentation about standard build & development flows using
[Visual Studio Code](https://code.visualstudio.com/) can be found in
[the development guide](./VSCODE_DEVELOPMENT.md)
diff --git a/docs/discussion/lwip_ipv6.md b/docs/discussion/lwip_ipv6.md
index bbfc92d49df28f..adaabe5ddfcac2 100644
--- a/docs/discussion/lwip_ipv6.md
+++ b/docs/discussion/lwip_ipv6.md
@@ -17,6 +17,7 @@ need to incorporate this into their own middleware
- write a RIO patch, upstream to lwip
- Ensure patch is RFC compliant (especially re: expiry)
+- UPDATE: Patch is available at https://savannah.nongnu.org/patch/?10114
## Address Scopes
diff --git a/docs/guides/BUILDING.md b/docs/guides/BUILDING.md
index 1d8a4c2b602b65..5a76a187e39fd2 100644
--- a/docs/guides/BUILDING.md
+++ b/docs/guides/BUILDING.md
@@ -60,6 +60,8 @@ brew install openssl pkg-config
However, that does not expose the package to `pkg-config`. To fix that, one
needs to run something like the following:
+Intel:
+
```
cd /usr/local/lib/pkgconfig
ln -s ../../Cellar/openssl@1.1/1.1.1g/lib/pkgconfig/* .
@@ -68,6 +70,12 @@ ln -s ../../Cellar/openssl@1.1/1.1.1g/lib/pkgconfig/* .
where `openssl@1.1/1.1.1g` may need to be replaced with the actual version of
OpenSSL installed by Brew.
+Apple Silicon:
+
+```
+export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:"/opt/homebrew/opt/openssl@3/lib/pkgconfig"
+```
+
Note: If using MacPorts, `port install openssl` is sufficient to satisfy this
dependency.
diff --git a/docs/guides/android_building.md b/docs/guides/android_building.md
index ed9baeefb15365..6ca2d91dd54a1a 100644
--- a/docs/guides/android_building.md
+++ b/docs/guides/android_building.md
@@ -18,6 +18,7 @@ There are following Apps on Android
- [Source files](#source)
- [Requirements for building](#requirements)
- [ABIs and TARGET_CPU](#abi)
+ - [Gradle & JDK Version](#jdk)
- [Preparing for build](#preparing)
- [Building Android CHIPTool from scripts](#building-scripts)
- [Building Android CHIPTool from Android Studio](#building-studio)
@@ -57,6 +58,20 @@ architecture:
| x86 | x86 |
| x86_64 | x64 |
+
+
+### Gradle & JDK Version
+
+We are using Gradle 7.1.1 for all android project which does not support Java 17
+(https://docs.gradle.org/current/userguide/compatibility.html) while the default
+JDK version on MacOS for Apple Silicon is 'openjdk 17.0.1' or above.
+
+Using JDK bundled with Android Studio will help with that.
+
+```shell
+export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home/
+```
+
diff --git a/docs/guides/images/matter_ti_overview_simplified.png b/docs/guides/images/matter_ti_overview_simplified.png
new file mode 100755
index 00000000000000..2586fa41fdd97a
Binary files /dev/null and b/docs/guides/images/matter_ti_overview_simplified.png differ
diff --git a/docs/guides/ip_commissioning.md b/docs/guides/ip_commissioning.md
index feaf99993c5733..ca94e611bf0c62 100644
--- a/docs/guides/ip_commissioning.md
+++ b/docs/guides/ip_commissioning.md
@@ -40,7 +40,7 @@ device into commissioning mode.
### linux builds with an ethernet connection
```bash
-gn gen out/debug --args='chip_ip_commissioning=true'
+gn gen out/debug
ninja -C out/debug
```
diff --git a/docs/guides/nrfconnect_android_commissioning.md b/docs/guides/nrfconnect_android_commissioning.md
index 787ba5957a72ab..b6260873b968d7 100644
--- a/docs/guides/nrfconnect_android_commissioning.md
+++ b/docs/guides/nrfconnect_android_commissioning.md
@@ -1,6 +1,6 @@
# Commissioning nRF Connect Accessory using Android CHIPTool
-You can use [CHIPTool](android_chiptool_building.md) for Android smartphones to
+You can use [CHIPTool](android_building.md) for Android smartphones to
commission a Nordic Semiconductor device running an nRF Connect platform example
onto a Matter-enabled Thread network.
@@ -104,7 +104,7 @@ learn how to build and program the example onto an nRF52840 DK.
## Building and installing Android CHIPTool
To build the CHIPTool application for your smartphone, read the
-[Building Android CHIPTool](android_chiptool_building.md) guide.
+[Building Android](android_building.md) guide.
After building, install the application by completing the following steps:
diff --git a/docs/guides/nrfconnect_examples_cli.md b/docs/guides/nrfconnect_examples_cli.md
index 056fda2ebadf71..5ac2589113d678 100644
--- a/docs/guides/nrfconnect_examples_cli.md
+++ b/docs/guides/nrfconnect_examples_cli.md
@@ -163,7 +163,7 @@ available configuration data or to add a specific subcommand.
```shell
VendorId: 9050 (0x235A)
ProductId: 20043 (0x4E4B)
-ProductRevision: 1 (0x1)
+HardwareVersion: 1 (0x1)
FabricId:
PinCode: 020202021
Discriminator: f00
@@ -208,12 +208,12 @@ uart:~$ matter config productid
20043 (0x4E4B)
```
-#### productrev
+#### hardwarever
-Prints the product revision of the device. Takes no arguments.
+Prints the hardware version of the device. Takes no arguments.
```shell
-uart:~$ matter config productrev
+uart:~$ matter config hardwarever
1 (0x1)
```
diff --git a/docs/guides/python_chip_controller_building.md b/docs/guides/python_chip_controller_building.md
index 8542bbfc434117..c3f9d65eac0f5f 100644
--- a/docs/guides/python_chip_controller_building.md
+++ b/docs/guides/python_chip_controller_building.md
@@ -155,7 +155,7 @@ I: 254 [DL]Device Configuration:
I: 257 [DL] Serial Number: TEST_SN
I: 260 [DL] Vendor Id: 9050 (0x235A)
I: 263 [DL] Product Id: 20043 (0x4E4B)
-I: 267 [DL] Product Revision: 1
+I: 267 [DL] Hardware Version: 1
I: 270 [DL] Setup Pin Code: 20202021
I: 273 [DL] Setup Discriminator: 3840 (0xF00)
I: 278 [DL] Manufacturing Date: (not set)
diff --git a/docs/guides/simulated_device_linux.md b/docs/guides/simulated_device_linux.md
new file mode 100644
index 00000000000000..5bbd5f2b6452cf
--- /dev/null
+++ b/docs/guides/simulated_device_linux.md
@@ -0,0 +1,144 @@
+# Simulated Device How-To (Linux)
+
+This document contains instructions on how to build, run, and interact with a
+simulated device. All virtual accessories live in
+[examples/placeholder/linux/apps](../../examples/placeholder/linux/apps).
+
+Each accessory needs to be hosted into a subfolder. It will be the name of the
+application. For example `app1` will create a binary named `chip-app1`.
+
+If some parameters need to be overridden, a `CHIPProjectConfig.h` file can be
+placed under an ‘include’ folder into the app folder. For example
+`examples/placeholder/linux/apps/app1/include/CHIPProjectConfig.h`
+
+In order to generate specific tests for a given accessory, a
+[examples/placeholder/linux/apps/app1/tests.js](../../examples/placeholder/linux/apps/app1/tests.js)
+file can be added into the application directory. The tests listed there are the
+one that will be executed once the application has been commissioned.
+
+Simulated Device: simulation of an application in which tests can be added. It
+is defined by a ZAP config file and tests can be added with a
+[YAML file](../../src/app/tests/suites/certification/Test_TC_DM_1_3_Simulated.yaml).
+
+### Prerequisite
+
+- [Building Prerequisites](./BUILDING.md#prerequisites)
+- [Prepare For Building](./BUILDING.md#prepare-for-building)
+
+## Generating and building the default Simulated App with Script
+
+In order to utilize the app against a commissioner or controller, the app will
+need to be specifically built.
+
+1. To generate the ZAP files, and build the `chip-app1` binary completing the
+ following steps:
+
+ ```
+ ./scripts/examples/gn_build_test_example.sh app1
+ ```
+
+## Build the App only
+
+In order to utilize the app against a commissioner or controller, the app will
+need to be specifically built.
+
+1. To only build the `chip-app1` binary completing the following steps:
+
+ ```
+ source scripts/activate.sh
+ CHIP_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
+ GN_ARGS="chip_tests_zap_config=\"app1\""
+ GN_ARGS+="chip_project_config_include_dirs=[\"$CHIP_ROOT/examples/placeholder/linux/apps/app1/include\", \"$CHIP_ROOT/config/standalone\"]"
+ GN_ARGS+="chip_config_network_layer_ble=false"
+
+ gn gen --check --fail-on-unused-args --root=examples/placeholder/linux out/simulated --args="$GN_ARGS"
+
+ ninja -C out/simulated
+ ```
+
+## Running the app
+
+Now that the building is completed there is a `chip-app1` binary created. This
+binary can be executed on a linux os.
+
+1. To generate the ZAP files, and build the `chip-app1` binary completing the
+ following steps:
+
+ ```
+ ./out/simulated/chip-app1
+ ```
+
+## Running the app with test parameter
+
+Now that the building is completed there is a `chip-app1` binary created. This
+binary can be executed on a linux os with test commands.
+
+1. To generate the ZAP files, and build the `chip-app1` binary completing the
+ following steps:
+
+ ```
+ ./out/simulated/chip-app1 --command [TEST NAME]
+ ```
+
+## Interacting with the simulated app
+
+Now that the building the app and starting it is complete, you will be able to
+interact with it using chip-tool
+
+1. Follow the instruction to build chip-tool in the
+ [chip-tool readme](../../examples/chip-tool).
+
+2. Run this command to initiate the pairing.
+ ```
+ ./out/debug/standalone/chip-tool pairing ethernet 0x654321 20202021 3842 [IP ADDRESS of App] 5542
+ ```
+3. Run this command to complete the commissioning.
+ ```
+ ./out/debug/standalone/chip-tool generalcommissioning commissioning-complete 0x654321 0
+ ```
+4. Most tests will start at this point and now an send cluster commands with
+ chip-tool as follow.
+
+ ```
+ ./out/debug/standalone/chip-tool onoff on 0x654321 1
+ ./out/debug/standalone/chip-tool onoff read on-off 0x654321 1
+ ./out/debug/standalone/chip-tool onoff write on-time 1 0x654321 1
+ ```
+
+ See [chip-tool readme](../../examples/chip-tool) for additional commands.
+
+## Adding simulated Tests via YAML
+
+In order to validate commissioner/controller behavior, tests need to be added to
+the simulated device test framework. To achieve this, YAML files are created and
+new code is generated.
+
+1. YAML test file are located in
+ [YAML folder](../../src/app/tests/suites/certification/)
+2. Test names must follow a strict format dues to CI of test recognition. The
+ format is as follows:
+ - Test_TC\_[`CATEGORY ABBREVIATION`]\_[`SECTION NUMBER`]\_[`SUBSECTION
+ NUMBER`]\_Simulated.yaml
+ - `IMPORTANT`: The test name must end in Simulated with the
+ capital.
+3. Available properties can be found in
+ [YAML Test Name](../../src/app/tests/suites/README.md)
+4. An Additional property is as follows:
+
+ | Name | Description |
+ | ---- | --------------------------------------------------------------------------- |
+ | wait | The command that is expected to be received on the app from the controller. |
+
+5. [Test_TC_DM_1_3_Simulated](../../src/app/tests/suites/certification/Test_TC_DM_1_3_Simulated.yaml)
+ is an example of a written test that runs on the simulated device.
+6. Next, it will need to be added to
+ [examples/placeholder/linux/apps/app1/tests.js](../../examples/placeholder/linux/apps/app1/tests.js).
+ in the following array
+ ```javascript
+ const tests = ["Test_TC_DM_1_3_Simulated"];
+ ```
+7. Then, the code will be generated using ZAP. Follow
+ [Gen Script](#generating-and-building-the-default-simulated-app-with-script)
+ to do so.
+8. When submitting code for review, create 2 commits. One for YAML changes and
+ second for generated code.
diff --git a/docs/guides/ti_platform_overview.md b/docs/guides/ti_platform_overview.md
new file mode 100644
index 00000000000000..37a8e065232810
--- /dev/null
+++ b/docs/guides/ti_platform_overview.md
@@ -0,0 +1,121 @@
+# Texas Instruments platform overview
+
+The TI platform is a [Matter][matter_gh] platform based on the Texas Instruments
+Incorporated SimpleLink SDK.
+
+The following diagram is a simplified representation of a Matter application
+which built on the TI Platform.
+
+
+
+
+
+## Texas Instruments SimpleLink SDK
+
+The SimpleLink™ CC13xx and CC26xx Software Development Kit (SDK) delivers
+components that enable engineers to develop applications on the Texas
+Instruments SimpleLink CC13xx and CC26xx family of wireless microcontrollers
+(MCUs). This software toolkit provides a cohesive and consistent software
+experience for all SimpleLink CC13xx and CC26xx wireless MCU users by packaging
+essential software components, such as a Bluetooth® Low Energy (BLE) protocol
+stack supporting Bluetooth 5.2, Bluetooth Mesh, Thread 1.1.1 networking stack
+based on OpenThread, Zigbee 3.0 compliant protocol suite, RF-Proprietary
+examples, TI’s 15.4 Stack as well as the TI-RTOS kernel and TI Drivers in one
+easy-to-use software package along with example applications and documentation.
+In addition, the Dynamic Multi-Protocol Manager (DMM) software component enables
+multiprotocol development on a single SimpleLink wireless MCU through
+time-division multiplexing.
+
+The SimpleLink MCU portfolio offers a single development environment that
+delivers flexible hardware, software, and tool options for customers developing
+wired and wireless applications. With 100 percent code reuse across host MCUs,
+Wi-Fi™, Bluetooth Low Energy, Sub-1GHz devices and more, choose the MCU or
+connectivity standard that fits your design. A one-time investment with the
+SimpleLink software development kit allows you to reuse often, opening the door
+to create unlimited applications. For more information, visit
+www.ti.com/simplelink.
+
+
+
+## BLE and Thread stacks
+
+In the TI example applications the Bluetooth Low Energy protocol is used to
+provision the Thread protocol to enable Matter communication. Then Thread is
+used for IP communication with other Matter devices.
+
+The TI applications leverage the Bluetooth Low Energy stack on the CC13X2 and
+CC26X2 families. This BLE software is distributed in binary form within the TI
+SimpleLink SDK. The BLE stack leverages code that is present in the device ROM
+for certain common BLE operations.
+
+These applications leverage the OpenThread stack available within the Matter
+repository for Thread communication. Platform support source is built from the
+SimpleLink SDK.
+
+These connection protocols can be run concurrently by using the Texas
+Instruments Dynamic Multi-protocol Manager.
+
+
+
+## LwIP stack
+
+The Lightweight IP stack interfaces with the OpenThread stack to offer standard
+IP connectivity protocols that OpenThread does not natively support. This offers
+a standard socket based interface to the Matter platform.
+
+
+
+## MbedTLS
+
+The MbedTLS library is used by OpenThread and Matter for a wide variety of
+protocols. This ranges from basic AES and SHA to cryptographic protocols like
+ECDSA and ECDH.
+
+The MbedTLS library is hardware accelerated using the TI SimpleLink SDK drivers.
+This is achieved through the usage of `_ALT` defines in the MbedTLS
+configuration file.
+
+
+
+## Matter integration
+
+Matter interacts with LwIP, OpenThread, and the TI BLE stack to achieve the
+protocol and application functionality. A BLE profile is registered with the
+TI-BLE stack to enable provisioning and configuration. Once the device is
+provisioned Matter will configure the OpenThread interface to connect to an
+existing Thread network or to start its own network. From there the Matter IP
+messages are sent to the LwIP stack to be routed to the OpenThread stack for
+transmission.
+
+Overall, applications generally only need to interface with the Cluster Library
+from Matter. The transport of messages and configuration of the device is all
+handled by the platform implementation files.
+
+
+
+# Matter example applications
+
+Sample Matter applications are provided for the TI platform. These can be used
+as reference for your own application.
+
+- [lock-app](../../examples/lock-app/cc13x2x7_26x2x7/README.md)
+- [pump-app](../../examples/pump-app/cc13x2x7_26x2x7/README.md)
+- [pump-controller-app](../../examples/pump-controller-app/cc13x2x7_26x2x7/README.md)
+
+
+
+## Build system
+
+The TI platform uses GN to generate ninja build scripts. Build files have
+already been written to build and link the TI specific code within the
+SimpleLink SDK.
+
+
+
+## TI Support
+
+For technical support, please consider creating a post on TI's [E2E forum][e2e].
+Additionally, we welcome any feedback.
+
+[e2e]: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread
+[matter_gh]: https://github.com/project-chip/connectedhomeip
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 f1e980a8a0225f..546d4289e4834c 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
@@ -1,5 +1,5 @@
{
- "featureLevel": 63,
+ "featureLevel": 67,
"creator": "zap",
"keyValuePairs": [
{
@@ -31,9 +31,9 @@
],
"endpointTypes": [
{
- "name": "Anonymous Endpoint Type",
- "deviceTypeName": "CHIP-All-Clusters-Server",
- "deviceTypeCode": 0,
+ "name": "MA-rootdevice",
+ "deviceTypeName": "MA-rootdevice",
+ "deviceTypeCode": 22,
"deviceTypeProfileId": 259,
"clusters": [
{
@@ -80,7 +80,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -115,7 +115,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -130,7 +130,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -145,7 +145,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -220,7 +220,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -279,7 +279,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -294,7 +294,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -377,7 +377,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -452,7 +452,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -467,7 +467,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -482,7 +482,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -497,7 +497,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -512,7 +512,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -527,7 +527,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -578,7 +578,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -604,7 +604,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -619,7 +619,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -710,7 +710,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -736,7 +736,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -751,7 +751,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -777,7 +777,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -803,7 +803,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -818,7 +818,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -833,7 +833,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -848,7 +848,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -863,13 +863,148 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Binding",
+ "code": 30,
+ "mfgCode": null,
+ "define": "BINDING_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "Bind",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Unbind",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Binding",
+ "code": 30,
+ "mfgCode": null,
+ "define": "BINDING_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
}
]
},
+ {
+ "name": "Access Control",
+ "code": 31,
+ "mfgCode": null,
+ "define": "ACCESS_CONTROL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "Access Control",
+ "code": 31,
+ "mfgCode": null,
+ "define": "ACCESS_CONTROL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "ACL",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "Extension",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
{
"name": "Basic",
"code": 40,
@@ -898,7 +1033,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -949,7 +1084,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -964,7 +1099,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -979,7 +1114,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -994,7 +1129,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1009,13 +1144,13 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "UserLabel",
+ "name": "NodeLabel",
"code": 5,
"mfgCode": null,
"side": "server",
@@ -1024,7 +1159,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1039,7 +1174,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1054,7 +1189,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1069,7 +1204,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1084,7 +1219,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1099,7 +1234,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1114,7 +1249,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "20210614123456ZZ",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1129,7 +1264,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1144,7 +1279,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1159,7 +1294,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1174,7 +1309,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1189,7 +1324,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1204,6 +1339,21 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "1",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "UniqueID",
+ "code": 18,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 1,
+ "bounded": 0,
+ "defaultValue": "",
"reportable": 0,
"minInterval": 0,
"maxInterval": 65344,
@@ -1219,7 +1369,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1232,14 +1382,14 @@
"mfgCode": null,
"define": "OTA_PROVIDER_CLUSTER",
"side": "client",
- "enabled": 0,
+ "enabled": 1,
"commands": [
{
"name": "QueryImage",
"code": 0,
"mfgCode": null,
"source": "client",
- "incoming": 1,
+ "incoming": 0,
"outgoing": 1
},
{
@@ -1247,7 +1397,7 @@
"code": 1,
"mfgCode": null,
"source": "client",
- "incoming": 1,
+ "incoming": 0,
"outgoing": 1
},
{
@@ -1255,7 +1405,7 @@
"code": 2,
"mfgCode": null,
"source": "client",
- "incoming": 1,
+ "incoming": 0,
"outgoing": 1
}
],
@@ -1265,7 +1415,7 @@
"code": 65533,
"mfgCode": null,
"side": "client",
- "included": 1,
+ "included": 0,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
@@ -1294,7 +1444,7 @@
"outgoing": 1
},
{
- "name": "ApplyUpdateRequestResponse",
+ "name": "ApplyUpdateResponse",
"code": 4,
"mfgCode": null,
"source": "server",
@@ -1339,7 +1489,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1365,7 +1515,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1380,7 +1530,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1395,7 +1545,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1403,18 +1553,69 @@
]
},
{
- "name": "General Commissioning",
- "code": 48,
+ "name": "Power Source Configuration",
+ "code": 46,
"mfgCode": null,
- "define": "GENERAL_COMMISSIONING_CLUSTER",
+ "define": "POWER_SOURCE_CONFIGURATION_CLUSTER",
"side": "client",
"enabled": 0,
- "commands": [
- {
- "name": "ArmFailSafe",
- "code": 0,
- "mfgCode": null,
- "source": "client",
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "Power Source Configuration",
+ "code": 46,
+ "mfgCode": null,
+ "define": "POWER_SOURCE_CONFIGURATION_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "Sources",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "General Commissioning",
+ "code": 48,
+ "mfgCode": null,
+ "define": "GENERAL_COMMISSIONING_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "ArmFailSafe",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
"incoming": 1,
"outgoing": 1
},
@@ -1446,7 +1647,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1497,7 +1698,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1512,11 +1713,56 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "RegulatoryConfig",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "LocationCapability",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "6",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "ClusterRevision",
"code": 65533,
@@ -1527,7 +1773,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1618,7 +1864,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1708,8 +1954,8 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0",
- "reportable": 0,
+ "defaultValue": "1",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1724,7 +1970,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1769,7 +2015,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1795,7 +2041,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1810,7 +2056,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1825,7 +2071,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -1840,7 +2086,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -1855,7 +2101,52 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ActiveHardwareFaults",
+ "code": 5,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ActiveRadioFaults",
+ "code": 6,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ActiveNetworkFaults",
+ "code": 7,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -1870,7 +2161,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1905,7 +2196,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1921,6 +2212,21 @@
"enabled": 1,
"commands": [],
"attributes": [
+ {
+ "name": "ThreadMetrics",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "CurrentHeapFree",
"code": 1,
@@ -1931,7 +2237,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -1946,7 +2252,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -1961,11 +2267,26 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "ClusterRevision",
"code": 65533,
@@ -1976,7 +2297,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2021,7 +2342,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2036,7 +2357,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2051,7 +2372,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2066,7 +2387,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2081,7 +2402,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2096,7 +2417,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2111,7 +2432,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2122,11 +2443,11 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2137,11 +2458,11 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2156,7 +2477,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2171,7 +2492,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2186,7 +2507,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2201,7 +2522,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2216,7 +2537,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2231,7 +2552,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2246,7 +2567,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2261,7 +2582,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2276,7 +2597,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2291,7 +2612,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2306,7 +2627,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2321,7 +2642,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2336,7 +2657,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2351,7 +2672,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2366,7 +2687,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2381,7 +2702,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2396,7 +2717,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2411,7 +2732,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2426,7 +2747,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2441,7 +2762,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2456,7 +2777,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2471,7 +2792,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2486,7 +2807,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2501,7 +2822,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2516,7 +2837,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2531,7 +2852,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2546,7 +2867,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2561,7 +2882,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2576,7 +2897,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2591,7 +2912,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2606,7 +2927,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2621,7 +2942,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2636,7 +2957,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2651,7 +2972,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2666,7 +2987,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2681,7 +3002,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2696,7 +3017,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2711,7 +3032,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2726,7 +3047,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2741,7 +3062,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2756,7 +3077,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2771,7 +3092,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2786,7 +3107,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2801,7 +3122,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2816,7 +3137,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2831,7 +3152,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2846,7 +3167,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2861,7 +3182,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2876,7 +3197,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2891,7 +3212,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2902,11 +3223,11 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2921,7 +3242,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2932,11 +3253,11 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2947,15 +3268,30 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x000F",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "ClusterRevision",
"code": 65533,
@@ -2966,7 +3302,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3001,7 +3337,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3027,7 +3363,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3042,7 +3378,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3057,7 +3393,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3072,7 +3408,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3087,7 +3423,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3102,7 +3438,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3117,7 +3453,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3132,7 +3468,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3147,7 +3483,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3162,7 +3498,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3177,7 +3513,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3192,7 +3528,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3207,6 +3543,21 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
"reportable": 0,
"minInterval": 1,
"maxInterval": 65534,
@@ -3222,7 +3573,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3257,7 +3608,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3283,7 +3634,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3298,7 +3649,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3313,7 +3664,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3328,7 +3679,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3343,7 +3694,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3358,7 +3709,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3373,7 +3724,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3388,7 +3739,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3403,6 +3754,21 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
"reportable": 0,
"minInterval": 1,
"maxInterval": 65534,
@@ -3418,7 +3784,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3444,7 +3810,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3470,7 +3836,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3500,7 +3866,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3515,7 +3881,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3566,7 +3932,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3582,6 +3948,51 @@
"enabled": 1,
"commands": [],
"attributes": [
+ {
+ "name": "WindowStatus",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "AdminFabricIndex",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "AdminVendorId",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "ClusterRevision",
"code": 65533,
@@ -3592,7 +4003,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3691,7 +4102,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3750,7 +4161,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3765,7 +4176,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3780,7 +4191,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3795,7 +4206,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3810,7 +4221,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3825,7 +4236,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3833,13 +4244,95 @@
]
},
{
- "name": "Door Lock",
- "code": 257,
+ "name": "Group Key Management",
+ "code": 63,
"mfgCode": null,
- "define": "DOOR_LOCK_CLUSTER",
+ "define": "GROUP_KEY_MANAGEMENT_CLUSTER",
"side": "client",
"enabled": 0,
- "commands": [
+ "commands": [],
+ "attributes": [
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Group Key Management",
+ "code": 63,
+ "mfgCode": null,
+ "define": "GROUP_KEY_MANAGEMENT_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "groups",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "group keys",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Door Lock",
+ "code": 257,
+ "mfgCode": null,
+ "define": "DOOR_LOCK_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [
{
"name": "LockDoor",
"code": 0,
@@ -3873,7 +4366,7 @@
"outgoing": 1
},
{
- "name": "SetPin",
+ "name": "SetPINCode",
"code": 5,
"mfgCode": null,
"source": "client",
@@ -3881,7 +4374,7 @@
"outgoing": 1
},
{
- "name": "GetPin",
+ "name": "GetPINCode",
"code": 6,
"mfgCode": null,
"source": "client",
@@ -3889,7 +4382,7 @@
"outgoing": 1
},
{
- "name": "ClearPin",
+ "name": "ClearPINCode",
"code": 7,
"mfgCode": null,
"source": "client",
@@ -3897,7 +4390,7 @@
"outgoing": 1
},
{
- "name": "ClearAllPins",
+ "name": "ClearAllPINCodes",
"code": 8,
"mfgCode": null,
"source": "client",
@@ -3905,7 +4398,7 @@
"outgoing": 1
},
{
- "name": "SetWeekdaySchedule",
+ "name": "SetWeekDaySchedule",
"code": 11,
"mfgCode": null,
"source": "client",
@@ -3913,7 +4406,7 @@
"outgoing": 1
},
{
- "name": "GetWeekdaySchedule",
+ "name": "GetWeekDaySchedule",
"code": 12,
"mfgCode": null,
"source": "client",
@@ -3921,7 +4414,7 @@
"outgoing": 1
},
{
- "name": "ClearWeekdaySchedule",
+ "name": "ClearWeekDaySchedule",
"code": 13,
"mfgCode": null,
"source": "client",
@@ -3929,7 +4422,7 @@
"outgoing": 1
},
{
- "name": "SetYeardaySchedule",
+ "name": "SetYearDaySchedule",
"code": 14,
"mfgCode": null,
"source": "client",
@@ -3937,7 +4430,7 @@
"outgoing": 1
},
{
- "name": "GetYeardaySchedule",
+ "name": "GetYearDaySchedule",
"code": 15,
"mfgCode": null,
"source": "client",
@@ -3945,7 +4438,7 @@
"outgoing": 1
},
{
- "name": "ClearYeardaySchedule",
+ "name": "ClearYearDaySchedule",
"code": 16,
"mfgCode": null,
"source": "client",
@@ -3993,7 +4486,7 @@
"outgoing": 1
},
{
- "name": "SetRfid",
+ "name": "SetRFIDCode",
"code": 22,
"mfgCode": null,
"source": "client",
@@ -4001,7 +4494,7 @@
"outgoing": 1
},
{
- "name": "GetRfid",
+ "name": "GetRFIDCode",
"code": 23,
"mfgCode": null,
"source": "client",
@@ -4009,7 +4502,7 @@
"outgoing": 1
},
{
- "name": "ClearRfid",
+ "name": "ClearRFIDCode",
"code": 24,
"mfgCode": null,
"source": "client",
@@ -4017,7 +4510,7 @@
"outgoing": 1
},
{
- "name": "ClearAllRfids",
+ "name": "ClearAllRFIDCodes",
"code": 25,
"mfgCode": null,
"source": "client",
@@ -4036,7 +4529,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4050,27 +4543,10 @@
"define": "DOOR_LOCK_CLUSTER",
"side": "server",
"enabled": 0,
- "commands": [
- {
- "name": "LockDoorResponse",
- "code": 0,
- "mfgCode": null,
- "source": "server",
- "incoming": 1,
- "outgoing": 1
- },
- {
- "name": "UnlockDoorResponse",
- "code": 1,
- "mfgCode": null,
- "source": "server",
- "incoming": 1,
- "outgoing": 1
- }
- ],
+ "commands": [],
"attributes": [
{
- "name": "lock state",
+ "name": "LockState",
"code": 0,
"mfgCode": null,
"side": "server",
@@ -4085,7 +4561,7 @@
"reportableChange": 0
},
{
- "name": "lock type",
+ "name": "LockType",
"code": 1,
"mfgCode": null,
"side": "server",
@@ -4094,13 +4570,13 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "actuator enabled",
+ "name": "ActuatorEnabled",
"code": 2,
"mfgCode": null,
"side": "server",
@@ -4109,13 +4585,13 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "door state",
+ "name": "DoorState",
"code": 3,
"mfgCode": null,
"side": "server",
@@ -4130,7 +4606,7 @@
"reportableChange": 0
},
{
- "name": "enable logging",
+ "name": "EnableLogging",
"code": 32,
"mfgCode": null,
"side": "server",
@@ -4145,7 +4621,7 @@
"reportableChange": 0
},
{
- "name": "language",
+ "name": "Language",
"code": 33,
"mfgCode": null,
"side": "server",
@@ -4160,7 +4636,7 @@
"reportableChange": 0
},
{
- "name": "led settings",
+ "name": "LEDSettings",
"code": 34,
"mfgCode": null,
"side": "server",
@@ -4175,7 +4651,7 @@
"reportableChange": 0
},
{
- "name": "auto relock time",
+ "name": "AutoRelockTime",
"code": 35,
"mfgCode": null,
"side": "server",
@@ -4190,7 +4666,7 @@
"reportableChange": 0
},
{
- "name": "sound volume",
+ "name": "SoundVolume",
"code": 36,
"mfgCode": null,
"side": "server",
@@ -4205,7 +4681,7 @@
"reportableChange": 0
},
{
- "name": "operating mode",
+ "name": "OperatingMode",
"code": 37,
"mfgCode": null,
"side": "server",
@@ -4220,7 +4696,7 @@
"reportableChange": 0
},
{
- "name": "default configuration register",
+ "name": "DefaultConfigurationRegister",
"code": 39,
"mfgCode": null,
"side": "server",
@@ -4235,7 +4711,7 @@
"reportableChange": 0
},
{
- "name": "enable local programming",
+ "name": "EnableLocalProgramming",
"code": 40,
"mfgCode": null,
"side": "server",
@@ -4250,7 +4726,7 @@
"reportableChange": 0
},
{
- "name": "enable one touch locking",
+ "name": "EnableOneTouchLocking",
"code": 41,
"mfgCode": null,
"side": "server",
@@ -4265,7 +4741,7 @@
"reportableChange": 0
},
{
- "name": "enable inside status led",
+ "name": "EnableInsideStatusLED",
"code": 42,
"mfgCode": null,
"side": "server",
@@ -4280,7 +4756,7 @@
"reportableChange": 0
},
{
- "name": "enable privacy mode button",
+ "name": "EnablePrivacyModeButton",
"code": 43,
"mfgCode": null,
"side": "server",
@@ -4295,7 +4771,7 @@
"reportableChange": 0
},
{
- "name": "wrong code entry limit",
+ "name": "WrongCodeEntryLimit",
"code": 48,
"mfgCode": null,
"side": "server",
@@ -4310,7 +4786,7 @@
"reportableChange": 0
},
{
- "name": "user code temporary disable time",
+ "name": "UserCodeTemporaryDisableTime",
"code": 49,
"mfgCode": null,
"side": "server",
@@ -4325,7 +4801,7 @@
"reportableChange": 0
},
{
- "name": "send pin over the air",
+ "name": "SendPINOverTheAir",
"code": 50,
"mfgCode": null,
"side": "server",
@@ -4340,7 +4816,7 @@
"reportableChange": 0
},
{
- "name": "require pin for rf operation",
+ "name": "RequirePINforRemoteOperation",
"code": 51,
"mfgCode": null,
"side": "server",
@@ -4355,22 +4831,7 @@
"reportableChange": 0
},
{
- "name": "zigbee security level",
- "code": 52,
- "mfgCode": null,
- "side": "server",
- "included": 0,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "alarm mask",
+ "name": "AlarmMask",
"code": 64,
"mfgCode": null,
"side": "server",
@@ -4385,7 +4846,7 @@
"reportableChange": 0
},
{
- "name": "keypad operation event mask",
+ "name": "KeypadOperationEventMask",
"code": 65,
"mfgCode": null,
"side": "server",
@@ -4400,7 +4861,7 @@
"reportableChange": 0
},
{
- "name": "RF operation event mask",
+ "name": "RemoteOperationEventMask",
"code": 66,
"mfgCode": null,
"side": "server",
@@ -4415,7 +4876,7 @@
"reportableChange": 0
},
{
- "name": "manual operation event mask",
+ "name": "ManualOperationEventMask",
"code": 67,
"mfgCode": null,
"side": "server",
@@ -4430,7 +4891,7 @@
"reportableChange": 0
},
{
- "name": "rfid operation event mask",
+ "name": "RFIDOperationEventMask",
"code": 68,
"mfgCode": null,
"side": "server",
@@ -4445,7 +4906,7 @@
"reportableChange": 0
},
{
- "name": "keypad programming event mask",
+ "name": "KeypadProgrammingEventMask",
"code": 69,
"mfgCode": null,
"side": "server",
@@ -4460,7 +4921,7 @@
"reportableChange": 0
},
{
- "name": "rf programming event mask",
+ "name": "RemoteProgrammingEventMask",
"code": 70,
"mfgCode": null,
"side": "server",
@@ -4475,7 +4936,7 @@
"reportableChange": 0
},
{
- "name": "rfid programming event mask",
+ "name": "RFIDProgrammingEventMask",
"code": 71,
"mfgCode": null,
"side": "server",
@@ -4499,7 +4960,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4542,7 +5003,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4568,7 +5029,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4583,7 +5044,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4598,7 +5059,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4613,7 +5074,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4628,7 +5089,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4767,7 +5228,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4793,7 +5254,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4808,7 +5269,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4823,7 +5284,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4838,7 +5299,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x616B",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4853,7 +5314,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x607D",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4868,7 +5329,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4883,7 +5344,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4898,7 +5359,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00FA",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4913,7 +5374,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x01",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4928,7 +5389,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4943,7 +5404,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4958,7 +5419,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4973,7 +5434,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4988,7 +5449,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5003,7 +5464,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5018,7 +5479,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5033,7 +5494,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5048,7 +5509,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5063,7 +5524,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5078,7 +5539,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5093,7 +5554,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5108,7 +5569,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5123,7 +5584,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5138,7 +5599,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5153,7 +5614,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5168,7 +5629,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5183,7 +5644,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5198,7 +5659,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5213,7 +5674,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5228,7 +5689,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5243,7 +5704,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5258,7 +5719,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5273,7 +5734,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5288,7 +5749,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5303,7 +5764,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5318,7 +5779,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5333,7 +5794,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5348,7 +5809,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5363,7 +5824,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5378,7 +5839,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5393,7 +5854,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5408,7 +5869,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x01",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5423,7 +5884,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5438,7 +5899,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5453,7 +5914,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0019",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5468,7 +5929,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5483,7 +5944,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5498,7 +5959,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFEFF",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5513,7 +5974,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5528,7 +5989,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5543,7 +6004,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5569,7 +6030,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -5610,7 +6071,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -5625,7 +6086,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -5640,7 +6101,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -5655,7 +6116,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFF",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -5670,7 +6131,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -5696,7 +6157,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5737,7 +6198,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x8000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5752,7 +6213,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x8000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5782,7 +6243,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5808,7 +6269,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5849,7 +6310,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5864,7 +6325,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5894,7 +6355,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5920,7 +6381,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5961,7 +6422,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5976,7 +6437,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -5991,7 +6452,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6026,7 +6487,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6069,7 +6530,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6084,7 +6545,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6099,7 +6560,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6114,7 +6575,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6129,7 +6590,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6144,7 +6605,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6195,7 +6656,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6230,7 +6691,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "false",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6245,7 +6706,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6260,7 +6721,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6275,7 +6736,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6290,7 +6751,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6305,7 +6766,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6320,7 +6781,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6335,7 +6796,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6350,7 +6811,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6365,7 +6826,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6380,7 +6841,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6395,7 +6856,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6410,7 +6871,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6425,7 +6886,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6440,7 +6901,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6455,7 +6916,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6470,7 +6931,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6485,7 +6946,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6500,158 +6961,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "ClusterRevision",
- "code": 65533,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0001",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- }
- ]
- },
- {
- "name": "Binding",
- "code": 61440,
- "mfgCode": null,
- "define": "BINDING_CLUSTER",
- "side": "client",
- "enabled": 0,
- "commands": [
- {
- "name": "Bind",
- "code": 0,
- "mfgCode": null,
- "source": "client",
- "incoming": 1,
- "outgoing": 1
- },
- {
- "name": "Unbind",
- "code": 1,
- "mfgCode": null,
- "source": "client",
- "incoming": 1,
- "outgoing": 1
- }
- ],
- "attributes": [
- {
- "name": "ClusterRevision",
- "code": 65533,
- "mfgCode": null,
- "side": "client",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0001",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- }
- ]
- },
- {
- "name": "Binding",
- "code": 61440,
- "mfgCode": null,
- "define": "BINDING_CLUSTER",
- "side": "server",
- "enabled": 1,
- "commands": [],
- "attributes": [
- {
- "name": "ClusterRevision",
- "code": 65533,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0001",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- }
- ]
- },
- {
- "name": "Group Key Management",
- "code": 61444,
- "mfgCode": null,
- "define": "GROUP_KEY_MANAGEMENT_CLUSTER",
- "side": "client",
- "enabled": 0,
- "commands": [],
- "attributes": [
- {
- "name": "ClusterRevision",
- "code": 65533,
- "mfgCode": null,
- "side": "client",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0001",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- }
- ]
- },
- {
- "name": "Group Key Management",
- "code": 61444,
- "mfgCode": null,
- "define": "GROUP_KEY_MANAGEMENT_CLUSTER",
- "side": "server",
- "enabled": 1,
- "commands": [],
- "attributes": [
- {
- "name": "groups",
- "code": 0,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "group keys",
- "code": 1,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6666,7 +6976,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6676,9 +6986,9 @@
]
},
{
- "name": "Anonymous Endpoint Type",
- "deviceTypeName": "CHIP-All-Clusters-Server",
- "deviceTypeCode": 0,
+ "name": "MA-rootdevice",
+ "deviceTypeName": "MA-rootdevice",
+ "deviceTypeCode": 22,
"deviceTypeProfileId": 259,
"clusters": [
{
@@ -6725,7 +7035,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6760,7 +7070,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6775,7 +7085,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6790,7 +7100,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6865,7 +7175,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6924,7 +7234,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -6939,7 +7249,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7022,7 +7332,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7097,7 +7407,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7112,7 +7422,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7127,7 +7437,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7142,7 +7452,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7157,7 +7467,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7172,7 +7482,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7223,7 +7533,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7264,7 +7574,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x01",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7279,7 +7589,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7294,7 +7604,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7309,7 +7619,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7324,7 +7634,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7339,7 +7649,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "4",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7365,7 +7675,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7391,7 +7701,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7406,7 +7716,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7421,7 +7731,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7512,7 +7822,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7553,7 +7863,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7568,7 +7878,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7583,7 +7893,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFF",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7598,7 +7908,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7613,7 +7923,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7628,7 +7938,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7643,7 +7953,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7658,7 +7968,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7673,7 +7983,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFE",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7688,7 +7998,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7703,7 +8013,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7718,7 +8028,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -7733,7 +8043,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7748,7 +8058,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7774,7 +8084,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7800,7 +8110,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7845,7 +8155,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7871,7 +8181,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7897,7 +8207,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7912,7 +8222,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7927,7 +8237,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7942,7 +8252,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7957,7 +8267,76 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Binding",
+ "code": 30,
+ "mfgCode": null,
+ "define": "BINDING_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "Bind",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ },
+ {
+ "name": "Unbind",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Binding",
+ "code": 30,
+ "mfgCode": null,
+ "define": "BINDING_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0x0001",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -7983,7 +8362,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8009,7 +8388,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8024,7 +8403,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8039,7 +8418,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8054,7 +8433,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8089,7 +8468,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8140,7 +8519,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8155,7 +8534,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8170,7 +8549,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8185,7 +8564,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8200,13 +8579,13 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "UserLabel",
+ "name": "NodeLabel",
"code": 5,
"mfgCode": null,
"side": "server",
@@ -8215,7 +8594,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8230,7 +8609,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8245,7 +8624,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8260,7 +8639,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8275,7 +8654,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8290,7 +8669,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8305,7 +8684,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8356,7 +8735,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8380,7 +8759,7 @@
"outgoing": 1
},
{
- "name": "ApplyUpdateRequestResponse",
+ "name": "ApplyUpdateResponse",
"code": 4,
"mfgCode": null,
"source": "server",
@@ -8399,7 +8778,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8425,7 +8804,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8451,7 +8830,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8477,7 +8856,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8503,7 +8882,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8518,7 +8897,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8533,7 +8912,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8548,7 +8927,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8563,7 +8942,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8578,7 +8957,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8593,7 +8972,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8608,7 +8987,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8623,7 +9002,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8638,7 +9017,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -8653,7 +9032,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8696,7 +9075,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8739,7 +9118,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "o",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8754,7 +9133,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8769,7 +9148,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8860,7 +9239,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8951,7 +9330,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8977,7 +9356,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -8991,247 +9370,116 @@
"define": "BRIDGED_DEVICE_BASIC_CLUSTER",
"side": "server",
"enabled": 1,
- "commands": [
- {
- "name": "StartUp",
- "code": 0,
- "mfgCode": null,
- "source": "server",
- "incoming": 0,
- "outgoing": 1
- },
- {
- "name": "ShutDown",
- "code": 1,
- "mfgCode": null,
- "source": "server",
- "incoming": 0,
- "outgoing": 1
- },
- {
- "name": "Leave",
- "code": 2,
- "mfgCode": null,
- "source": "server",
- "incoming": 0,
- "outgoing": 1
- },
- {
- "name": "ReachableChanged",
- "code": 3,
- "mfgCode": null,
- "source": "server",
- "incoming": 1,
- "outgoing": 1
- }
- ],
+ "commands": [],
"attributes": [
{
- "name": "VendorName",
- "code": 1,
+ "name": "ClusterRevision",
+ "code": 65533,
"mfgCode": null,
"side": "server",
"included": 1,
"storageOption": "RAM",
"singleton": 1,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "1",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
- },
- {
- "name": "VendorID",
- "code": 2,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 1,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "ProductName",
- "code": 3,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 1,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "UserLabel",
- "code": 5,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 1,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "HardwareVersion",
- "code": 7,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 1,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "HardwareVersionString",
- "code": 8,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 1,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "SoftwareVersion",
- "code": 9,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 1,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "SoftwareVersionString",
- "code": 10,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 1,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "ManufacturingDate",
- "code": 11,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 1,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
+ }
+ ]
+ },
+ {
+ "name": "Switch",
+ "code": 59,
+ "mfgCode": null,
+ "define": "SWITCH_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
{
- "name": "PartNumber",
- "code": 12,
+ "name": "ClusterRevision",
+ "code": 65533,
"mfgCode": null,
- "side": "server",
+ "side": "client",
"included": 1,
"storageOption": "RAM",
- "singleton": 1,
+ "singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "0x0001",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
- },
+ }
+ ]
+ },
+ {
+ "name": "Switch",
+ "code": 59,
+ "mfgCode": null,
+ "define": "SWITCH_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
{
- "name": "ProductURL",
- "code": 13,
+ "name": "number of positions",
+ "code": 0,
"mfgCode": null,
"side": "server",
"included": 1,
"storageOption": "RAM",
- "singleton": 1,
+ "singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "2",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "ProductLabel",
- "code": 14,
+ "name": "current position",
+ "code": 1,
"mfgCode": null,
"side": "server",
"included": 1,
"storageOption": "RAM",
- "singleton": 1,
+ "singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "SerialNumber",
- "code": 15,
+ "name": "multi press max",
+ "code": 2,
"mfgCode": null,
"side": "server",
"included": 1,
"storageOption": "RAM",
- "singleton": 1,
+ "singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "2",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "Reachable",
- "code": 17,
+ "name": "FeatureMap",
+ "code": 65532,
"mfgCode": null,
"side": "server",
"included": 1,
"storageOption": "RAM",
- "singleton": 1,
+ "singleton": 0,
"bounded": 0,
- "defaultValue": "0x00",
- "reportable": 0,
+ "defaultValue": "0",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -9243,10 +9491,10 @@
"side": "server",
"included": 1,
"storageOption": "RAM",
- "singleton": 1,
+ "singleton": 0,
"bounded": 0,
- "defaultValue": "1",
- "reportable": 0,
+ "defaultValue": "0x0001",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -9254,10 +9502,10 @@
]
},
{
- "name": "Switch",
- "code": 59,
+ "name": "Group Key Management",
+ "code": 63,
"mfgCode": null,
- "define": "SWITCH_CLUSTER",
+ "define": "GROUP_KEY_MANAGEMENT_CLUSTER",
"side": "client",
"enabled": 0,
"commands": [],
@@ -9272,7 +9520,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -9280,16 +9528,16 @@
]
},
{
- "name": "Switch",
- "code": 59,
+ "name": "Group Key Management",
+ "code": 63,
"mfgCode": null,
- "define": "SWITCH_CLUSTER",
+ "define": "GROUP_KEY_MANAGEMENT_CLUSTER",
"side": "server",
- "enabled": 1,
+ "enabled": 0,
"commands": [],
"attributes": [
{
- "name": "number of positions",
+ "name": "groups",
"code": 0,
"mfgCode": null,
"side": "server",
@@ -9297,14 +9545,14 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
- "reportable": 0,
+ "defaultValue": "",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "current position",
+ "name": "group keys",
"code": 1,
"mfgCode": null,
"side": "server",
@@ -9318,36 +9566,6 @@
"maxInterval": 65344,
"reportableChange": 0
},
- {
- "name": "multi press max",
- "code": 2,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "2",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "FeatureMap",
- "code": 65532,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
{
"name": "ClusterRevision",
"code": 65533,
@@ -9358,7 +9576,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -9384,7 +9602,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -9410,7 +9628,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -9425,7 +9643,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -9451,7 +9669,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -9492,7 +9710,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -9527,7 +9745,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -9568,7 +9786,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -9583,7 +9801,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -9598,7 +9816,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -9613,7 +9831,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "Coffee",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -9628,7 +9846,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -9676,7 +9894,7 @@
"outgoing": 1
},
{
- "name": "SetPin",
+ "name": "SetPINCode",
"code": 5,
"mfgCode": null,
"source": "client",
@@ -9684,7 +9902,7 @@
"outgoing": 1
},
{
- "name": "GetPin",
+ "name": "GetPINCode",
"code": 6,
"mfgCode": null,
"source": "client",
@@ -9692,7 +9910,7 @@
"outgoing": 1
},
{
- "name": "ClearPin",
+ "name": "ClearPINCode",
"code": 7,
"mfgCode": null,
"source": "client",
@@ -9700,7 +9918,7 @@
"outgoing": 1
},
{
- "name": "ClearAllPins",
+ "name": "ClearAllPINCodes",
"code": 8,
"mfgCode": null,
"source": "client",
@@ -9708,7 +9926,7 @@
"outgoing": 1
},
{
- "name": "SetWeekdaySchedule",
+ "name": "SetWeekDaySchedule",
"code": 11,
"mfgCode": null,
"source": "client",
@@ -9716,7 +9934,7 @@
"outgoing": 1
},
{
- "name": "GetWeekdaySchedule",
+ "name": "GetWeekDaySchedule",
"code": 12,
"mfgCode": null,
"source": "client",
@@ -9724,7 +9942,7 @@
"outgoing": 1
},
{
- "name": "ClearWeekdaySchedule",
+ "name": "ClearWeekDaySchedule",
"code": 13,
"mfgCode": null,
"source": "client",
@@ -9732,7 +9950,7 @@
"outgoing": 1
},
{
- "name": "SetYeardaySchedule",
+ "name": "SetYearDaySchedule",
"code": 14,
"mfgCode": null,
"source": "client",
@@ -9740,7 +9958,7 @@
"outgoing": 1
},
{
- "name": "GetYeardaySchedule",
+ "name": "GetYearDaySchedule",
"code": 15,
"mfgCode": null,
"source": "client",
@@ -9748,7 +9966,7 @@
"outgoing": 1
},
{
- "name": "ClearYeardaySchedule",
+ "name": "ClearYearDaySchedule",
"code": 16,
"mfgCode": null,
"source": "client",
@@ -9796,7 +10014,7 @@
"outgoing": 1
},
{
- "name": "SetRfid",
+ "name": "SetRFIDCode",
"code": 22,
"mfgCode": null,
"source": "client",
@@ -9804,7 +10022,7 @@
"outgoing": 1
},
{
- "name": "GetRfid",
+ "name": "GetRFIDCode",
"code": 23,
"mfgCode": null,
"source": "client",
@@ -9812,7 +10030,7 @@
"outgoing": 1
},
{
- "name": "ClearRfid",
+ "name": "ClearRFIDCode",
"code": 24,
"mfgCode": null,
"source": "client",
@@ -9820,7 +10038,7 @@
"outgoing": 1
},
{
- "name": "ClearAllRfids",
+ "name": "ClearAllRFIDCodes",
"code": 25,
"mfgCode": null,
"source": "client",
@@ -9839,7 +10057,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -9855,25 +10073,41 @@
"enabled": 1,
"commands": [
{
- "name": "LockDoorResponse",
- "code": 0,
+ "name": "GetLogRecordResponse",
+ "code": 4,
"mfgCode": null,
"source": "server",
- "incoming": 1,
+ "incoming": 0,
"outgoing": 1
},
{
- "name": "UnlockDoorResponse",
- "code": 1,
+ "name": "GetPINCodeResponse",
+ "code": 6,
"mfgCode": null,
"source": "server",
- "incoming": 1,
+ "incoming": 0,
+ "outgoing": 1
+ },
+ {
+ "name": "GetWeekDayScheduleResponse",
+ "code": 12,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 0,
+ "outgoing": 1
+ },
+ {
+ "name": "GetYearDayScheduleResponse",
+ "code": 15,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 0,
"outgoing": 1
}
],
"attributes": [
{
- "name": "lock state",
+ "name": "LockState",
"code": 0,
"mfgCode": null,
"side": "server",
@@ -9888,7 +10122,7 @@
"reportableChange": 0
},
{
- "name": "lock type",
+ "name": "LockType",
"code": 1,
"mfgCode": null,
"side": "server",
@@ -9897,13 +10131,13 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "actuator enabled",
+ "name": "ActuatorEnabled",
"code": 2,
"mfgCode": null,
"side": "server",
@@ -9912,13 +10146,13 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "door state",
+ "name": "DoorState",
"code": 3,
"mfgCode": null,
"side": "server",
@@ -9933,7 +10167,22 @@
"reportableChange": 0
},
{
- "name": "enable logging",
+ "name": "NumberOfLogRecordsSupported",
+ "code": 16,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "EnableLogging",
"code": 32,
"mfgCode": null,
"side": "server",
@@ -9948,7 +10197,7 @@
"reportableChange": 0
},
{
- "name": "language",
+ "name": "Language",
"code": 33,
"mfgCode": null,
"side": "server",
@@ -9963,7 +10212,7 @@
"reportableChange": 0
},
{
- "name": "led settings",
+ "name": "LEDSettings",
"code": 34,
"mfgCode": null,
"side": "server",
@@ -9978,11 +10227,11 @@
"reportableChange": 0
},
{
- "name": "auto relock time",
+ "name": "AutoRelockTime",
"code": 35,
"mfgCode": null,
"side": "server",
- "included": 0,
+ "included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
@@ -9993,7 +10242,7 @@
"reportableChange": 0
},
{
- "name": "sound volume",
+ "name": "SoundVolume",
"code": 36,
"mfgCode": null,
"side": "server",
@@ -10008,11 +10257,11 @@
"reportableChange": 0
},
{
- "name": "operating mode",
+ "name": "OperatingMode",
"code": 37,
"mfgCode": null,
"side": "server",
- "included": 0,
+ "included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
@@ -10023,7 +10272,22 @@
"reportableChange": 0
},
{
- "name": "default configuration register",
+ "name": "SupportedOperatingModes",
+ "code": 38,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0xFFF6",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "DefaultConfigurationRegister",
"code": 39,
"mfgCode": null,
"side": "server",
@@ -10038,7 +10302,7 @@
"reportableChange": 0
},
{
- "name": "enable local programming",
+ "name": "EnableLocalProgramming",
"code": 40,
"mfgCode": null,
"side": "server",
@@ -10053,7 +10317,7 @@
"reportableChange": 0
},
{
- "name": "enable one touch locking",
+ "name": "EnableOneTouchLocking",
"code": 41,
"mfgCode": null,
"side": "server",
@@ -10068,7 +10332,7 @@
"reportableChange": 0
},
{
- "name": "enable inside status led",
+ "name": "EnableInsideStatusLED",
"code": 42,
"mfgCode": null,
"side": "server",
@@ -10083,7 +10347,7 @@
"reportableChange": 0
},
{
- "name": "enable privacy mode button",
+ "name": "EnablePrivacyModeButton",
"code": 43,
"mfgCode": null,
"side": "server",
@@ -10098,7 +10362,7 @@
"reportableChange": 0
},
{
- "name": "wrong code entry limit",
+ "name": "WrongCodeEntryLimit",
"code": 48,
"mfgCode": null,
"side": "server",
@@ -10113,7 +10377,7 @@
"reportableChange": 0
},
{
- "name": "user code temporary disable time",
+ "name": "UserCodeTemporaryDisableTime",
"code": 49,
"mfgCode": null,
"side": "server",
@@ -10128,7 +10392,7 @@
"reportableChange": 0
},
{
- "name": "send pin over the air",
+ "name": "SendPINOverTheAir",
"code": 50,
"mfgCode": null,
"side": "server",
@@ -10143,7 +10407,7 @@
"reportableChange": 0
},
{
- "name": "require pin for rf operation",
+ "name": "RequirePINforRemoteOperation",
"code": 51,
"mfgCode": null,
"side": "server",
@@ -10158,22 +10422,7 @@
"reportableChange": 0
},
{
- "name": "zigbee security level",
- "code": 52,
- "mfgCode": null,
- "side": "server",
- "included": 0,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "alarm mask",
+ "name": "AlarmMask",
"code": 64,
"mfgCode": null,
"side": "server",
@@ -10188,7 +10437,7 @@
"reportableChange": 0
},
{
- "name": "keypad operation event mask",
+ "name": "KeypadOperationEventMask",
"code": 65,
"mfgCode": null,
"side": "server",
@@ -10203,7 +10452,7 @@
"reportableChange": 0
},
{
- "name": "RF operation event mask",
+ "name": "RemoteOperationEventMask",
"code": 66,
"mfgCode": null,
"side": "server",
@@ -10218,7 +10467,7 @@
"reportableChange": 0
},
{
- "name": "manual operation event mask",
+ "name": "ManualOperationEventMask",
"code": 67,
"mfgCode": null,
"side": "server",
@@ -10233,7 +10482,7 @@
"reportableChange": 0
},
{
- "name": "rfid operation event mask",
+ "name": "RFIDOperationEventMask",
"code": 68,
"mfgCode": null,
"side": "server",
@@ -10248,7 +10497,7 @@
"reportableChange": 0
},
{
- "name": "keypad programming event mask",
+ "name": "KeypadProgrammingEventMask",
"code": 69,
"mfgCode": null,
"side": "server",
@@ -10263,7 +10512,7 @@
"reportableChange": 0
},
{
- "name": "rf programming event mask",
+ "name": "RemoteProgrammingEventMask",
"code": 70,
"mfgCode": null,
"side": "server",
@@ -10278,7 +10527,7 @@
"reportableChange": 0
},
{
- "name": "rfid programming event mask",
+ "name": "RFIDProgrammingEventMask",
"code": 71,
"mfgCode": null,
"side": "server",
@@ -10302,7 +10551,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10385,7 +10634,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "5",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10411,7 +10660,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10425,8 +10674,8 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x0000",
- "reportable": 0,
+ "defaultValue": "0x7FFF",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10440,8 +10689,8 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0x0000",
- "reportable": 0,
+ "defaultValue": "0x7FFF",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10456,7 +10705,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x03",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10470,7 +10719,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0xFF",
+ "defaultValue": "50",
"reportable": 1,
"minInterval": 0,
"maxInterval": 100,
@@ -10485,7 +10734,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0xFF",
+ "defaultValue": "50",
"reportable": 1,
"minInterval": 0,
"maxInterval": 100,
@@ -10515,7 +10764,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0xFF",
+ "defaultValue": "500",
"reportable": 1,
"minInterval": 0,
"maxInterval": 10000,
@@ -10530,7 +10779,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0xFFFF",
+ "defaultValue": "500",
"reportable": 1,
"minInterval": 0,
"maxInterval": 10000,
@@ -10546,7 +10795,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10560,7 +10809,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0xFF",
+ "defaultValue": "500",
"reportable": 1,
"minInterval": 0,
"maxInterval": 10000,
@@ -10575,7 +10824,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "0xFF",
+ "defaultValue": "500",
"reportable": 1,
"minInterval": 0,
"maxInterval": 10000,
@@ -10591,7 +10840,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10606,7 +10855,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFFFF",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10621,7 +10870,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10636,7 +10885,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFFFF",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10651,7 +10900,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 15,
"reportableChange": 0
@@ -10681,7 +10930,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10696,7 +10945,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "5",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10739,7 +10988,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10765,7 +11014,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10780,7 +11029,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10795,7 +11044,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10810,7 +11059,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10825,7 +11074,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10851,7 +11100,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10877,7 +11126,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10892,7 +11141,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10907,7 +11156,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -10922,7 +11171,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -10937,7 +11186,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -10952,7 +11201,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -10967,7 +11216,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -10982,7 +11231,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -10997,7 +11246,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11012,7 +11261,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11027,7 +11276,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11042,7 +11291,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11057,7 +11306,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11087,7 +11336,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11102,7 +11351,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11132,7 +11381,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11142,12 +11391,12 @@
"code": 21,
"mfgCode": null,
"side": "server",
- "included": 0,
+ "included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "0x000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11157,12 +11406,12 @@
"code": 22,
"mfgCode": null,
"side": "server",
- "included": 0,
+ "included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11177,7 +11426,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11192,7 +11441,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11207,7 +11456,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11222,7 +11471,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11237,7 +11486,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11252,7 +11501,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11319,7 +11568,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11377,7 +11626,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x02BC",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11392,7 +11641,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0BB8",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11407,7 +11656,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0640",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11422,7 +11671,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0C80",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11467,7 +11716,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0A28",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11482,7 +11731,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x07D0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11497,7 +11746,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x02BC",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11512,7 +11761,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0BB8",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11527,7 +11776,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0640",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11542,7 +11791,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0C80",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11557,7 +11806,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x19",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -11572,7 +11821,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x04",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11587,7 +11836,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x01",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11602,7 +11851,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11617,7 +11866,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "7",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11632,7 +11881,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "4",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11647,7 +11896,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11662,7 +11911,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x000b",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11677,7 +11926,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11703,7 +11952,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11729,7 +11978,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11744,7 +11993,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11759,7 +12008,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11774,7 +12023,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -11953,7 +12202,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12054,7 +12303,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12069,7 +12318,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12129,7 +12378,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12144,7 +12393,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12159,7 +12408,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12174,7 +12423,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12189,7 +12438,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12204,7 +12453,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12219,7 +12468,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12234,7 +12483,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12249,7 +12498,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12264,7 +12513,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12279,7 +12528,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12294,7 +12543,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12309,7 +12558,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12324,7 +12573,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12339,7 +12588,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12354,7 +12603,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12369,7 +12618,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12384,7 +12633,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12399,7 +12648,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12414,7 +12663,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12429,7 +12678,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12444,7 +12693,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12459,7 +12708,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12474,7 +12723,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12489,7 +12738,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12504,7 +12753,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12519,7 +12768,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12534,7 +12783,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12549,7 +12798,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12564,7 +12813,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12759,7 +13008,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12785,7 +13034,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -12825,8 +13074,8 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "0x01",
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -12840,8 +13089,8 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "0xFFFE",
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -12856,7 +13105,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -12871,7 +13120,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFF",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -12886,7 +13135,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -12912,7 +13161,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12953,7 +13202,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x8000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12968,7 +13217,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x8000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -12998,7 +13247,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13024,7 +13273,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13065,7 +13314,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13080,7 +13329,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13140,7 +13389,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13166,7 +13415,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13192,7 +13441,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13207,7 +13456,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13222,7 +13471,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13237,7 +13486,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -13252,7 +13501,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13278,7 +13527,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13319,7 +13568,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13334,7 +13583,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13364,7 +13613,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13390,7 +13639,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13431,7 +13680,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13446,7 +13695,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13461,7 +13710,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13496,7 +13745,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13539,7 +13788,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13554,7 +13803,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13569,7 +13818,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13584,7 +13833,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13599,7 +13848,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13614,7 +13863,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13640,7 +13889,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13666,7 +13915,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13681,7 +13930,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13732,7 +13981,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13767,7 +14016,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13782,7 +14031,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13797,7 +14046,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13812,7 +14061,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13847,7 +14096,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13882,7 +14131,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -13897,7 +14146,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14012,7 +14261,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14127,7 +14376,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -14142,7 +14391,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFF",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -14157,7 +14406,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -14172,7 +14421,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -14187,7 +14436,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -14202,7 +14451,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -14217,7 +14466,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -14232,7 +14481,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -14247,7 +14496,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14306,7 +14555,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14332,7 +14581,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14347,7 +14596,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14362,7 +14611,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14397,7 +14646,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14423,7 +14672,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14458,7 +14707,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14493,7 +14742,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14536,7 +14785,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14579,7 +14828,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14594,7 +14843,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14609,7 +14858,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14652,7 +14901,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14678,7 +14927,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14693,7 +14942,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14708,7 +14957,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14743,7 +14992,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14778,7 +15027,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14793,7 +15042,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14808,7 +15057,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14823,7 +15072,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14849,7 +15098,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14875,7 +15124,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14890,7 +15139,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14905,7 +15154,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14920,7 +15169,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14935,7 +15184,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14950,7 +15199,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14965,7 +15214,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x01",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -14980,7 +15229,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15023,7 +15272,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15058,7 +15307,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15176,6 +15425,30 @@
"source": "client",
"incoming": 1,
"outgoing": 0
+ },
+ {
+ "name": "SimpleStructEchoRequest",
+ "code": 17,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 0
+ },
+ {
+ "name": "TimedInvokeRequest",
+ "code": 18,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 0
+ },
+ {
+ "name": "TestSimpleOptionalArgumentRequest",
+ "code": 19,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 1,
+ "outgoing": 0
}
],
"attributes": [
@@ -15189,7 +15462,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15243,6 +15516,14 @@
"source": "server",
"incoming": 0,
"outgoing": 1
+ },
+ {
+ "name": "SimpleStructResponse",
+ "code": 9,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 0,
+ "outgoing": 1
}
],
"attributes": [
@@ -15256,7 +15537,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "false",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15271,7 +15552,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15286,7 +15567,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15301,7 +15582,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15316,7 +15597,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15331,7 +15612,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15346,11 +15627,26 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "int24u",
+ "code": 7,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "int32u",
"code": 8,
@@ -15361,11 +15657,56 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "int40u",
+ "code": 9,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "int48u",
+ "code": 10,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "int56u",
+ "code": 11,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "int64u",
"code": 12,
@@ -15376,7 +15717,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15391,7 +15732,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15406,11 +15747,26 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "int24s",
+ "code": 15,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "int32s",
"code": 16,
@@ -15421,11 +15777,56 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "int40s",
+ "code": 17,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "int48s",
+ "code": 18,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "int56s",
+ "code": 19,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "int64s",
"code": 20,
@@ -15436,7 +15837,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15451,7 +15852,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15466,11 +15867,41 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "float_single",
+ "code": 23,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "float_double",
+ "code": 24,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "octet_string",
"code": 25,
@@ -15481,7 +15912,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15492,33 +15923,663 @@
"mfgCode": null,
"side": "server",
"included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "list_octet_string",
+ "code": 27,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "list_struct_octet_string",
+ "code": 28,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "long_octet_string",
+ "code": 29,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "char_string",
+ "code": 30,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "list_octet_string",
- "code": 27,
+ "name": "long_char_string",
+ "code": 31,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ },
+ {
+ "name": "epoch_us",
+ "code": 32,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "epoch_s",
+ "code": 33,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "vendor_id",
+ "code": 34,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "list_nullables_and_optionals_struct",
+ "code": 35,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "enum_attr",
+ "code": 36,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "struct",
+ "code": 37,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "range_restricted_int8u",
+ "code": 38,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "70",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "range_restricted_int8s",
+ "code": 39,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "range_restricted_int16u",
+ "code": 40,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "200",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "range_restricted_int16s",
+ "code": 41,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "list_long_octet_string",
+ "code": 42,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "timed_write_boolean",
+ "code": 48,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "unsupported",
+ "code": 255,
+ "mfgCode": null,
+ "side": "server",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_boolean",
+ "code": 32768,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "false",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_bitmap8",
+ "code": 32769,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_bitmap16",
+ "code": 32770,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_bitmap32",
+ "code": 32771,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_bitmap64",
+ "code": 32772,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int8u",
+ "code": 32773,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int16u",
+ "code": 32774,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int24u",
+ "code": 32775,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int32u",
+ "code": 32776,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int40u",
+ "code": 32777,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int48u",
+ "code": 32778,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int56u",
+ "code": 32779,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int64u",
+ "code": 32780,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int8s",
+ "code": 32781,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int16s",
+ "code": 32782,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int24s",
+ "code": 32783,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int32s",
+ "code": 32784,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int40s",
+ "code": 32785,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int48s",
+ "code": 32786,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int56s",
+ "code": 32787,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_int64s",
+ "code": 32788,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_enum8",
+ "code": 32789,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_enum16",
+ "code": 32790,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_float_single",
+ "code": 32791,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "nullable_float_double",
+ "code": 32792,
"mfgCode": null,
"side": "server",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
"reportableChange": 0
},
{
- "name": "list_struct_octet_string",
- "code": 28,
+ "name": "nullable_octet_string",
+ "code": 32793,
"mfgCode": null,
"side": "server",
"included": 1,
@@ -15526,14 +16587,14 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
"reportableChange": 0
},
{
- "name": "long_octet_string",
- "code": 29,
+ "name": "nullable_char_string",
+ "code": 32798,
"mfgCode": null,
"side": "server",
"included": 1,
@@ -15541,14 +16602,14 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
"reportableChange": 0
},
{
- "name": "char_string",
- "code": 30,
+ "name": "nullable_enum_attr",
+ "code": 32804,
"mfgCode": null,
"side": "server",
"included": 1,
@@ -15556,82 +16617,82 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
"reportableChange": 0
},
{
- "name": "long_char_string",
- "code": 31,
+ "name": "nullable_struct",
+ "code": 32805,
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
"reportableChange": 0
},
{
- "name": "epoch_us",
- "code": 32,
+ "name": "nullable_range_restricted_int8u",
+ "code": 32806,
"mfgCode": null,
"side": "server",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "70",
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
},
{
- "name": "epoch_s",
- "code": 33,
+ "name": "nullable_range_restricted_int8s",
+ "code": 32807,
"mfgCode": null,
"side": "server",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "0",
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
},
{
- "name": "vendor_id",
- "code": 34,
+ "name": "nullable_range_restricted_int16u",
+ "code": 32808,
"mfgCode": null,
"side": "server",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "200",
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
},
{
- "name": "list_nullables_and_optionals_struct",
- "code": 35,
+ "name": "nullable_range_restricted_int16s",
+ "code": 32809,
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "External",
+ "storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "",
- "reportable": 0,
+ "defaultValue": "0",
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -15646,7 +16707,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15672,7 +16733,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15698,7 +16759,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15713,7 +16774,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15728,7 +16789,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xffff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15743,7 +16804,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x8000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15758,7 +16819,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x8000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15773,7 +16834,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xffff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15788,7 +16849,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xffff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15803,7 +16864,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xffff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15818,7 +16879,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xffff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15833,7 +16894,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xffff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15848,7 +16909,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xffff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -15863,158 +16924,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- }
- ]
- },
- {
- "name": "Binding",
- "code": 61440,
- "mfgCode": null,
- "define": "BINDING_CLUSTER",
- "side": "client",
- "enabled": 0,
- "commands": [
- {
- "name": "Bind",
- "code": 0,
- "mfgCode": null,
- "source": "client",
- "incoming": 1,
- "outgoing": 1
- },
- {
- "name": "Unbind",
- "code": 1,
- "mfgCode": null,
- "source": "client",
- "incoming": 1,
- "outgoing": 1
- }
- ],
- "attributes": [
- {
- "name": "ClusterRevision",
- "code": 65533,
- "mfgCode": null,
- "side": "client",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0001",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- }
- ]
- },
- {
- "name": "Binding",
- "code": 61440,
- "mfgCode": null,
- "define": "BINDING_CLUSTER",
- "side": "server",
- "enabled": 1,
- "commands": [],
- "attributes": [
- {
- "name": "ClusterRevision",
- "code": 65533,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0001",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- }
- ]
- },
- {
- "name": "Group Key Management",
- "code": 61444,
- "mfgCode": null,
- "define": "GROUP_KEY_MANAGEMENT_CLUSTER",
- "side": "client",
- "enabled": 0,
- "commands": [],
- "attributes": [
- {
- "name": "ClusterRevision",
- "code": 65533,
- "mfgCode": null,
- "side": "client",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0001",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- }
- ]
- },
- {
- "name": "Group Key Management",
- "code": 61444,
- "mfgCode": null,
- "define": "GROUP_KEY_MANAGEMENT_CLUSTER",
- "side": "server",
- "enabled": 0,
- "commands": [],
- "attributes": [
- {
- "name": "groups",
- "code": 0,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "group keys",
- "code": 1,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 0,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "ClusterRevision",
- "code": 65533,
- "mfgCode": null,
- "side": "server",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16024,10 +16934,10 @@
]
},
{
- "name": "Anonymous Endpoint Type",
- "deviceTypeName": null,
- "deviceTypeCode": null,
- "deviceTypeProfileId": null,
+ "name": "MA-rootdevice",
+ "deviceTypeName": "MA-rootdevice",
+ "deviceTypeCode": 22,
+ "deviceTypeProfileId": 259,
"clusters": [
{
"name": "Identify",
@@ -16065,7 +16975,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16100,7 +17010,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16115,7 +17025,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16190,7 +17100,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16249,7 +17159,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16264,7 +17174,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16347,7 +17257,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16422,7 +17332,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16437,7 +17347,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16452,7 +17362,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16467,7 +17377,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16482,7 +17392,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16497,7 +17407,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16548,7 +17458,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16589,7 +17499,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16604,7 +17514,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16619,7 +17529,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16634,7 +17544,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16649,7 +17559,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16664,7 +17574,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "4",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16755,7 +17665,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16796,7 +17706,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16822,7 +17732,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -16848,7 +17758,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -16863,7 +17773,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -16878,7 +17788,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -16893,7 +17803,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -16908,7 +17818,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -16934,7 +17844,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -16985,7 +17895,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17000,7 +17910,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17015,7 +17925,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17030,7 +17940,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17045,13 +17955,13 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "UserLabel",
+ "name": "NodeLabel",
"code": 5,
"mfgCode": null,
"side": "server",
@@ -17060,7 +17970,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17075,7 +17985,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17090,7 +18000,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17105,7 +18015,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17120,7 +18030,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17135,7 +18045,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17150,7 +18060,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17198,7 +18108,7 @@
"outgoing": 1
},
{
- "name": "SetPin",
+ "name": "SetPINCode",
"code": 5,
"mfgCode": null,
"source": "client",
@@ -17206,7 +18116,7 @@
"outgoing": 1
},
{
- "name": "GetPin",
+ "name": "GetPINCode",
"code": 6,
"mfgCode": null,
"source": "client",
@@ -17214,7 +18124,7 @@
"outgoing": 1
},
{
- "name": "ClearPin",
+ "name": "ClearPINCode",
"code": 7,
"mfgCode": null,
"source": "client",
@@ -17222,7 +18132,7 @@
"outgoing": 1
},
{
- "name": "ClearAllPins",
+ "name": "ClearAllPINCodes",
"code": 8,
"mfgCode": null,
"source": "client",
@@ -17230,7 +18140,7 @@
"outgoing": 1
},
{
- "name": "SetWeekdaySchedule",
+ "name": "SetWeekDaySchedule",
"code": 11,
"mfgCode": null,
"source": "client",
@@ -17238,7 +18148,7 @@
"outgoing": 1
},
{
- "name": "GetWeekdaySchedule",
+ "name": "GetWeekDaySchedule",
"code": 12,
"mfgCode": null,
"source": "client",
@@ -17246,7 +18156,7 @@
"outgoing": 1
},
{
- "name": "ClearWeekdaySchedule",
+ "name": "ClearWeekDaySchedule",
"code": 13,
"mfgCode": null,
"source": "client",
@@ -17254,7 +18164,7 @@
"outgoing": 1
},
{
- "name": "SetYeardaySchedule",
+ "name": "SetYearDaySchedule",
"code": 14,
"mfgCode": null,
"source": "client",
@@ -17262,7 +18172,7 @@
"outgoing": 1
},
{
- "name": "GetYeardaySchedule",
+ "name": "GetYearDaySchedule",
"code": 15,
"mfgCode": null,
"source": "client",
@@ -17270,7 +18180,7 @@
"outgoing": 1
},
{
- "name": "ClearYeardaySchedule",
+ "name": "ClearYearDaySchedule",
"code": 16,
"mfgCode": null,
"source": "client",
@@ -17318,7 +18228,7 @@
"outgoing": 1
},
{
- "name": "SetRfid",
+ "name": "SetRFIDCode",
"code": 22,
"mfgCode": null,
"source": "client",
@@ -17326,7 +18236,7 @@
"outgoing": 1
},
{
- "name": "GetRfid",
+ "name": "GetRFIDCode",
"code": 23,
"mfgCode": null,
"source": "client",
@@ -17334,7 +18244,7 @@
"outgoing": 1
},
{
- "name": "ClearRfid",
+ "name": "ClearRFIDCode",
"code": 24,
"mfgCode": null,
"source": "client",
@@ -17342,7 +18252,7 @@
"outgoing": 1
},
{
- "name": "ClearAllRfids",
+ "name": "ClearAllRFIDCodes",
"code": 25,
"mfgCode": null,
"source": "client",
@@ -17361,7 +18271,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17375,27 +18285,10 @@
"define": "DOOR_LOCK_CLUSTER",
"side": "server",
"enabled": 0,
- "commands": [
- {
- "name": "LockDoorResponse",
- "code": 0,
- "mfgCode": null,
- "source": "server",
- "incoming": 1,
- "outgoing": 1
- },
- {
- "name": "UnlockDoorResponse",
- "code": 1,
- "mfgCode": null,
- "source": "server",
- "incoming": 1,
- "outgoing": 1
- }
- ],
+ "commands": [],
"attributes": [
{
- "name": "lock state",
+ "name": "LockState",
"code": 0,
"mfgCode": null,
"side": "server",
@@ -17410,7 +18303,7 @@
"reportableChange": 0
},
{
- "name": "lock type",
+ "name": "LockType",
"code": 1,
"mfgCode": null,
"side": "server",
@@ -17419,13 +18312,13 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "actuator enabled",
+ "name": "ActuatorEnabled",
"code": 2,
"mfgCode": null,
"side": "server",
@@ -17434,13 +18327,13 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "door state",
+ "name": "DoorState",
"code": 3,
"mfgCode": null,
"side": "server",
@@ -17455,7 +18348,7 @@
"reportableChange": 0
},
{
- "name": "enable logging",
+ "name": "EnableLogging",
"code": 32,
"mfgCode": null,
"side": "server",
@@ -17470,7 +18363,7 @@
"reportableChange": 0
},
{
- "name": "language",
+ "name": "Language",
"code": 33,
"mfgCode": null,
"side": "server",
@@ -17485,7 +18378,7 @@
"reportableChange": 0
},
{
- "name": "led settings",
+ "name": "LEDSettings",
"code": 34,
"mfgCode": null,
"side": "server",
@@ -17500,7 +18393,7 @@
"reportableChange": 0
},
{
- "name": "auto relock time",
+ "name": "AutoRelockTime",
"code": 35,
"mfgCode": null,
"side": "server",
@@ -17515,7 +18408,7 @@
"reportableChange": 0
},
{
- "name": "sound volume",
+ "name": "SoundVolume",
"code": 36,
"mfgCode": null,
"side": "server",
@@ -17530,7 +18423,7 @@
"reportableChange": 0
},
{
- "name": "operating mode",
+ "name": "OperatingMode",
"code": 37,
"mfgCode": null,
"side": "server",
@@ -17545,7 +18438,7 @@
"reportableChange": 0
},
{
- "name": "default configuration register",
+ "name": "DefaultConfigurationRegister",
"code": 39,
"mfgCode": null,
"side": "server",
@@ -17560,7 +18453,7 @@
"reportableChange": 0
},
{
- "name": "enable local programming",
+ "name": "EnableLocalProgramming",
"code": 40,
"mfgCode": null,
"side": "server",
@@ -17575,7 +18468,7 @@
"reportableChange": 0
},
{
- "name": "enable one touch locking",
+ "name": "EnableOneTouchLocking",
"code": 41,
"mfgCode": null,
"side": "server",
@@ -17590,7 +18483,7 @@
"reportableChange": 0
},
{
- "name": "enable inside status led",
+ "name": "EnableInsideStatusLED",
"code": 42,
"mfgCode": null,
"side": "server",
@@ -17605,7 +18498,7 @@
"reportableChange": 0
},
{
- "name": "enable privacy mode button",
+ "name": "EnablePrivacyModeButton",
"code": 43,
"mfgCode": null,
"side": "server",
@@ -17620,7 +18513,7 @@
"reportableChange": 0
},
{
- "name": "wrong code entry limit",
+ "name": "WrongCodeEntryLimit",
"code": 48,
"mfgCode": null,
"side": "server",
@@ -17635,7 +18528,7 @@
"reportableChange": 0
},
{
- "name": "user code temporary disable time",
+ "name": "UserCodeTemporaryDisableTime",
"code": 49,
"mfgCode": null,
"side": "server",
@@ -17650,7 +18543,7 @@
"reportableChange": 0
},
{
- "name": "send pin over the air",
+ "name": "SendPINOverTheAir",
"code": 50,
"mfgCode": null,
"side": "server",
@@ -17665,7 +18558,7 @@
"reportableChange": 0
},
{
- "name": "require pin for rf operation",
+ "name": "RequirePINforRemoteOperation",
"code": 51,
"mfgCode": null,
"side": "server",
@@ -17680,22 +18573,7 @@
"reportableChange": 0
},
{
- "name": "zigbee security level",
- "code": 52,
- "mfgCode": null,
- "side": "server",
- "included": 0,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0x00",
- "reportable": 1,
- "minInterval": 0,
- "maxInterval": 65344,
- "reportableChange": 0
- },
- {
- "name": "alarm mask",
+ "name": "AlarmMask",
"code": 64,
"mfgCode": null,
"side": "server",
@@ -17710,7 +18588,7 @@
"reportableChange": 0
},
{
- "name": "keypad operation event mask",
+ "name": "KeypadOperationEventMask",
"code": 65,
"mfgCode": null,
"side": "server",
@@ -17725,7 +18603,7 @@
"reportableChange": 0
},
{
- "name": "RF operation event mask",
+ "name": "RemoteOperationEventMask",
"code": 66,
"mfgCode": null,
"side": "server",
@@ -17740,7 +18618,7 @@
"reportableChange": 0
},
{
- "name": "manual operation event mask",
+ "name": "ManualOperationEventMask",
"code": 67,
"mfgCode": null,
"side": "server",
@@ -17755,7 +18633,7 @@
"reportableChange": 0
},
{
- "name": "rfid operation event mask",
+ "name": "RFIDOperationEventMask",
"code": 68,
"mfgCode": null,
"side": "server",
@@ -17770,7 +18648,7 @@
"reportableChange": 0
},
{
- "name": "keypad programming event mask",
+ "name": "KeypadProgrammingEventMask",
"code": 69,
"mfgCode": null,
"side": "server",
@@ -17785,7 +18663,7 @@
"reportableChange": 0
},
{
- "name": "rf programming event mask",
+ "name": "RemoteProgrammingEventMask",
"code": 70,
"mfgCode": null,
"side": "server",
@@ -17800,7 +18678,7 @@
"reportableChange": 0
},
{
- "name": "rfid programming event mask",
+ "name": "RFIDProgrammingEventMask",
"code": 71,
"mfgCode": null,
"side": "server",
@@ -17824,7 +18702,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17867,7 +18745,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17893,7 +18771,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17908,7 +18786,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17923,7 +18801,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17938,7 +18816,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -17953,7 +18831,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18092,7 +18970,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18148,7 +19026,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18193,7 +19071,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18208,7 +19086,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18238,7 +19116,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x01",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18253,7 +19131,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18268,7 +19146,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18283,7 +19161,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18298,7 +19176,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18313,7 +19191,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18328,7 +19206,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18343,7 +19221,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18358,7 +19236,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18373,7 +19251,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18388,7 +19266,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18403,7 +19281,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18418,7 +19296,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18433,7 +19311,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18448,7 +19326,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18463,7 +19341,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18478,7 +19356,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18493,7 +19371,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18508,7 +19386,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18523,7 +19401,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18538,7 +19416,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18553,7 +19431,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18568,7 +19446,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18583,7 +19461,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18598,7 +19476,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18613,7 +19491,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18628,7 +19506,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18643,7 +19521,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18658,7 +19536,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18673,7 +19551,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18688,7 +19566,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18703,7 +19581,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18718,7 +19596,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18733,7 +19611,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x01",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18748,7 +19626,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18763,7 +19641,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18778,7 +19656,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0019",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18793,7 +19671,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18808,7 +19686,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18823,7 +19701,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFEFF",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18838,7 +19716,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18853,7 +19731,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18868,7 +19746,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18894,7 +19772,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18935,7 +19813,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x8000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18950,7 +19828,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x8000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -18980,7 +19858,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19006,7 +19884,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19047,7 +19925,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19062,7 +19940,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19077,7 +19955,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19112,7 +19990,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19155,7 +20033,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19170,7 +20048,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19185,7 +20063,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19200,7 +20078,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19215,7 +20093,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xff",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19230,7 +20108,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -19242,32 +20120,31 @@
],
"endpoints": [
{
- "endpointTypeName": "Anonymous Endpoint Type",
+ "endpointTypeName": "MA-rootdevice",
"endpointTypeIndex": 0,
"profileId": 259,
"endpointId": 0,
"networkId": 0,
- "endpointVersion": null,
- "deviceIdentifier": null
+ "endpointVersion": 1,
+ "deviceIdentifier": 22
},
{
- "endpointTypeName": "Anonymous Endpoint Type",
+ "endpointTypeName": "MA-rootdevice",
"endpointTypeIndex": 1,
- "profileId": "0x0103",
+ "profileId": 259,
"endpointId": 1,
"networkId": 0,
- "endpointVersion": null,
- "deviceIdentifier": null
+ "endpointVersion": 1,
+ "deviceIdentifier": 22
},
{
- "endpointTypeName": "Anonymous Endpoint Type",
+ "endpointTypeName": "MA-rootdevice",
"endpointTypeIndex": 2,
- "profileId": "0x0103",
+ "profileId": 259,
"endpointId": 2,
"networkId": 0,
- "endpointVersion": null,
- "deviceIdentifier": null
+ "endpointVersion": 1,
+ "deviceIdentifier": 22
}
- ],
- "log": []
+ ]
}
\ No newline at end of file
diff --git a/examples/all-clusters-app/all-clusters-common/include/static-supported-modes-manager.h b/examples/all-clusters-app/all-clusters-common/include/static-supported-modes-manager.h
new file mode 100644
index 00000000000000..2d4f674a65920d
--- /dev/null
+++ b/examples/all-clusters-app/all-clusters-common/include/static-supported-modes-manager.h
@@ -0,0 +1,73 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include
+#include
+#include
+
+namespace chip {
+namespace app {
+namespace Clusters {
+namespace ModeSelect {
+
+/**
+ * This implementation statically defines the options.
+ */
+
+class StaticSupportedModesManager : public chip::app::Clusters::ModeSelect::SupportedModesManager
+{
+ using ModeOptionStructType = Structs::ModeOptionStruct::Type;
+ using storage_value_type = const ModeOptionStructType;
+
+ struct EndpointSpanPair
+ {
+ const EndpointId mEndpointId;
+ const Span mSpan;
+
+ EndpointSpanPair(const EndpointId aEndpointId, const Span && aSpan) :
+ mEndpointId(aEndpointId), mSpan(aSpan)
+ {}
+
+ EndpointSpanPair() : mEndpointId(0), mSpan(Span()) {}
+ };
+
+ static storage_value_type coffeeOptions[];
+ static const EndpointSpanPair supportedOptionsByEndpoints[EMBER_AF_MODE_SELECT_CLUSTER_SERVER_ENDPOINT_COUNT];
+
+public:
+ static const StaticSupportedModesManager instance;
+
+ const SupportedModesManager::ModeOptionsProvider getModeOptionsProvider(EndpointId endpointId) const override;
+
+ EmberAfStatus getModeOptionByMode(EndpointId endpointId, uint8_t mode, const ModeOptionStructType ** dataPtr) const override;
+
+ ~StaticSupportedModesManager(){};
+
+ StaticSupportedModesManager() {}
+
+ static inline const StaticSupportedModesManager & getStaticSupportedModesManagerInstance() { return instance; }
+};
+
+const SupportedModesManager * getSupportedModesManager();
+
+} // namespace ModeSelect
+} // namespace Clusters
+} // namespace app
+} // namespace chip
diff --git a/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp b/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp
index c4ed4eb0c8792e..caaad460a616b3 100644
--- a/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp
+++ b/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp
@@ -37,7 +37,7 @@ class BridgedActionsAttrAccess : public AttributeAccessInterface
// Register for the Bridged Actions cluster on all endpoints.
BridgedActionsAttrAccess() : AttributeAccessInterface(Optional::Missing(), BridgedActions::Id) {}
- CHIP_ERROR Read(const ConcreteAttributePath & aPath, AttributeValueEncoder & aEncoder) override;
+ CHIP_ERROR Read(const ConcreteReadAttributePath & aPath, AttributeValueEncoder & aEncoder) override;
private:
static constexpr uint16_t ClusterRevision = 1;
@@ -48,6 +48,8 @@ class BridgedActionsAttrAccess : public AttributeAccessInterface
CHIP_ERROR ReadClusterRevision(EndpointId endpoint, AttributeValueEncoder & aEncoder);
};
+constexpr uint16_t BridgedActionsAttrAccess::ClusterRevision;
+
CHIP_ERROR BridgedActionsAttrAccess::ReadActionListAttribute(EndpointId endpoint, AttributeValueEncoder & aEncoder)
{
// Just return an empty list
@@ -73,7 +75,7 @@ CHIP_ERROR BridgedActionsAttrAccess::ReadClusterRevision(EndpointId endpoint, At
BridgedActionsAttrAccess gAttrAccess;
-CHIP_ERROR BridgedActionsAttrAccess::Read(const ConcreteAttributePath & aPath, AttributeValueEncoder & aEncoder)
+CHIP_ERROR BridgedActionsAttrAccess::Read(const ConcreteReadAttributePath & aPath, AttributeValueEncoder & aEncoder)
{
VerifyOrDie(aPath.mClusterId == BridgedActions::Id);
diff --git a/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp b/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp
new file mode 100644
index 00000000000000..4f216bebd73e83
--- /dev/null
+++ b/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp
@@ -0,0 +1,71 @@
+#include
+
+using namespace std;
+using namespace chip;
+using namespace chip::app::Clusters;
+using namespace chip::app::Clusters::ModeSelect;
+
+using ModeOptionStructType = Structs::ModeOptionStruct::Type;
+using storage_value_type = const ModeOptionStructType;
+namespace {
+Structs::ModeOptionStruct::Type buildModeOptionStruct(const char * label, uint8_t mode, uint32_t semanticTag)
+{
+ Structs::ModeOptionStruct::Type option;
+ option.label = CharSpan(label, strlen(label));
+ option.mode = mode;
+ option.semanticTag = semanticTag;
+ return option;
+}
+} // namespace
+
+// TODO: Configure your options for each endpoint
+storage_value_type StaticSupportedModesManager::coffeeOptions[] = { buildModeOptionStruct("Black", 0, 0),
+ buildModeOptionStruct("Cappuccino", 4, 0),
+ buildModeOptionStruct("Espresso", 7, 0) };
+const StaticSupportedModesManager::EndpointSpanPair
+ StaticSupportedModesManager::supportedOptionsByEndpoints[EMBER_AF_MODE_SELECT_CLUSTER_SERVER_ENDPOINT_COUNT] = {
+ EndpointSpanPair(1, Span(StaticSupportedModesManager::coffeeOptions)) // Options for Endpoint 1
+ };
+
+const StaticSupportedModesManager StaticSupportedModesManager::instance = StaticSupportedModesManager();
+
+const SupportedModesManager::ModeOptionsProvider StaticSupportedModesManager::getModeOptionsProvider(EndpointId endpointId) const
+{
+ for (auto & endpointSpanPair : supportedOptionsByEndpoints)
+ {
+ if (endpointSpanPair.mEndpointId == endpointId)
+ {
+ return ModeOptionsProvider(endpointSpanPair.mSpan.data(), endpointSpanPair.mSpan.end());
+ }
+ }
+ return ModeOptionsProvider(nullptr, nullptr);
+}
+
+EmberAfStatus StaticSupportedModesManager::getModeOptionByMode(unsigned short endpointId, unsigned char mode,
+ const ModeOptionStructType ** dataPtr) const
+{
+ auto modeOptionsProvider = this->getModeOptionsProvider(endpointId);
+ if (modeOptionsProvider.begin() == nullptr)
+ {
+ return EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER;
+ }
+ auto * begin = this->getModeOptionsProvider(endpointId).begin();
+ auto * end = this->getModeOptionsProvider(endpointId).end();
+
+ for (auto * it = begin; it != end; ++it)
+ {
+ auto & modeOption = *it;
+ if (modeOption.mode == mode)
+ {
+ *dataPtr = &modeOption;
+ return EMBER_ZCL_STATUS_SUCCESS;
+ }
+ }
+ emberAfPrintln(EMBER_AF_PRINT_DEBUG, "Cannot find the mode %" PRIu8, mode);
+ return EMBER_ZCL_STATUS_INVALID_VALUE;
+}
+
+const ModeSelect::SupportedModesManager * ModeSelect::getSupportedModesManager()
+{
+ return &StaticSupportedModesManager::instance;
+}
diff --git a/examples/all-clusters-app/ameba/README.md b/examples/all-clusters-app/ameba/README.md
index 38615327fa233f..69dfd29aa11c4c 100644
--- a/examples/all-clusters-app/ameba/README.md
+++ b/examples/all-clusters-app/ameba/README.md
@@ -10,7 +10,6 @@ control.
- [Building the Example Application](#building-the-example-application)
- [Commissioning and cluster control](#commissioning-and-cluster-control)
- [Commissioning](#commissioning)
- - [Bypass mode](#bypass-mode)
- [BLE mode](#ble-mode)
- [IP mode](#ip-mode)
- [Cluster control](#cluster-control)
@@ -59,36 +58,13 @@ The CHIP demo application is supported on
## Commissioning
-There are three commissioning modes supported by Ameba platform:
-
-### Bypass mode
-
-1. In "connectedhomeip/config/ameba/args.gni"
-
- - set `chip_bypass_rendezvous = true`
- - Set `chip_ip_commissioning = false`
- - Set `chip_use_clusters_for_ip_commissioning = false`
- - Set `chip_config_network_layer_ble = false`
-
-2. In "connectedhomeip/src/platform/Ameba/CHIPDevicePlatformConfig.h"
-
- - Set `#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 0`
-
-3. Build and Flash
-4. Use ATS\$ command to run all-cluster example.
-5. Connect to AP using `ATW0, ATW1, ATWC` commands
-6. Test with
- [Chip-Tool](https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool)
- or
- [Python Controller](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/python_chip_controller_building.md).
+There are two commissioning modes supported by Ameba platform:
### BLE mode
1. In "connectedhomeip/config/ameba/args.gni"
- set `chip_bypass_rendezvous = false`
- - Set `chip_ip_commissioning = false`
- - Set `chip_use_clusters_for_ip_commissioning = false`
- Set `chip_config_network_layer_ble = true`
2. In "connectedhomeip/src/platform/Ameba/CHIPDevicePlatformConfig.h"
@@ -107,8 +83,6 @@ There are three commissioning modes supported by Ameba platform:
1. In "connectedhomeip/config/ameba/args.gni"
- set `chip_bypass_rendezvous = false`
- - Set `chip_ip_commissioning = true`
- - Set `chip_use_clusters_for_ip_commissioning = true`
- Set `chip_config_network_layer_ble = false`
2. In "connectedhomeip/src/platform/Ameba/CHIPDevicePlatformConfig.h"
diff --git a/examples/all-clusters-app/ameba/chip_main.cmake b/examples/all-clusters-app/ameba/chip_main.cmake
index 7104367e829820..3c0aa18f15d08f 100755
--- a/examples/all-clusters-app/ameba/chip_main.cmake
+++ b/examples/all-clusters-app/ameba/chip_main.cmake
@@ -13,22 +13,6 @@ include(${prj_root}/GCC-RELEASE/project_hp/asdk/includepath.cmake)
list(
APPEND ${list_chip_main_sources}
- #chip app
- ${chip_dir}/src/app/Command.cpp
- ${chip_dir}/src/app/CommandHandler.cpp
- ${chip_dir}/src/app/InteractionModelEngine.cpp
- ${chip_dir}/src/app/CommandSender.cpp
- ${chip_dir}/src/app/decoder.cpp
- ${chip_dir}/src/app/encoder-common.cpp
- ${chip_dir}/src/app/EventManagement.cpp
- ${chip_dir}/src/app/ReadClient.cpp
- ${chip_dir}/src/app/ReadHandler.cpp
- ${chip_dir}/src/app/WriteClient.cpp
- ${chip_dir}/src/app/WriteHandler.cpp
- ${chip_dir}/src/app/util/CHIPDeviceCallbacksMgr.cpp
- ${chip_dir}/src/app/util/esi-management.cpp
- ${chip_dir}/src/app/reporting/Engine.cpp
-
${chip_dir}/zzz_generated/all-clusters-app/zap-generated/attribute-size.cpp
${chip_dir}/zzz_generated/all-clusters-app/zap-generated/CHIPClientCallbacks.cpp
${chip_dir}/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
@@ -36,6 +20,7 @@ list(
${chip_dir}/zzz_generated/all-clusters-app/zap-generated/CHIPClusters.cpp
${chip_dir}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp
+ ${chip_dir}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp
${chip_dir}/examples/all-clusters-app/ameba/main/chipinterface.cpp
${chip_dir}/examples/all-clusters-app/ameba/main/DeviceCallbacks.cpp
@@ -63,6 +48,7 @@ target_include_directories(
${chip_dir}/zzz_generated/all-clusters-app/zap-generated
${chip_dir}/zzz_generated/app-common
${chip_dir}/examples/all-clusters-app/all-clusters-common
+ ${chip_dir}/examples/all-clusters-app/all-clusters-common/include
${chip_dir}/examples/all-clusters-app/ameba/main/include
${chip_dir_output}/gen/include
${chip_dir}/src/include/
diff --git a/examples/all-clusters-app/ameba/main/chipinterface.cpp b/examples/all-clusters-app/ameba/main/chipinterface.cpp
index d3059b23ca9764..e49d28aaca6c24 100644
--- a/examples/all-clusters-app/ameba/main/chipinterface.cpp
+++ b/examples/all-clusters-app/ameba/main/chipinterface.cpp
@@ -98,7 +98,7 @@ std::string createSetupPayload()
ChipLogError(DeviceLayer, "Couldn't get discriminator: %s\r\n", ErrorStr(err));
return result;
}
- ChipLogProgress(DeviceLayer, "Setup discriminator: %u (0x%x)\r\n", discriminator, discriminator);
+ ChipLogProgress(DeviceLayer, "Setup discriminator: %d (0x%x)\r\n", discriminator, discriminator);
uint32_t setupPINCode;
err = ConfigurationMgr().GetSetupPinCode(setupPINCode);
@@ -107,7 +107,7 @@ std::string createSetupPayload()
ChipLogError(DeviceLayer, "Couldn't get setupPINCode: %s\r\n", ErrorStr(err));
return result;
}
- ChipLogProgress(DeviceLayer, "Setup PIN code: %u (0x%x)\r\n", setupPINCode, setupPINCode);
+ ChipLogProgress(DeviceLayer, "Setup PIN code: %lu (0x%lx)\r\n", setupPINCode, setupPINCode);
uint16_t vendorId;
err = ConfigurationMgr().GetVendorId(vendorId);
@@ -180,7 +180,7 @@ std::string createSetupPayload()
if (err != CHIP_NO_ERROR)
{
- ChipLogError(DeviceLayer, "Couldn't get payload string %\r\n" CHIP_ERROR_FORMAT, err.Format());
+ ChipLogError(DeviceLayer, "Couldn't get payload string %lu\r\n" CHIP_ERROR_FORMAT, err.Format());
}
return result;
};
@@ -209,10 +209,11 @@ extern "C" void ChipTest(void)
// Initialize device attestation config
SetDeviceAttestationCredentialsProvider(Examples::GetExampleDACProvider());
- std::string qrCodeText = createSetupPayload();
- ChipLogProgress(DeviceLayer, "QR CODE Text: '%s'\r\n", qrCodeText.c_str());
-
+ if (RTW_SUCCESS != wifi_is_connected_to_ap())
{
+ std::string qrCodeText = createSetupPayload();
+ ChipLogProgress(DeviceLayer, "QR CODE Text: '%s'\r\n", qrCodeText.c_str());
+
std::vector qrCode(3 * qrCodeText.size() + 1);
err = EncodeQRCodeToUrl(qrCodeText.c_str(), qrCodeText.size(), qrCode.data(), qrCode.max_size());
if (err == CHIP_NO_ERROR)
diff --git a/examples/all-clusters-app/esp32/CMakeLists.txt b/examples/all-clusters-app/esp32/CMakeLists.txt
index 024a42a8d4d43c..9685eac322e0b3 100644
--- a/examples/all-clusters-app/esp32/CMakeLists.txt
+++ b/examples/all-clusters-app/esp32/CMakeLists.txt
@@ -29,8 +29,6 @@ if(${IDF_TARGET} STREQUAL "esp32")
list(APPEND EXTRA_COMPONENT_DIRS "${CMAKE_CURRENT_LIST_DIR}/../../common/m5stack-tft/repo/components/tft"
"${CMAKE_CURRENT_LIST_DIR}/../../common/m5stack-tft/repo/components/spidriver"
"${CMAKE_CURRENT_LIST_DIR}/../../common/screen-framework")
-elseif(${IDF_TARGET} STREQUAL "esp32c3")
- list(APPEND EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/examples/peripherals/rmt/led_strip/components")
endif()
project(chip-all-clusters-app)
diff --git a/examples/all-clusters-app/esp32/README.md b/examples/all-clusters-app/esp32/README.md
index 65e4eff495c53f..9aafdcad263a44 100644
--- a/examples/all-clusters-app/esp32/README.md
+++ b/examples/all-clusters-app/esp32/README.md
@@ -40,14 +40,14 @@ the riscv-esp32-elf toolchain for ESP32C3 modules.
The VSCode devcontainer has these components pre-installed, so you can skip this
step. To install these components manually, follow these steps:
-- Clone the Espressif ESP-IDF and checkout
- [v4.3 tag](https://github.com/espressif/esp-idf/releases/v4.3)
+- Clone the Espressif ESP-IDF and checkout branch
+ [release/v4.4](https://github.com/espressif/esp-idf/tree/release/v4.4)
$ mkdir ${HOME}/tools
$ cd ${HOME}/tools
$ git clone https://github.com/espressif/esp-idf.git
$ cd esp-idf
- $ git checkout v4.3
+ $ git checkout release/v4.4
$ git submodule update --init
$ ./install.sh
diff --git a/examples/all-clusters-app/esp32/main/CMakeLists.txt b/examples/all-clusters-app/esp32/main/CMakeLists.txt
index d342e16e5beff0..41e092378c7f5a 100644
--- a/examples/all-clusters-app/esp32/main/CMakeLists.txt
+++ b/examples/all-clusters-app/esp32/main/CMakeLists.txt
@@ -19,6 +19,7 @@
# The list of src and include dirs must be in sync with that in all-clusters-app/esp32/main/component.mk
set(PRIV_INCLUDE_DIRS_LIST
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/zzz_generated/all-clusters-app"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/all-clusters-app/all-clusters-common/include"
"${CMAKE_CURRENT_LIST_DIR}/include"
)
set(SRC_DIRS_LIST
@@ -26,6 +27,7 @@ set(SRC_DIRS_LIST
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/zzz_generated/all-clusters-app/zap-generated"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/zzz_generated/app-common/app-common/zap-generated/attributes"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/zzz_generated/app-common/app-common/zap-generated"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/platform/esp32/route_hook"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/platform/esp32/shell_extension"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/util"
@@ -37,6 +39,7 @@ set(SRC_DIRS_LIST
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/on-off-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/level-control"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/identify-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/account-login-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/application-launcher-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/audio-output-server"
@@ -55,7 +58,8 @@ set(SRC_DIRS_LIST
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/media-playback-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ota-provider"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/target-navigator-server"
- "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thermostat-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thermostat-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thermostat-user-interface-configuration-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thread_network_diagnostics_server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/tv-channel-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/scenes"
@@ -70,6 +74,7 @@ set(SRC_DIRS_LIST
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ethernet_network_diagnostics_server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/wifi_network_diagnostics_server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/pump-configuration-and-control-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/power-source-configuration-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/all-clusters-app/all-clusters-common/src"
#${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ias-zone-client
)
@@ -116,11 +121,6 @@ target_compile_options(${COMPONENT_LIB} PRIVATE "-DLWIP_IPV6_SCOPES=0" "-DCHIP_H
if (CONFIG_ENABLE_PW_RPC)
-idf_component_get_property(chip_lib chip COMPONENT_LIB)
-
-set(WRAP_FUNCTIONS esp_log_write)
-target_link_libraries(${chip_lib} INTERFACE "-Wl,--wrap=${WRAP_FUNCTIONS}")
-
get_filename_component(CHIP_ROOT ../third_party/connectedhomeip REALPATH)
set(PIGWEED_ROOT "${CHIP_ROOT}/third_party/pigweed/repo")
@@ -217,10 +217,16 @@ target_link_libraries(${COMPONENT_LIB} PUBLIC
pw_trace_tokenized.protos.nanopb_rpc
)
-set_property(TARGET ${chip_lib} APPEND PROPERTY LINK_LIBRARIES ${COMPONENT_LIB})
-target_include_directories(${chip_lib} PUBLIC
- "$/protocol_buffer/gen/third_party/connectedhomeip/third_party/pigweed/repo/pw_rpc/protos.proto_library/nanopb_rpc"
- "$/protocol_buffer/gen/third_party/connectedhomeip/third_party/pigweed/repo/pw_rpc/protos.proto_library/nanopb"
- "$/protocol_buffer/gen/third_party/connectedhomeip/third_party/pigweed/repo/pw_rpc/protos.proto_library/pwpb")
+target_link_options(${COMPONENT_LIB}
+ PUBLIC
+ "-T${PIGWEED_ROOT}/pw_tokenizer/pw_tokenizer_linker_sections.ld"
+)
+
+target_compile_options(${COMPONENT_LIB} PRIVATE
+ "-DPW_RPC_ATTRIBUTE_SERVICE=1"
+ "-DPW_RPC_BUTTON_SERVICE=1"
+ "-DPW_RPC_DEVICE_SERVICE=1"
+ "-DPW_RPC_LIGHTING_SERVICE=1"
+ "-DPW_RPC_LOCKING_SERVICE=1")
endif (CONFIG_ENABLE_PW_RPC)
diff --git a/examples/all-clusters-app/esp32/main/DeviceCallbacks.cpp b/examples/all-clusters-app/esp32/main/DeviceCallbacks.cpp
index 9c6f54421bbe9b..edccd2b899e960 100644
--- a/examples/all-clusters-app/esp32/main/DeviceCallbacks.cpp
+++ b/examples/all-clusters-app/esp32/main/DeviceCallbacks.cpp
@@ -28,11 +28,15 @@
#include "Globals.h"
#include "LEDWidget.h"
#include "WiFiWidget.h"
+#include "esp_check.h"
+#include "esp_err.h"
#include "esp_heap_caps.h"
#include "esp_log.h"
+#include "route_hook/esp_route_hook.h"
#include
#include
#include
+#include
#include
#include
#include
@@ -46,9 +50,48 @@ using namespace ::chip::Inet;
using namespace ::chip::System;
using namespace ::chip::DeviceLayer;
-uint32_t identifyTimerCount;
constexpr uint32_t kIdentifyTimerDelayMS = 250;
+void OnIdentifyTriggerEffect(Identify * identify)
+{
+ switch (identify->mCurrentEffectIdentifier)
+ {
+ case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BLINK:
+ statusLED1.Blink(kIdentifyTimerDelayMS * 2);
+ ChipLogProgress(Zcl, "EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BLINK");
+ break;
+ case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BREATHE:
+ ChipLogProgress(Zcl, "EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BREATHE");
+ break;
+ case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_OKAY:
+ ChipLogProgress(Zcl, "EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_OKAY");
+ break;
+ case EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_CHANNEL_CHANGE:
+ ChipLogProgress(Zcl, "EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_CHANNEL_CHANGE");
+ break;
+ default:
+ ChipLogProgress(Zcl, "No identifier effect");
+ break;
+ }
+ return;
+}
+
+Identify gIdentify0 = {
+ chip::EndpointId{ 0 },
+ [](Identify *) { ChipLogProgress(Zcl, "onIdentifyStart"); },
+ [](Identify *) { ChipLogProgress(Zcl, "onIdentifyStop"); },
+ EMBER_ZCL_IDENTIFY_IDENTIFY_TYPE_VISIBLE_LED,
+ OnIdentifyTriggerEffect,
+};
+
+Identify gIdentify1 = {
+ chip::EndpointId{ 1 },
+ [](Identify *) { ChipLogProgress(Zcl, "onIdentifyStart"); },
+ [](Identify *) { ChipLogProgress(Zcl, "onIdentifyStop"); },
+ EMBER_ZCL_IDENTIFY_IDENTIFY_TYPE_VISIBLE_LED,
+ OnIdentifyTriggerEffect,
+};
+
void DeviceCallbacks::DeviceEventCallback(const ChipDeviceEvent * event, intptr_t arg)
{
switch (event->Type)
@@ -83,6 +126,10 @@ void DeviceCallbacks::DeviceEventCallback(const ChipDeviceEvent * event, intptr_
// newly selected address.
chip::app::DnssdServer::Instance().StartServer();
}
+ if (event->InterfaceIpAddressChanged.Type == InterfaceIpChangeType::kIpV6_Assigned)
+ {
+ ESP_ERROR_CHECK(esp_route_hook_init(esp_netif_get_handle_from_ifkey("WIFI_STA_DEF")));
+ }
break;
}
@@ -101,10 +148,6 @@ void DeviceCallbacks::PostAttributeChangeCallback(EndpointId endpointId, Cluster
OnOnOffPostAttributeChangeCallback(endpointId, attributeId, value);
break;
- case ZCL_IDENTIFY_CLUSTER_ID:
- OnIdentifyPostAttributeChangeCallback(endpointId, attributeId, value);
- break;
-
case ZCL_LEVEL_CONTROL_CLUSTER_ID:
OnLevelControlAttributeChangeCallback(endpointId, attributeId, value);
break;
@@ -211,37 +254,6 @@ void DeviceCallbacks::OnColorControlAttributeChangeCallback(EndpointId endpointI
}
#endif
-void IdentifyTimerHandler(Layer * systemLayer, void * appState)
-{
- statusLED1.Animate();
-
- if (identifyTimerCount)
- {
- systemLayer->StartTimer(Clock::Milliseconds32(kIdentifyTimerDelayMS), IdentifyTimerHandler, appState);
- // Decrement the timer count.
- identifyTimerCount--;
- }
-}
-
-void DeviceCallbacks::OnIdentifyPostAttributeChangeCallback(EndpointId endpointId, AttributeId attributeId, uint8_t * value)
-{
- VerifyOrExit(attributeId == ZCL_IDENTIFY_TIME_ATTRIBUTE_ID, ESP_LOGI(TAG, "Unhandled Attribute ID: '0x%04x", attributeId));
- VerifyOrExit(endpointId == 1, ESP_LOGE(TAG, "Unexpected EndPoint ID: `0x%02x'", endpointId));
-
- statusLED1.Blink(kIdentifyTimerDelayMS * 2);
-
- // timerCount represents the number of callback executions before we stop the timer.
- // value is expressed in seconds and the timer is fired every 250ms, so just multiply value by 4.
- // Also, we want timerCount to be odd number, so the ligth state ends in the same state it starts.
- identifyTimerCount = (*value) * 4;
-
- DeviceLayer::SystemLayer().CancelTimer(IdentifyTimerHandler, this);
- DeviceLayer::SystemLayer().StartTimer(Clock::Milliseconds32(kIdentifyTimerDelayMS), IdentifyTimerHandler, this);
-
-exit:
- return;
-}
-
bool emberAfBasicClusterMfgSpecificPingCallback(chip::app::Command * commandObj)
{
emberAfSendDefaultResponse(emberAfCurrentCommand(), EMBER_ZCL_STATUS_SUCCESS);
diff --git a/examples/all-clusters-app/esp32/main/Kconfig.projbuild b/examples/all-clusters-app/esp32/main/Kconfig.projbuild
index 0960168aadca4a..e82f04f2ac00e5 100644
--- a/examples/all-clusters-app/esp32/main/Kconfig.projbuild
+++ b/examples/all-clusters-app/esp32/main/Kconfig.projbuild
@@ -140,3 +140,12 @@ depends on ENABLE_PW_RPC
about available pin numbers for UART.
endmenu
+
+menu "OTA Options"
+
+ config ENABLE_OTA_REQUESTOR
+ bool "Enable OTA Requestor"
+ default y
+ help
+ Enable this option to enable the OTA Requestor
+endmenu
diff --git a/examples/all-clusters-app/esp32/main/Rpc.cpp b/examples/all-clusters-app/esp32/main/Rpc.cpp
deleted file mode 100644
index 0de247455fcd61..00000000000000
--- a/examples/all-clusters-app/esp32/main/Rpc.cpp
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- *
- * Copyright (c) 2021 Project CHIP Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "sdkconfig.h"
-#if CONFIG_ENABLE_PW_RPC
-#include "PigweedLoggerMutex.h"
-#include "RpcService.h"
-#include "esp_log.h"
-#include "freertos/FreeRTOS.h"
-#include "freertos/event_groups.h"
-#include "freertos/semphr.h"
-#include "freertos/task.h"
-#include "pw_log/log.h"
-#include "pw_rpc/server.h"
-#include "pw_sys_io/sys_io.h"
-#include "rpc_services/Attributes.h"
-#include "rpc_services/Button.h"
-#include "rpc_services/Device.h"
-#include "rpc_services/Lighting.h"
-#include "rpc_services/Locking.h"
-
-#include
-
-#include "ScreenManager.h"
-#include "esp_event.h"
-#include "esp_log.h"
-#include "esp_netif.h"
-#include "esp_system.h"
-#include "esp_wifi.h"
-#include "freertos/FreeRTOS.h"
-#include "freertos/semphr.h"
-#include "freertos/timers.h"
-#include "pw_containers/flat_map.h"
-#include "pw_status/status.h"
-#include "pw_status/try.h"
-#include "pw_trace_tokenized/trace_rpc_service_nanopb.h"
-#include "wifi_service/wifi_service.rpc.pb.h"
-#include
-
-#include "WiFiProvisioning.h"
-
-#include "ESP32Utils.h"
-
-static const char * TAG = "RPC";
-
-// Define trace time for pw_trace
-PW_TRACE_TIME_TYPE pw_trace_GetTraceTime()
-{
- return (PW_TRACE_TIME_TYPE) chip::System::SystemClock().GetMonotonicMicroseconds64().count();
-}
-// Microsecond time source
-size_t pw_trace_GetTraceTimeTicksPerSecond()
-{
- return 1000000;
-}
-
-namespace chip {
-namespace rpc {
-namespace {
-
-constexpr pw::containers::FlatMap kChannelToFreqMap({ {
- { 1, 2412 }, { 2, 2417 }, { 3, 2422 }, { 4, 2427 }, { 5, 2432 }, { 6, 2437 }, { 7, 2442 }, { 8, 2447 },
- { 9, 2452 }, { 10, 2457 }, { 11, 2462 }, { 12, 2467 }, { 13, 2472 }, { 14, 2484 }, { 32, 5160 }, { 34, 5170 },
- { 36, 5180 }, { 38, 5190 }, { 40, 5200 }, { 42, 5210 }, { 44, 5220 }, { 46, 5230 }, { 48, 5240 }, { 50, 5250 },
- { 52, 5260 }, { 54, 5270 }, { 56, 5280 }, { 58, 5290 }, { 60, 5300 }, { 62, 5310 }, { 64, 5320 }, { 68, 5340 },
- { 96, 5480 }, { 100, 5500 }, { 102, 5510 }, { 104, 5520 }, { 106, 5530 }, { 108, 5540 }, { 110, 5550 }, { 112, 5560 },
- { 114, 5570 }, { 116, 5580 }, { 118, 5590 }, { 120, 5600 }, { 122, 5610 }, { 124, 5620 }, { 126, 5630 }, { 128, 5640 },
- { 132, 5660 }, { 134, 5670 }, { 136, 5680 }, { 138, 5690 }, { 140, 5700 }, { 142, 5710 }, { 144, 5720 }, { 149, 5745 },
- { 151, 5755 }, { 153, 5765 }, { 155, 5775 }, { 157, 5785 }, { 159, 5795 }, { 161, 5805 }, { 165, 5825 }, { 169, 5845 },
- { 173, 5865 }, { 183, 4915 }, { 184, 4920 }, { 185, 4925 }, { 187, 4935 }, { 188, 4940 }, { 189, 4945 }, { 192, 4960 },
- { 196, 4980 },
-} });
-
-// These are potentially large objects for the scan results.
-constexpr size_t kScanRecordsMax = sizeof(chip_rpc_ScanResults().aps) / sizeof(chip_rpc_ScanResult);
-chip_rpc_ScanResults out_scan_records;
-wifi_ap_record_t scan_records[kScanRecordsMax];
-
-class Esp32Button final : public Button
-{
-public:
- pw::Status Event(ServerContext &, const chip_rpc_ButtonEvent & request, pw_protobuf_Empty & response) override
- {
-#if CONFIG_DEVICE_TYPE_M5STACK
- if (request.pushed)
- {
- ScreenManager::ButtonPressed(1 + request.idx);
- }
- return pw::OkStatus();
-#else // CONFIG_DEVICE_TYPE_M5STACK
- return pw::Status::Unimplemented();
-#endif // CONFIG_DEVICE_TYPE_M5STACK
- }
-};
-
-class Esp32Device final : public Device
-{
-public:
- pw::Status Reboot(ServerContext & ctx, const pw_protobuf_Empty & request, pw_protobuf_Empty & response) override
- {
- mRebootTimer = xTimerCreateStatic("Reboot", kRebootTimerPeriodTicks, false, nullptr, RebootHandler, &mRebootTimerBuffer);
- xTimerStart(mRebootTimer, 0);
- return pw::OkStatus();
- }
-
-private:
- static constexpr TickType_t kRebootTimerPeriodTicks = 1000;
- TimerHandle_t mRebootTimer;
- StaticTimer_t mRebootTimerBuffer;
-
- static void RebootHandler(TimerHandle_t) { esp_restart(); }
-};
-
-class Wifi final : public generated::Wifi
-{
-public:
- pw::Status GetChannel(ServerContext &, const pw_protobuf_Empty & request, chip_rpc_Channel & response)
- {
- uint8_t channel = 0;
- wifi_second_chan_t second;
- PW_TRY(EspToPwStatus(esp_wifi_get_channel(&channel, &second)));
- response.channel = channel;
- return pw::OkStatus();
- }
-
- pw::Status GetSsid(ServerContext &, const pw_protobuf_Empty & request, chip_rpc_Ssid & response)
- {
- wifi_config_t config;
- PW_TRY(EspToPwStatus(esp_wifi_get_config(WIFI_IF_STA, &config)));
- size_t size = std::min(sizeof(response.ssid.bytes), sizeof(config.sta.ssid));
- memcpy(response.ssid.bytes, config.sta.ssid, size);
- response.ssid.size = size;
- return pw::OkStatus();
- }
-
- pw::Status GetState(ServerContext &, const pw_protobuf_Empty & request, chip_rpc_State & response)
- {
- wifi_ap_record_t ap_info;
- esp_err_t err = esp_wifi_sta_get_ap_info(&ap_info);
- PW_TRY(EspToPwStatus(err));
- response.connected = (err != ESP_ERR_WIFI_NOT_CONNECT);
- return pw::OkStatus();
- }
-
- pw::Status GetMacAddress(ServerContext &, const pw_protobuf_Empty & request, chip_rpc_MacAddress & response)
- {
- uint8_t mac[6];
- PW_TRY(EspToPwStatus(esp_wifi_get_mac(WIFI_IF_STA, mac)));
- snprintf(response.mac_address, sizeof(response.mac_address), "%02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2],
- mac[3], mac[4], mac[5]);
- return pw::OkStatus();
- }
-
- pw::Status GetWiFiInterface(ServerContext &, const pw_protobuf_Empty & request, chip_rpc_WiFiInterface & response)
- {
- wifi_ap_record_t ap_info;
- PW_TRY(EspToPwStatus(esp_wifi_sta_get_ap_info(&ap_info)));
- snprintf(response.interface, sizeof(response.interface), "STA");
- return pw::OkStatus();
- }
-
- pw::Status GetIP4Address(ServerContext &, const pw_protobuf_Empty & request, chip_rpc_IP4Address & response)
- {
- esp_netif_ip_info_t ip_info;
- PW_TRY(EspToPwStatus(esp_netif_get_ip_info(esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"), &ip_info)));
- snprintf(response.address, sizeof(response.address), IPSTR, IP2STR(&ip_info.ip));
- return pw::OkStatus();
- }
-
- pw::Status GetIP6Address(ServerContext &, const pw_protobuf_Empty & request, chip_rpc_IP6Address & response)
- {
- esp_ip6_addr_t ip6;
- PW_TRY(EspToPwStatus(esp_netif_get_ip6_linklocal(esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"), &ip6)));
- snprintf(response.address, sizeof(response.address), IPV6STR, IPV62STR(ip6));
- return pw::OkStatus();
- }
-
- // NOTE: Currently this is blocking, it can be made non-blocking if needed
- // but would require another worker thread to handle the scanning.
- void StartScan(ServerContext &, const chip_rpc_ScanConfig & request, ServerWriter & writer)
- {
- wifi_scan_config_t scan_config;
- if (request.ssid_count != 0)
- {
- scan_config.ssid = const_cast(reinterpret_cast(request.ssid[0].bytes));
- }
- if (request.bssid_count != 0)
- {
- scan_config.bssid = const_cast(reinterpret_cast(request.bssid[0].bytes));
- }
- scan_config.channel = request.channel;
- scan_config.show_hidden = request.show_hidden;
- scan_config.scan_type = static_cast(request.active_scan);
- if (request.active_scan)
- {
- scan_config.scan_time.active.min = request.scan_time_min_ms;
- scan_config.scan_time.active.max = request.scan_time_max_ms;
- }
- else
- {
- scan_config.scan_time.passive = request.scan_time_min_ms;
- }
-
- auto err = esp_wifi_scan_start(&scan_config, true /* block */);
- if (ESP_OK != err)
- {
- ESP_LOGI(TAG, "Error starting scan: %d", err);
- return;
- }
-
- // Output scan results
- uint16_t num_scan_records = kScanRecordsMax;
- err = esp_wifi_scan_get_ap_records(&num_scan_records, scan_records);
- if (ESP_OK != err)
- {
- ESP_LOGI(TAG, "Error getting scanned APs: %d", err);
- num_scan_records = 0;
- }
- ESP_LOGI(TAG, "%d", num_scan_records);
- out_scan_records.aps_count = num_scan_records;
-
- for (size_t i = 0; i < num_scan_records; ++i)
- {
- out_scan_records.aps[i].ssid.size = std::min(sizeof(scan_records[i].ssid), sizeof(out_scan_records.aps[i].ssid.bytes));
- memcpy(out_scan_records.aps[i].ssid.bytes, scan_records[i].ssid, out_scan_records.aps[i].ssid.size);
- out_scan_records.aps[i].bssid.size =
- std::min(sizeof(scan_records[i].bssid), sizeof(out_scan_records.aps[i].bssid.bytes));
- memcpy(out_scan_records.aps[i].bssid.bytes, scan_records[i].bssid, out_scan_records.aps[i].bssid.size);
- out_scan_records.aps[i].security_type = static_cast(scan_records[i].authmode);
- out_scan_records.aps[i].channel = scan_records[i].primary;
- auto found_channel = kChannelToFreqMap.find(scan_records[i].primary);
- out_scan_records.aps[i].frequency = (found_channel ? found_channel->second : 0);
- out_scan_records.aps[i].signal = scan_records[i].rssi;
- }
- writer.Write(out_scan_records);
- writer.Finish();
- }
-
- pw::Status StopScan(ServerContext &, const pw_protobuf_Empty & request, pw_protobuf_Empty & response)
- {
- esp_wifi_scan_stop();
- return pw::OkStatus();
- }
-
- pw::Status Connect(ServerContext &, const chip_rpc_ConnectionData & request, chip_rpc_ConnectionResult & response)
- {
- char ssid[sizeof(wifi_config_t().sta.ssid)];
- char password[sizeof(wifi_config_t().sta.password)];
- size_t ssid_size = std::min(sizeof(ssid) - 1, static_cast(request.ssid.size));
- memcpy(ssid, request.ssid.bytes, ssid_size);
- ssid[ssid_size] = '\0';
- size_t password_size = std::min(sizeof(password) - 1, static_cast(request.secret.size));
- memcpy(password, request.secret.bytes, password_size);
- password[password_size] = '\0';
- return SetWiFiStationProvisioning(ssid, password) == CHIP_NO_ERROR ? pw::OkStatus() : pw::Status::Unknown();
- }
-
- pw::Status Disconnect(ServerContext &, const pw_protobuf_Empty & request, pw_protobuf_Empty & response)
- {
- chip::DeviceLayer::ConnectivityMgr().ClearWiFiStationProvision();
- chip::DeviceLayer::ConnectivityMgr().SetWiFiStationMode(chip::DeviceLayer::ConnectivityManager::kWiFiStationMode_Disabled);
- return pw::OkStatus();
- }
-
-private:
- static constexpr pw::Status EspToPwStatus(esp_err_t err)
- {
- switch (err)
- {
- case ESP_OK:
- return pw::OkStatus();
- case ESP_ERR_WIFI_NOT_INIT:
- return pw::Status::FailedPrecondition();
- case ESP_ERR_INVALID_ARG:
- return pw::Status::InvalidArgument();
- case ESP_ERR_ESP_NETIF_INVALID_PARAMS:
- return pw::Status::InvalidArgument();
- case ESP_ERR_WIFI_IF:
- return pw::Status::NotFound();
- case ESP_ERR_WIFI_NOT_CONNECT:
- return pw::Status::FailedPrecondition();
- case ESP_ERR_WIFI_NOT_STARTED:
- return pw::Status::FailedPrecondition();
- case ESP_ERR_WIFI_CONN:
- return pw::Status::Internal();
- case ESP_FAIL:
- return pw::Status::Internal();
- default:
- return pw::Status::Unknown();
- }
- }
-};
-
-constexpr size_t kRpcStackSizeBytes = (8 * 1024);
-constexpr uint8_t kRpcTaskPriority = 5;
-
-TaskHandle_t rpcTaskHandle;
-
-Attributes attributes_service;
-Esp32Button button_service;
-Esp32Device device_service;
-Lighting lighting_service;
-Locking locking_service;
-Wifi wifi_service;
-pw::trace::TraceService trace_service;
-
-void RegisterServices(pw::rpc::Server & server)
-{
- server.RegisterService(attributes_service);
- server.RegisterService(button_service);
- server.RegisterService(device_service);
- server.RegisterService(lighting_service);
- server.RegisterService(locking_service);
- server.RegisterService(wifi_service);
- server.RegisterService(trace_service);
- PW_TRACE_SET_ENABLED(true);
-}
-
-void RunRpcService(void *)
-{
- Start(RegisterServices, &logger_mutex);
-}
-
-} // namespace
-
-void Init()
-{
- PigweedLogger::init();
-
- ESP_LOGI(TAG, "----------- esp32-rpc-service starting -----------");
-
- xTaskCreate(RunRpcService, "RPC", kRpcStackSizeBytes / sizeof(StackType_t), nullptr, kRpcTaskPriority, &rpcTaskHandle);
-}
-
-} // namespace rpc
-} // namespace chip
-
-#endif // CONFIG_ENABLE_PW_RPC
diff --git a/examples/all-clusters-app/esp32/main/include/DeviceCallbacks.h b/examples/all-clusters-app/esp32/main/include/DeviceCallbacks.h
index c4549e6d3a938d..91cfcba3936eea 100644
--- a/examples/all-clusters-app/esp32/main/include/DeviceCallbacks.h
+++ b/examples/all-clusters-app/esp32/main/include/DeviceCallbacks.h
@@ -45,7 +45,5 @@ class DeviceCallbacks : public chip::DeviceManager::CHIPDeviceManagerCallbacks
#if CONFIG_DEVICE_TYPE_ESP32_C3_DEVKITM
void OnColorControlAttributeChangeCallback(chip::EndpointId endpointId, chip::AttributeId attributeId, uint8_t * value);
#endif
- void OnIdentifyPostAttributeChangeCallback(chip::EndpointId endpointId, chip::AttributeId attributeId, uint8_t * value);
-
bool mEndpointOnOffState[2];
};
diff --git a/examples/all-clusters-app/esp32/main/main.cpp b/examples/all-clusters-app/esp32/main/main.cpp
index df04e343603201..d6d8cf49d51aeb 100644
--- a/examples/all-clusters-app/esp32/main/main.cpp
+++ b/examples/all-clusters-app/esp32/main/main.cpp
@@ -81,8 +81,6 @@ using namespace ::chip::Credentials;
using namespace ::chip::DeviceManager;
using namespace ::chip::DeviceLayer;
-#define QRCODE_BASE_URL "https://dhrishi.github.io/connectedhomeip/qrcode.html"
-
#if CONFIG_DEVICE_TYPE_M5STACK
#define BUTTON_1_GPIO_NUM GPIO_NUM_39 // Left button on M5Stack
@@ -495,125 +493,11 @@ void SetupPretendDevices()
AddAttribute("State", "Closed");
}
-void GetGatewayIP(char * ip_buf, size_t ip_len)
-{
- esp_netif_ip_info_t ipInfo;
- esp_netif_get_ip_info(esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"), &ipInfo);
- esp_ip4addr_ntoa(&ipInfo.ip, ip_buf, ip_len);
- ESP_LOGI(TAG, "Got gateway ip %s", ip_buf);
-}
-
-bool isRendezvousBLE()
-{
- RendezvousInformationFlags flags = RendezvousInformationFlags(CONFIG_RENDEZVOUS_MODE);
- return flags.Has(RendezvousInformationFlag::kBLE);
-}
-
-std::string createSetupPayload()
-{
- CHIP_ERROR err = CHIP_NO_ERROR;
- std::string result;
-
- uint16_t discriminator;
- err = ConfigurationMgr().GetSetupDiscriminator(discriminator);
- if (err != CHIP_NO_ERROR)
- {
- ESP_LOGE(TAG, "Couldn't get discriminator: %s", ErrorStr(err));
- return result;
- }
- ESP_LOGI(TAG, "Setup discriminator: %u (0x%x)", discriminator, discriminator);
-
- uint32_t setupPINCode;
- err = ConfigurationMgr().GetSetupPinCode(setupPINCode);
- if (err != CHIP_NO_ERROR)
- {
- ESP_LOGE(TAG, "Couldn't get setupPINCode: %s", ErrorStr(err));
- return result;
- }
- ESP_LOGI(TAG, "Setup PIN code: %u (0x%x)", setupPINCode, setupPINCode);
-
- uint16_t vendorId;
- err = ConfigurationMgr().GetVendorId(vendorId);
- if (err != CHIP_NO_ERROR)
- {
- ESP_LOGE(TAG, "Couldn't get vendorId: %s", ErrorStr(err));
- return result;
- }
-
- uint16_t productId;
- err = ConfigurationMgr().GetProductId(productId);
- if (err != CHIP_NO_ERROR)
- {
- ESP_LOGE(TAG, "Couldn't get productId: %s", ErrorStr(err));
- return result;
- }
-
- SetupPayload payload;
- payload.version = 0;
- payload.discriminator = discriminator;
- payload.setUpPINCode = setupPINCode;
- payload.rendezvousInformation = RendezvousInformationFlags(CONFIG_RENDEZVOUS_MODE);
- payload.vendorID = vendorId;
- payload.productID = productId;
-
- if (!isRendezvousBLE())
- {
- char gw_ip[INET6_ADDRSTRLEN];
- GetGatewayIP(gw_ip, sizeof(gw_ip));
- payload.addOptionalVendorData(EXAMPLE_VENDOR_TAG_IP, gw_ip);
-
- QRCodeSetupPayloadGenerator generator(payload);
-
- size_t tlvDataLen = sizeof(gw_ip);
- uint8_t tlvDataStart[tlvDataLen];
- err = generator.payloadBase38Representation(result, tlvDataStart, tlvDataLen);
- }
- else
- {
- QRCodeSetupPayloadGenerator generator(payload);
- err = generator.payloadBase38Representation(result);
- }
-
- {
- ManualSetupPayloadGenerator generator(payload);
- std::string outCode;
-
- if (generator.payloadDecimalStringRepresentation(outCode) == CHIP_NO_ERROR)
- {
- ESP_LOGI(TAG, "Short Manual(decimal) setup code: %s", outCode.c_str());
- }
- else
- {
- ESP_LOGE(TAG, "Failed to get decimal setup code");
- }
-
- payload.commissioningFlow = CommissioningFlow::kCustom;
- generator = ManualSetupPayloadGenerator(payload);
-
- if (generator.payloadDecimalStringRepresentation(outCode) == CHIP_NO_ERROR)
- {
- // intentional extra space here to align the log with the short code
- ESP_LOGI(TAG, "Long Manual(decimal) setup code: %s", outCode.c_str());
- }
- else
- {
- ESP_LOGE(TAG, "Failed to get decimal setup code");
- }
- }
-
- if (err != CHIP_NO_ERROR)
- {
- ESP_LOGE(TAG, "Couldn't get payload string %" CHIP_ERROR_FORMAT, err.Format());
- }
- return result;
-};
-
WiFiWidget pairingWindowLED;
class AppCallbacks : public AppDelegate
{
public:
- void OnReceiveError() override { statusLED1.BlinkOnError(); }
void OnRendezvousStarted() override { bluetoothLED.Set(true); }
void OnRendezvousStopped() override
{
@@ -696,20 +580,14 @@ extern "C" void app_main()
chip::DeviceLayer::PlatformMgr().ScheduleWork(InitServer, reinterpret_cast(nullptr));
- std::string qrCodeText = createSetupPayload();
- ESP_LOGI(TAG, "QR CODE Text: '%s'", qrCodeText.c_str());
-
- {
- std::vector qrCode(3 * qrCodeText.size() + 1);
- CHIP_ERROR error = EncodeQRCodeToUrl(qrCodeText.c_str(), qrCodeText.size(), qrCode.data(), qrCode.max_size());
- if (error == CHIP_NO_ERROR)
- {
- ESP_LOGI(TAG, "Copy/paste the below URL in a browser to see the QR CODE:\n\t%s?data=%s", QRCODE_BASE_URL,
- qrCode.data());
- }
- }
+ // Print QR Code URL
+ PrintOnboardingCodes(chip::RendezvousInformationFlags(CONFIG_RENDEZVOUS_MODE));
#if CONFIG_HAVE_DISPLAY
+ std::string qrCodeText;
+
+ GetQRCode(qrCodeText, chip::RendezvousInformationFlags(CONFIG_RENDEZVOUS_MODE));
+
// Initialize the display device.
err = InitDisplay();
if (err != ESP_OK)
@@ -804,10 +682,10 @@ extern "C" void app_main()
#endif // CONFIG_HAVE_DISPLAY
+#if CONFIG_DEVICE_TYPE_M5STACK
// Run the UI Loop
while (true)
{
-#if CONFIG_DEVICE_TYPE_M5STACK
// TODO consider refactoring this example to use FreeRTOS tasks
bool woken = false;
@@ -832,10 +710,9 @@ extern "C" void app_main()
}
}
-#endif // CONFIG_DEVICE_TYPE_M5STACK
-
vTaskDelay(50 / portTICK_PERIOD_MS);
}
+#endif // CONFIG_DEVICE_TYPE_M5STACK
}
bool lowPowerClusterSleep()
diff --git a/examples/all-clusters-app/esp32/partitions.csv b/examples/all-clusters-app/esp32/partitions.csv
index 665b8fe311bd5e..43acef25d0245d 100644
--- a/examples/all-clusters-app/esp32/partitions.csv
+++ b/examples/all-clusters-app/esp32/partitions.csv
@@ -1,6 +1,8 @@
# Name, Type, SubType, Offset, Size, Flags
# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap
nvs, data, nvs, , 0x6000,
+otadata, data, ota, , 0x2000,
phy_init, data, phy, , 0x1000,
-factory, app, factory, , 1900K,
+ota_0, app, ota_0, , 1500K,
+ota_1, app, ota_1, , 1500K,
ot_storage, data, 0x3a, , 0x2000,
diff --git a/examples/all-clusters-app/esp32/sdkconfig.defaults b/examples/all-clusters-app/esp32/sdkconfig.defaults
index 52d7e229e3337f..a3a17d6ef7c47d 100644
--- a/examples/all-clusters-app/esp32/sdkconfig.defaults
+++ b/examples/all-clusters-app/esp32/sdkconfig.defaults
@@ -36,11 +36,20 @@ CONFIG_LWIP_IPV6_AUTOCONFIG=y
# Use a custom partition table
CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
# Vendor and product id
CONFIG_DEVICE_VENDOR_ID=0x235A
CONFIG_DEVICE_PRODUCT_ID=0x4541
+CONFIG_DEVICE_FIRMWARE_REVISION="prerelease"
#enable debug shell
CONFIG_ENABLE_CHIP_SHELL=y
+
+#enable lwIP route hooks
+CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y
+CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y
+
+# Serial Flasher config
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESPTOOLPY_FLASHSIZE="4MB"
diff --git a/examples/all-clusters-app/esp32/sdkconfig_c3devkit.defaults b/examples/all-clusters-app/esp32/sdkconfig_c3devkit.defaults
index a636628c96567d..737935b166f98f 100644
--- a/examples/all-clusters-app/esp32/sdkconfig_c3devkit.defaults
+++ b/examples/all-clusters-app/esp32/sdkconfig_c3devkit.defaults
@@ -38,5 +38,12 @@ CONFIG_LWIP_IPV6_AUTOCONFIG=y
# Use a custom partition table
CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
+#enable lwIP route hooks
+CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y
+CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y
+
+# Serial Flasher config
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESPTOOLPY_FLASHSIZE="4MB"
diff --git a/examples/all-clusters-app/esp32/sdkconfig_m5stack.defaults b/examples/all-clusters-app/esp32/sdkconfig_m5stack.defaults
index 8e79b8ea82df50..5c318378f51189 100644
--- a/examples/all-clusters-app/esp32/sdkconfig_m5stack.defaults
+++ b/examples/all-clusters-app/esp32/sdkconfig_m5stack.defaults
@@ -38,7 +38,7 @@ CONFIG_LWIP_IPV6_AUTOCONFIG=y
# Use a custom partition table
CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
# Vendor and product id
CONFIG_DEVICE_VENDOR_ID=0x235A
@@ -50,3 +50,12 @@ CONFIG_ESP_MAIN_TASK_STACK_SIZE=5120
#enable debug shell
CONFIG_ENABLE_CHIP_SHELL=y
+
+#enable lwIP route hooks
+CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y
+CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y
+
+# Serial Flasher config
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESPTOOLPY_FLASHSIZE="4MB"
+
diff --git a/examples/all-clusters-app/esp32/sdkconfig_m5stack_rpc.defaults b/examples/all-clusters-app/esp32/sdkconfig_m5stack_rpc.defaults
index 2da74647c0f5fc..75142a9c7c54c6 100644
--- a/examples/all-clusters-app/esp32/sdkconfig_m5stack_rpc.defaults
+++ b/examples/all-clusters-app/esp32/sdkconfig_m5stack_rpc.defaults
@@ -38,7 +38,7 @@ CONFIG_LWIP_IPV6_AUTOCONFIG=y
# Use a custom partition table
CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
# Vendor and product id
CONFIG_DEVICE_VENDOR_ID=0x235A
@@ -56,4 +56,8 @@ CONFIG_EXAMPLE_UART_TXD=1
CONFIG_ENABLE_PW_RPC=y
# Disable shell
-CONFIG_ENABLE_CHIP_SHELL=n
\ No newline at end of file
+CONFIG_ENABLE_CHIP_SHELL=n
+
+# Serial Flasher config
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESPTOOLPY_FLASHSIZE="4MB"
diff --git a/examples/all-clusters-app/linux/BUILD.gn b/examples/all-clusters-app/linux/BUILD.gn
index f7b180f4461187..351b79e8f5f316 100644
--- a/examples/all-clusters-app/linux/BUILD.gn
+++ b/examples/all-clusters-app/linux/BUILD.gn
@@ -18,6 +18,7 @@ import("//build_overrides/chip.gni")
executable("chip-all-clusters-app") {
sources = [
"${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp",
"include/tv-callbacks.cpp",
"main.cpp",
]
@@ -28,6 +29,9 @@ executable("chip-all-clusters-app") {
"${chip_root}/src/lib",
]
+ include_dirs =
+ [ "${chip_root}/examples/all-clusters-app/all-clusters-common/include" ]
+
cflags = [ "-Wconversion" ]
output_dir = root_out_dir
diff --git a/examples/all-clusters-app/mbed/CMakeLists.txt b/examples/all-clusters-app/mbed/CMakeLists.txt
index a05bf5cca47a4a..a71393a6880cfa 100644
--- a/examples/all-clusters-app/mbed/CMakeLists.txt
+++ b/examples/all-clusters-app/mbed/CMakeLists.txt
@@ -37,6 +37,8 @@ target_include_directories(${APP_TARGET} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/main/include/
${APP_ROOT}/all-clusters-common
+ ${APP_ROOT}/all-clusters-common/include
+ ${APP_CLUSTERS}
${MBED_COMMON}/util/include
${CHIP_ROOT}/src/app
${CHIP_ROOT}/third_party/nlio/repo/include
@@ -67,6 +69,7 @@ target_sources(${APP_TARGET} PRIVATE
${CHIP_ROOT}/src/app/server/CommissioningWindowManager.cpp
${CHIP_ROOT}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp
+ ${CHIP_ROOT}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp
${APP_UTIL}/DataModelHandler.cpp
${APP_UTIL}/af-event.cpp
@@ -90,6 +93,7 @@ target_sources(${APP_TARGET} PRIVATE
${APP_CLUSTERS}/basic/basic.cpp
${APP_CLUSTERS}/bindings/bindings.cpp
${APP_CLUSTERS}/on-off-server/on-off-server.cpp
+ ${APP_CLUSTERS}/access-control-server/access-control-server.cpp
${APP_CLUSTERS}/account-login-server/account-login-server.cpp
${APP_CLUSTERS}/application-launcher-server/application-launcher-server.cpp
${APP_CLUSTERS}/audio-output-server/audio-output-server.cpp
@@ -112,7 +116,6 @@ target_sources(${APP_TARGET} PRIVATE
${APP_CLUSTERS}/media-input-server/media-input-server.cpp
${APP_CLUSTERS}/media-playback-server/media-playback-server.cpp
${APP_CLUSTERS}/mode-select-server/mode-select-server.cpp
- ${APP_CLUSTERS}/mode-select-server/static-supported-modes-manager.cpp
${APP_CLUSTERS}/network-commissioning/network-commissioning-ember.cpp
${APP_CLUSTERS}/network-commissioning/network-commissioning.cpp
${APP_CLUSTERS}/on-off-server/on-off-server.cpp
@@ -120,6 +123,7 @@ target_sources(${APP_TARGET} PRIVATE
${APP_CLUSTERS}/scenes/scenes.cpp
${APP_CLUSTERS}/target-navigator-server/target-navigator-server.cpp
${APP_CLUSTERS}/thermostat-server/thermostat-server.cpp
+ ${APP_CLUSTERS}/thermostat-user-interface-configuration-server/thermostat-user-interface-configuration-server.cpp
${APP_CLUSTERS}/tv-channel-server/tv-channel-server.cpp
${APP_CLUSTERS}/operational-credentials-server/operational-credentials-server.cpp
${APP_CLUSTERS}/test-cluster-server/test-cluster-server.cpp
@@ -134,6 +138,7 @@ target_sources(${APP_TARGET} PRIVATE
${APP_CLUSTERS}/identify-server/identify-server.cpp
${APP_CLUSTERS}/window-covering-server/window-covering-server.cpp
${APP_CLUSTERS}/general_diagnostics_server/general_diagnostics_server.cpp
+ ${APP_CLUSTERS}/power-source-configuration-server/power-source-configuration-server.cpp
)
target_link_libraries(${APP_TARGET} mbed-os-posix-socket mbed-os mbed-ble mbed-events mbed-netsocket mbed-storage mbed-storage-kv-global-api mbed-mbedtls mbed-emac chip)
diff --git a/examples/all-clusters-app/mbed/mbed_app.json b/examples/all-clusters-app/mbed/mbed_app.json
index 6271cbc091cf58..be14989fe20fb1 100644
--- a/examples/all-clusters-app/mbed/mbed_app.json
+++ b/examples/all-clusters-app/mbed/mbed_app.json
@@ -18,7 +18,8 @@
"MXCRYPTO_DISABLED",
"NL_ASSERT_LOG=NL_ASSERT_LOG_DEFAULT",
"NL_ASSERT_EXPECT_FLAGS=NL_ASSERT_FLAG_LOG",
- "WHD_PRINT_DISABLE"
+ "WHD_PRINT_DISABLE",
+ "MBED_CONF_LWIP_NETBUF_RECVINFO_ENABLED"
]
}
},
diff --git a/examples/all-clusters-app/p6/BUILD.gn b/examples/all-clusters-app/p6/BUILD.gn
index d34ad7bf427d55..5b99c3f3b3b6f6 100644
--- a/examples/all-clusters-app/p6/BUILD.gn
+++ b/examples/all-clusters-app/p6/BUILD.gn
@@ -61,6 +61,7 @@ p6_executable("clusters_app") {
sources = [
"${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp",
"${examples_plat_dir}/LEDWidget.cpp",
"${examples_plat_dir}/init_p6Platform.cpp",
"src/AppTask.cpp",
@@ -82,6 +83,7 @@ p6_executable("clusters_app") {
"include",
"${examples_plat_dir}",
"${p6_project_dir}/include",
+ "${chip_root}/examples/all-clusters-app/all-clusters-common/include",
]
defines = []
diff --git a/examples/all-clusters-app/p6/include/CHIPProjectConfig.h b/examples/all-clusters-app/p6/include/CHIPProjectConfig.h
index a09d73cfe0f276..7a6ada1013b678 100644
--- a/examples/all-clusters-app/p6/include/CHIPProjectConfig.h
+++ b/examples/all-clusters-app/p6/include/CHIPProjectConfig.h
@@ -48,24 +48,24 @@
#define CHIP_CONFIG_REQUIRE_AUTH 1
/**
- * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_REVISION
+ * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION
*
- * The product revision number assigned to device or product by the device vendor. This
- * number is scoped to the device product id, and typically corresponds to a revision of the
+ * The hardware version number assigned to device or product by the device vendor. This
+ * number is scoped to the device product id, and typically corresponds to a version of the
* physical device, a change to its packaging, and/or a change to its marketing presentation.
- * This value is generally *not* incremented for device software revisions.
+ * This value is generally *not* incremented for device software versions.
*/
-#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_REVISION 1
+#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 1
/**
- * CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION_STRING
+ * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
*
- * A string identifying the firmware revision running on the device.
- * CHIP service currently expects the firmware version to be in the format
+ * A string identifying the software version running on the device.
+ * CHIP service currently expects the software version to be in the format
* {MAJOR_VERSION}.0d{MINOR_VERSION}
*/
-#ifndef CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION_STRING
-#define CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION_STRING "0.1ALPHA"
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING "0.1ALPHA"
#endif
/**
* CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
@@ -90,13 +90,6 @@
*/
#define CHIP_DEVICE_CONFIG_TEST_SERIAL_NUMBER "TEST_SN"
-/**
- * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS
- *
- * Enable recording UTC timestamps.
- */
-#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
-
/**
* CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE
*
diff --git a/examples/all-clusters-app/p6/src/AppTask.cpp b/examples/all-clusters-app/p6/src/AppTask.cpp
index 9dbb22fd3eb8c9..e2ce865f6fc39f 100644
--- a/examples/all-clusters-app/p6/src/AppTask.cpp
+++ b/examples/all-clusters-app/p6/src/AppTask.cpp
@@ -107,7 +107,7 @@ CHIP_ERROR AppTask::Init()
// Initialise WSTK buttons PB0 and PB1 (including debounce).
ButtonHandler::Init();
- P6_LOG("Current Firmware Version: %s", CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION_STRING);
+ P6_LOG("Current Software Version: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING);
// Initialize LEDs
sStatusLED.Init(SYSTEM_STATE_LED);
diff --git a/examples/all-clusters-app/p6/src/main.cpp b/examples/all-clusters-app/p6/src/main.cpp
index 68446f6ecf05ab..a943c132dc3620 100644
--- a/examples/all-clusters-app/p6/src/main.cpp
+++ b/examples/all-clusters-app/p6/src/main.cpp
@@ -89,7 +89,14 @@ int main(void)
// Init Chip memory management before the stack
chip::Platform::MemoryInit();
- CHIP_ERROR ret = PlatformMgr().InitChipStack();
+ CHIP_ERROR ret = chip::DeviceLayer::PersistedStorage::KeyValueStoreMgrImpl().Init();
+ if (ret != CHIP_NO_ERROR)
+ {
+ P6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed");
+ appError(ret);
+ }
+
+ ret = PlatformMgr().InitChipStack();
if (ret != CHIP_NO_ERROR)
{
P6_LOG("PlatformMgr().InitChipStack() failed");
diff --git a/examples/bridge-app/bridge-common/bridge-app.zap b/examples/bridge-app/bridge-common/bridge-app.zap
index 14fe77b851abce..efdfc46078c922 100644
--- a/examples/bridge-app/bridge-common/bridge-app.zap
+++ b/examples/bridge-app/bridge-common/bridge-app.zap
@@ -1,5 +1,5 @@
{
- "featureLevel": 63,
+ "featureLevel": 67,
"creator": "zap",
"keyValuePairs": [
{
@@ -31,10 +31,10 @@
],
"endpointTypes": [
{
- "name": "Anonymous Endpoint Type",
- "deviceTypeName": "Bridge Device",
- "deviceTypeCode": 2571,
- "deviceTypeProfileId": 43981,
+ "name": "MA-bridge",
+ "deviceTypeName": "MA-bridge",
+ "deviceTypeCode": 14,
+ "deviceTypeProfileId": 259,
"clusters": [
{
"name": "Descriptor",
@@ -55,7 +55,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -81,7 +81,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -96,7 +96,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -111,7 +111,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -126,7 +126,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -141,7 +141,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -167,7 +167,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -218,7 +218,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -233,7 +233,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -248,7 +248,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -263,7 +263,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -278,13 +278,13 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "UserLabel",
+ "name": "NodeLabel",
"code": 5,
"mfgCode": null,
"side": "server",
@@ -293,7 +293,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -308,7 +308,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -323,7 +323,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -338,7 +338,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -353,7 +353,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -368,7 +368,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -383,7 +383,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -434,7 +434,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -485,7 +485,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -500,11 +500,56 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "RegulatoryConfig",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "LocationCapability",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "6",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "ClusterRevision",
"code": 65533,
@@ -515,7 +560,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -606,7 +651,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -687,6 +732,21 @@
}
],
"attributes": [
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "ClusterRevision",
"code": 65533,
@@ -697,7 +757,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -742,7 +802,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -768,7 +828,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -783,7 +843,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -798,7 +858,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -813,7 +873,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -828,7 +888,52 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ActiveHardwareFaults",
+ "code": 5,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ActiveRadioFaults",
+ "code": 6,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ActiveNetworkFaults",
+ "code": 7,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -843,7 +948,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -878,7 +983,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -894,6 +999,21 @@
"enabled": 1,
"commands": [],
"attributes": [
+ {
+ "name": "ThreadMetrics",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "CurrentHeapFree",
"code": 1,
@@ -904,7 +1024,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -919,7 +1039,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -934,11 +1054,26 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "ClusterRevision",
"code": 65533,
@@ -949,7 +1084,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -975,7 +1110,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -990,7 +1125,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1005,7 +1140,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1020,7 +1155,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1035,7 +1170,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1050,7 +1185,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1065,7 +1200,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1076,11 +1211,11 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1091,11 +1226,11 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1110,7 +1245,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1125,7 +1260,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1140,7 +1275,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1155,7 +1290,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1170,7 +1305,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1185,7 +1320,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1200,7 +1335,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1215,7 +1350,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1230,7 +1365,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1245,7 +1380,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1260,7 +1395,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1275,7 +1410,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1290,7 +1425,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1305,7 +1440,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1320,7 +1455,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1335,7 +1470,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1350,7 +1485,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1365,7 +1500,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1380,7 +1515,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1395,7 +1530,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1410,7 +1545,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1425,7 +1560,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1440,7 +1575,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1455,7 +1590,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1470,7 +1605,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1485,7 +1620,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1500,7 +1635,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1515,7 +1650,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1530,7 +1665,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1545,7 +1680,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1560,7 +1695,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1575,7 +1710,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1590,7 +1725,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1605,7 +1740,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1620,7 +1755,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1635,7 +1770,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1650,7 +1785,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1665,7 +1800,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1680,7 +1815,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1695,7 +1830,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1710,7 +1845,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1725,7 +1860,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1740,7 +1875,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1755,7 +1890,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1770,7 +1905,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1785,7 +1920,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1800,7 +1935,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1815,7 +1950,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -1830,7 +1965,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -1845,7 +1980,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -1856,11 +1991,11 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1875,7 +2010,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1886,11 +2021,11 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1901,15 +2036,30 @@
"mfgCode": null,
"side": "server",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "15",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "ClusterRevision",
"code": 65533,
@@ -1920,7 +2070,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1946,7 +2096,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1972,7 +2122,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -1987,7 +2137,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2002,7 +2152,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2017,7 +2167,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2032,7 +2182,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2047,7 +2197,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2062,7 +2212,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2077,7 +2227,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2092,7 +2242,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2107,7 +2257,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2122,7 +2272,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2137,7 +2287,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2152,6 +2302,21 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
"reportable": 0,
"minInterval": 1,
"maxInterval": 65534,
@@ -2167,7 +2332,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2202,7 +2367,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2228,7 +2393,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2243,7 +2408,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2258,7 +2423,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2273,7 +2438,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2288,7 +2453,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2303,7 +2468,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2318,7 +2483,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2333,7 +2498,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2348,6 +2513,21 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000000000000000",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "3",
"reportable": 0,
"minInterval": 1,
"maxInterval": 65534,
@@ -2363,7 +2543,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2414,7 +2594,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2430,6 +2610,51 @@
"enabled": 1,
"commands": [],
"attributes": [
+ {
+ "name": "WindowStatus",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "AdminFabricIndex",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "AdminVendorId",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
{
"name": "ClusterRevision",
"code": 65533,
@@ -2440,7 +2665,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2539,7 +2764,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2598,7 +2823,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2613,7 +2838,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2628,7 +2853,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2643,7 +2868,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2658,7 +2883,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -2673,7 +2898,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2683,10 +2908,10 @@
]
},
{
- "name": "Anonymous Endpoint Type",
- "deviceTypeName": "LO-dimmablelight",
+ "name": "MA-dimmablelight",
+ "deviceTypeName": "MA-dimmablelight",
"deviceTypeCode": 257,
- "deviceTypeProfileId": 260,
+ "deviceTypeProfileId": 259,
"clusters": [
{
"name": "Identify",
@@ -2724,7 +2949,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2759,7 +2984,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2774,7 +2999,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2849,7 +3074,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2908,7 +3133,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -2923,7 +3148,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3006,7 +3231,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3081,7 +3306,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3096,7 +3321,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3111,7 +3336,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3126,7 +3351,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3141,7 +3366,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3156,7 +3381,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3207,7 +3432,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3248,7 +3473,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "4",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3339,7 +3564,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3380,7 +3605,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3395,7 +3620,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3410,7 +3635,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFF",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3425,7 +3650,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3440,7 +3665,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3455,7 +3680,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3470,7 +3695,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3485,7 +3710,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0000",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3500,7 +3725,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0xFE",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3515,7 +3740,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3530,7 +3755,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3545,7 +3770,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3560,7 +3785,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3575,7 +3800,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3601,7 +3826,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3627,7 +3852,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3642,7 +3867,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3657,7 +3882,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3672,7 +3897,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3687,7 +3912,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
@@ -3713,7 +3938,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3764,7 +3989,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3779,7 +4004,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3794,7 +4019,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3809,7 +4034,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3824,13 +4049,13 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
- "name": "UserLabel",
+ "name": "NodeLabel",
"code": 5,
"mfgCode": null,
"side": "server",
@@ -3839,7 +4064,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3854,7 +4079,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3869,7 +4094,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3884,7 +4109,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3899,7 +4124,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "0x00",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3914,7 +4139,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3929,7 +4154,7 @@
"singleton": 1,
"bounded": 0,
"defaultValue": "3",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3955,7 +4180,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -3981,7 +4206,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4011,7 +4236,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "2",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4026,7 +4251,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4041,7 +4266,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4067,7 +4292,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4093,7 +4318,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4108,7 +4333,7 @@
"singleton": 0,
"bounded": 0,
"defaultValue": "0x0001",
- "reportable": 0,
+ "reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
@@ -4120,23 +4345,22 @@
],
"endpoints": [
{
- "endpointTypeName": "Anonymous Endpoint Type",
+ "endpointTypeName": "MA-bridge",
"endpointTypeIndex": 0,
- "profileId": 43981,
+ "profileId": 259,
"endpointId": 0,
"networkId": 0,
- "endpointVersion": null,
- "deviceIdentifier": null
+ "endpointVersion": 1,
+ "deviceIdentifier": 14
},
{
- "endpointTypeName": "Anonymous Endpoint Type",
+ "endpointTypeName": "MA-dimmablelight",
"endpointTypeIndex": 1,
- "profileId": "0x0104",
+ "profileId": 259,
"endpointId": 1,
"networkId": 0,
- "endpointVersion": null,
- "deviceIdentifier": null
+ "endpointVersion": 1,
+ "deviceIdentifier": 257
}
- ],
- "log": []
+ ]
}
\ No newline at end of file
diff --git a/src/lwip/qpg/arch/perf.h b/examples/bridge-app/bridge-common/include/CHIPProjectAppConfig.h
similarity index 57%
rename from src/lwip/qpg/arch/perf.h
rename to examples/bridge-app/bridge-common/include/CHIPProjectAppConfig.h
index 5c15942730ca8f..036cbda81ad736 100644
--- a/src/lwip/qpg/arch/perf.h
+++ b/examples/bridge-app/bridge-common/include/CHIPProjectAppConfig.h
@@ -1,6 +1,7 @@
/*
+ *
* Copyright (c) 2020 Project CHIP Authors
- * Copyright (c) 2018-2019 Google LLC.
+ * All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,19 +16,19 @@
* limitations under the License.
*/
-/*
+/**
+ * @file
+ * Example project configuration file for CHIP.
*
- * Description:
- * This file defines processor-architecture-specific constants,
- * interfaces and types required for LwIP performance
- * measurement.
+ * This is a place to put application or project-specific overrides
+ * to the default configuration values for general CHIP features.
*
*/
-#ifndef CHIP_LWIP_FREERTOS_ARCH_PERF_H
-#define CHIP_LWIP_FREERTOS_ARCH_PERF_H
+#pragma once
-#define PERF_START
-#define PERF_STOP(s)
+// overrides CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT in CHIPProjectConfig
+#define CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT 16
-#endif /* CHIP_LWIP_FREERTOS_ARCH_PERF_H */
+// include the CHIPProjectConfig from config/standalone
+#include
diff --git a/examples/bridge-app/esp32/CMakeLists.txt b/examples/bridge-app/esp32/CMakeLists.txt
index 0a0bc8b1131b65..dd174e3e7ec1c8 100644
--- a/examples/bridge-app/esp32/CMakeLists.txt
+++ b/examples/bridge-app/esp32/CMakeLists.txt
@@ -23,9 +23,9 @@ set(EXTRA_COMPONENT_DIRS
"${CMAKE_CURRENT_LIST_DIR}/../../common/QRCode"
)
+# TODO: add CHIPProjectAppConfig.h to esp32
project(chip-bridge-app)
-idf_build_set_property(CXX_COMPILE_OPTIONS "-std=gnu++14;-Os;-DLWIP_IPV6_SCOPES=0;-DCHIP_HAVE_CONFIG_H;-DDYNAMIC_ENDPOINT_COUNT=16" APPEND)
+idf_build_set_property(CXX_COMPILE_OPTIONS "-std=gnu++14;-Os;-DLWIP_IPV6_SCOPES=0;-DCHIP_HAVE_CONFIG_H;-DCHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT=16" APPEND)
idf_build_set_property(C_COMPILE_OPTIONS "-Os;-DLWIP_IPV6_SCOPES=0" APPEND)
flashing_script()
-
diff --git a/examples/bridge-app/esp32/README.md b/examples/bridge-app/esp32/README.md
index add83d3346f770..7b731bd64dc4dc 100644
--- a/examples/bridge-app/esp32/README.md
+++ b/examples/bridge-app/esp32/README.md
@@ -83,14 +83,14 @@ Development Framework and the xtensa-esp32-elf toolchain.
The VSCode devcontainer has these components pre-installed, so you can skip this
step. To install these components manually, follow these steps:
-- Clone the Espressif ESP-IDF and checkout
- [v4.3 tag](https://github.com/espressif/esp-idf/releases/v4.3)
+- Clone the Espressif ESP-IDF and checkout branch
+ [release/v4.4](https://github.com/espressif/esp-idf/tree/release/v4.4)
$ mkdir ${HOME}/tools
$ cd ${HOME}/tools
$ git clone https://github.com/espressif/esp-idf.git
$ cd esp-idf
- $ git checkout v4.3
+ $ git checkout release/v4.4
$ git submodule update --init
$ ./install.sh
diff --git a/examples/bridge-app/esp32/main/CMakeLists.txt b/examples/bridge-app/esp32/main/CMakeLists.txt
index 9d524d5d131721..f718d005201fb8 100644
--- a/examples/bridge-app/esp32/main/CMakeLists.txt
+++ b/examples/bridge-app/esp32/main/CMakeLists.txt
@@ -33,13 +33,14 @@ idf_component_register(PRIV_INCLUDE_DIRS
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thread_network_diagnostics_server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/wifi_network_diagnostics_server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/software_diagnostics_server"
- "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/general_diagnostics_server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/general_diagnostics_server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/network-commissioning"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/on-off-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/operational-credentials-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/general-commissioning-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/platform/esp32/route_hook"
PRIV_REQUIRES chip QRCode bt)
-set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 14)
+set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 14)
target_compile_options(${COMPONENT_LIB} PRIVATE "-DLWIP_IPV6_SCOPES=0" "-DCHIP_HAVE_CONFIG_H")
diff --git a/examples/bridge-app/esp32/main/DeviceCallbacks.cpp b/examples/bridge-app/esp32/main/DeviceCallbacks.cpp
index 48c3863feec7a3..a0491fc2df7af5 100644
--- a/examples/bridge-app/esp32/main/DeviceCallbacks.cpp
+++ b/examples/bridge-app/esp32/main/DeviceCallbacks.cpp
@@ -17,8 +17,11 @@
*/
#include "DeviceCallbacks.h"
+#include "esp_check.h"
+#include "esp_err.h"
#include "esp_heap_caps.h"
#include "esp_log.h"
+#include "route_hook/esp_route_hook.h"
#include
#include
#include
@@ -81,6 +84,7 @@ void DeviceCallbacks::OnInternetConnectivityChange(const ChipDeviceEvent * event
{
ESP_LOGI(TAG, "IPv6 Server ready...");
chip::app::DnssdServer::Instance().StartServer();
+ ESP_ERROR_CHECK(esp_route_hook_init(esp_netif_get_handle_from_ifkey("WIFI_STA_DEF")));
}
else if (event->InternetConnectivityChange.IPv6 == kConnectivity_Lost)
{
diff --git a/examples/bridge-app/esp32/main/main.cpp b/examples/bridge-app/esp32/main/main.cpp
index 80d17acd86d325..411ff15c5bec8d 100644
--- a/examples/bridge-app/esp32/main/main.cpp
+++ b/examples/bridge-app/esp32/main/main.cpp
@@ -43,14 +43,14 @@ using namespace ::chip::Platform;
static DeviceCallbacks AppCallback;
-static const int kUserLabelSize = 32;
+static const int kNodeLabelSize = 32;
// Current ZCL implementation of Struct uses a max-size array of 254 bytes
static const int kDescriptorAttributeArraySize = 254;
static const int kFixedLabelAttributeArraySize = 254;
static EndpointId gCurrentEndpointId;
static EndpointId gFirstDynamicEndpointId;
-static Device * gDevices[DYNAMIC_ENDPOINT_COUNT]; // number of dynamic endpoints count
+static Device * gDevices[CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT]; // number of dynamic endpoints count
// 4 Bridged devices
static Device gLight1("Light 1", "Office");
@@ -74,27 +74,27 @@ static Device gLight4("Light 4", "Den");
// Declare On/Off cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(onOffAttrs)
-DECLARE_DYNAMIC_ATTRIBUTE(ZCL_ON_OFF_ATTRIBUTE_ID, BOOLEAN, 1, 0) /* on/off */
-DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
+DECLARE_DYNAMIC_ATTRIBUTE(ZCL_ON_OFF_ATTRIBUTE_ID, BOOLEAN, 1, 0), /* on/off */
+ DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Descriptor cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(descriptorAttrs)
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_DEVICE_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* device list */
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_SERVER_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* server list */
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_CLIENT_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* client list */
- DECLARE_DYNAMIC_ATTRIBUTE(ZCL_PARTS_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0) /* parts list */
+ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_PARTS_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* parts list */
DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Bridged Device Basic information cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(bridgedDeviceBasicAttrs)
-DECLARE_DYNAMIC_ATTRIBUTE(ZCL_USER_LABEL_ATTRIBUTE_ID, CHAR_STRING, kUserLabelSize, 0), /* UserLabel */
- DECLARE_DYNAMIC_ATTRIBUTE(ZCL_REACHABLE_ATTRIBUTE_ID, BOOLEAN, 1, 0) /* Reachable */
+DECLARE_DYNAMIC_ATTRIBUTE(ZCL_NODE_LABEL_ATTRIBUTE_ID, CHAR_STRING, kNodeLabelSize, 0), /* NodeLabel */
+ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_REACHABLE_ATTRIBUTE_ID, BOOLEAN, 1, 0), /* Reachable */
DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Fixed Label cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(fixedLabelAttrs)
-DECLARE_DYNAMIC_ATTRIBUTE(ZCL_LABEL_LIST_ATTRIBUTE_ID, ARRAY, kFixedLabelAttributeArraySize, 0) /* label list */
-DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
+DECLARE_DYNAMIC_ATTRIBUTE(ZCL_LABEL_LIST_ATTRIBUTE_ID, ARRAY, kFixedLabelAttributeArraySize, 0), /* label list */
+ DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Cluster List for Bridged Light endpoint
DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(bridgedLightClusters)
@@ -116,7 +116,7 @@ DECLARE_DYNAMIC_ENDPOINT(bridgedLightEndpoint, bridgedLightClusters);
CHIP_ERROR AddDeviceEndpoint(Device * dev, EmberAfEndpointType * ep, uint16_t deviceType)
{
uint8_t index = 0;
- while (index < DYNAMIC_ENDPOINT_COUNT)
+ while (index < CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT)
{
if (NULL == gDevices[index])
{
@@ -144,7 +144,7 @@ CHIP_ERROR AddDeviceEndpoint(Device * dev, EmberAfEndpointType * ep, uint16_t de
CHIP_ERROR RemoveDeviceEndpoint(Device * dev)
{
- for (uint8_t index = 0; index < DYNAMIC_ENDPOINT_COUNT; index++)
+ for (uint8_t index = 0; index < CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT; index++)
{
if (gDevices[index] == dev)
{
@@ -195,7 +195,7 @@ EmberAfStatus HandleReadBridgedDeviceBasicAttribute(Device * dev, chip::Attribut
{
*buffer = dev->IsReachable() ? 1 : 0;
}
- else if ((attributeId == ZCL_USER_LABEL_ATTRIBUTE_ID) && (maxReadLength == 32))
+ else if ((attributeId == ZCL_NODE_LABEL_ATTRIBUTE_ID) && (maxReadLength == 32))
{
ToZclCharString(buffer, dev->GetName(), static_cast(maxReadLength - 1));
}
@@ -264,7 +264,7 @@ EmberAfStatus emberAfExternalAttributeReadCallback(EndpointId endpoint, ClusterI
{
uint16_t endpointIndex = emberAfGetDynamicIndexFromEndpoint(endpoint);
- if ((endpointIndex < DYNAMIC_ENDPOINT_COUNT) && (gDevices[endpointIndex] != NULL))
+ if ((endpointIndex < CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT) && (gDevices[endpointIndex] != NULL))
{
Device * dev = gDevices[endpointIndex];
@@ -291,7 +291,7 @@ EmberAfStatus emberAfExternalAttributeWriteCallback(EndpointId endpoint, Cluster
{
uint16_t endpointIndex = emberAfGetDynamicIndexFromEndpoint(endpoint);
- if (endpointIndex < DYNAMIC_ENDPOINT_COUNT)
+ if (endpointIndex < CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT)
{
Device * dev = gDevices[endpointIndex];
@@ -323,10 +323,10 @@ void HandleDeviceStatusChanged(Device * dev, Device::Changed_t itemChangedMask)
if (itemChangedMask & Device::kChanged_Name)
{
- uint8_t zclName[kUserLabelSize];
- ToZclCharString(zclName, dev->GetName(), kUserLabelSize - 1);
+ uint8_t zclName[kNodeLabelSize + 1];
+ ToZclCharString(zclName, dev->GetName(), kNodeLabelSize);
MatterReportingAttributeChangeCallback(dev->GetEndpointId(), ZCL_BRIDGED_DEVICE_BASIC_CLUSTER_ID,
- ZCL_USER_LABEL_ATTRIBUTE_ID, CLUSTER_MASK_SERVER, 0, ZCL_CHAR_STRING_ATTRIBUTE_TYPE,
+ ZCL_NODE_LABEL_ATTRIBUTE_ID, CLUSTER_MASK_SERVER, 0, ZCL_CHAR_STRING_ATTRIBUTE_TYPE,
zclName);
}
if (itemChangedMask & Device::kChanged_Location)
@@ -334,7 +334,7 @@ void HandleDeviceStatusChanged(Device * dev, Device::Changed_t itemChangedMask)
uint8_t buffer[kFixedLabelAttributeArraySize];
EmberAfAttributeMetadata am = { .attributeId = ZCL_LABEL_LIST_ATTRIBUTE_ID,
.size = kFixedLabelAttributeArraySize,
- .defaultValue = nullptr };
+ .defaultValue = static_cast(0) };
EncodeFixedLabel("room", dev->GetLocation(), buffer, sizeof(buffer), &am);
diff --git a/examples/bridge-app/esp32/sdkconfig.defaults b/examples/bridge-app/esp32/sdkconfig.defaults
index 956dcfe0eecedd..6a6589e1040577 100644
--- a/examples/bridge-app/esp32/sdkconfig.defaults
+++ b/examples/bridge-app/esp32/sdkconfig.defaults
@@ -36,3 +36,6 @@ CONFIG_LWIP_IPV6_AUTOCONFIG=y
# Use a custom partition table
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
+
+CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y
+CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y
diff --git a/examples/bridge-app/linux/BUILD.gn b/examples/bridge-app/linux/BUILD.gn
index 572142d2357782..0f27218e003c55 100644
--- a/examples/bridge-app/linux/BUILD.gn
+++ b/examples/bridge-app/linux/BUILD.gn
@@ -20,6 +20,7 @@ assert(chip_build_tools)
executable("chip-bridge-app") {
sources = [
+ "${chip_root}/examples/tv-app/tv-common/include/CHIPProjectAppConfig.h",
"Device.cpp",
"Options.cpp",
"include/Device.h",
@@ -33,9 +34,6 @@ executable("chip-bridge-app") {
cflags = [ "-Wconversion" ]
- # TODO: the definition of DYNAMIC_ENDPOINT_COUNT needs find a common home!
- cflags += [ "-DDYNAMIC_ENDPOINT_COUNT=16" ]
-
include_dirs = [ "include" ]
output_dir = root_out_dir
diff --git a/examples/bridge-app/linux/README.md b/examples/bridge-app/linux/README.md
index 546ea0a7e83819..9cdd2a30f8080c 100644
--- a/examples/bridge-app/linux/README.md
+++ b/examples/bridge-app/linux/README.md
@@ -129,16 +129,6 @@ value/label pair `"room"`/`[light name]`.
## Running the Complete Example on Raspberry Pi 4
-> If you want to test ZCL, please disable Rendezvous
->
-> gn gen out/debug --args='bypass_rendezvous=true'
-> ninja -C out/debug
->
-> Note that GN will set bypass_rendezvous for future builds, to enable
-> rendezvous, re-generate using
->
-> gn gen out/debug --args='chip_bypass_rendezvous=false'
-
- Prerequisites
1. A Raspberry Pi 4 board
diff --git a/examples/bridge-app/linux/args.gni b/examples/bridge-app/linux/args.gni
index a6463ca2c05fae..7039d20e181994 100644
--- a/examples/bridge-app/linux/args.gni
+++ b/examples/bridge-app/linux/args.gni
@@ -15,3 +15,11 @@
import("//build_overrides/chip.gni")
import("${chip_root}/config/standalone/args.gni")
+
+chip_device_project_config_include = ""
+chip_project_config_include = ""
+chip_system_project_config_include = ""
+
+chip_project_config_include_dirs =
+ [ "${chip_root}/examples/bridge-app/bridge-common/include" ]
+chip_project_config_include_dirs += [ "${chip_root}/config/standalone" ]
diff --git a/examples/bridge-app/linux/main.cpp b/examples/bridge-app/linux/main.cpp
index 530e255599cc49..3d7deecc5649d1 100644
--- a/examples/bridge-app/linux/main.cpp
+++ b/examples/bridge-app/linux/main.cpp
@@ -50,7 +50,7 @@ using namespace chip::Inet;
using namespace chip::Transport;
using namespace chip::DeviceLayer;
-static const int kUserLabelSize = 32;
+static const int kNodeLabelSize = 32;
// Current ZCL implementation of Struct uses a max-size array of 254 bytes
static const int kDescriptorAttributeArraySize = 254;
static const int kFixedLabelAttributeArraySize = 254;
@@ -59,7 +59,7 @@ static const int kFixedLabelElementsOctetStringSize = 16;
static EndpointId gCurrentEndpointId;
static EndpointId gFirstDynamicEndpointId;
-static Device * gDevices[DYNAMIC_ENDPOINT_COUNT];
+static Device * gDevices[CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT];
// ENDPOINT DEFINITIONS:
// =================================================================================
@@ -94,27 +94,27 @@ static Device * gDevices[DYNAMIC_ENDPOINT_COUNT];
// Declare On/Off cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(onOffAttrs)
-DECLARE_DYNAMIC_ATTRIBUTE(ZCL_ON_OFF_ATTRIBUTE_ID, BOOLEAN, 1, 0) /* on/off */
-DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
+DECLARE_DYNAMIC_ATTRIBUTE(ZCL_ON_OFF_ATTRIBUTE_ID, BOOLEAN, 1, 0), /* on/off */
+ DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Descriptor cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(descriptorAttrs)
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_DEVICE_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* device list */
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_SERVER_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* server list */
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_CLIENT_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* client list */
- DECLARE_DYNAMIC_ATTRIBUTE(ZCL_PARTS_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0) /* parts list */
+ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_PARTS_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* parts list */
DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Bridged Device Basic information cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(bridgedDeviceBasicAttrs)
-DECLARE_DYNAMIC_ATTRIBUTE(ZCL_USER_LABEL_ATTRIBUTE_ID, CHAR_STRING, kUserLabelSize, 0), /* UserLabel */
- DECLARE_DYNAMIC_ATTRIBUTE(ZCL_REACHABLE_ATTRIBUTE_ID, BOOLEAN, 1, 0) /* Reachable */
+DECLARE_DYNAMIC_ATTRIBUTE(ZCL_NODE_LABEL_ATTRIBUTE_ID, CHAR_STRING, kNodeLabelSize, 0), /* NodeLabel */
+ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_REACHABLE_ATTRIBUTE_ID, BOOLEAN, 1, 0), /* Reachable */
DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Fixed Label cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(fixedLabelAttrs)
-DECLARE_DYNAMIC_ATTRIBUTE(ZCL_LABEL_LIST_ATTRIBUTE_ID, ARRAY, kFixedLabelAttributeArraySize, 0) /* label list */
-DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
+DECLARE_DYNAMIC_ATTRIBUTE(ZCL_LABEL_LIST_ATTRIBUTE_ID, ARRAY, kFixedLabelAttributeArraySize, 0), /* label list */
+ DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Cluster List for Bridged Light endpoint
DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(bridgedLightClusters)
@@ -135,10 +135,10 @@ DECLARE_DYNAMIC_ENDPOINT(bridgedLightEndpoint, bridgedLightClusters);
// Declare Switch cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(switchAttrs)
-DECLARE_DYNAMIC_ATTRIBUTE(ZCL_NUMBER_OF_POSITIONS_ATTRIBUTE_ID, INT8U, 1, 0), /* NumberOfPositions */
- DECLARE_DYNAMIC_ATTRIBUTE(ZCL_CURRENT_POSITION_ATTRIBUTE_ID, INT8U, 1, 0), /* CurrentPosition */
- DECLARE_DYNAMIC_ATTRIBUTE(ZCL_MULTI_PRESS_MAX_ATTRIBUTE_ID, INT8U, 1, 0), /* MultiPressMax */
- DECLARE_DYNAMIC_ATTRIBUTE(ZCL_FEATURE_MAP_SERVER_ATTRIBUTE_ID, BITMAP32, 4, 0) /* FeatureMap */
+DECLARE_DYNAMIC_ATTRIBUTE(ZCL_NUMBER_OF_POSITIONS_ATTRIBUTE_ID, INT8U, 1, 0), /* NumberOfPositions */
+ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_CURRENT_POSITION_ATTRIBUTE_ID, INT8U, 1, 0), /* CurrentPosition */
+ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_MULTI_PRESS_MAX_ATTRIBUTE_ID, INT8U, 1, 0), /* MultiPressMax */
+ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_FEATURE_MAP_SERVER_ATTRIBUTE_ID, BITMAP32, 4, 0), /* FeatureMap */
DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Descriptor cluster attributes
@@ -146,19 +146,19 @@ DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(switchDescriptorAttrs)
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_DEVICE_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* device list */
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_SERVER_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* server list */
DECLARE_DYNAMIC_ATTRIBUTE(ZCL_CLIENT_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* client list */
- DECLARE_DYNAMIC_ATTRIBUTE(ZCL_PARTS_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0) /* parts list */
+ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_PARTS_LIST_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* parts list */
DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Bridged Device Basic information cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(switchBridgedDeviceBasicAttrs)
-DECLARE_DYNAMIC_ATTRIBUTE(ZCL_USER_LABEL_ATTRIBUTE_ID, CHAR_STRING, kUserLabelSize, 0), /* UserLabel */
- DECLARE_DYNAMIC_ATTRIBUTE(ZCL_REACHABLE_ATTRIBUTE_ID, BOOLEAN, 1, 0) /* Reachable */
+DECLARE_DYNAMIC_ATTRIBUTE(ZCL_NODE_LABEL_ATTRIBUTE_ID, CHAR_STRING, kNodeLabelSize, 0), /* NodeLabel */
+ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_REACHABLE_ATTRIBUTE_ID, BOOLEAN, 1, 0), /* Reachable */
DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Fixed Label cluster attributes
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(switchFixedLabelAttrs)
-DECLARE_DYNAMIC_ATTRIBUTE(ZCL_LABEL_LIST_ATTRIBUTE_ID, ARRAY, kFixedLabelAttributeArraySize, 0) /* label list */
-DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
+DECLARE_DYNAMIC_ATTRIBUTE(ZCL_LABEL_LIST_ATTRIBUTE_ID, ARRAY, kFixedLabelAttributeArraySize, 0), /* label list */
+ DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
// Declare Cluster List for Bridged Switch endpoint
DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(bridgedSwitchClusters)
@@ -184,7 +184,7 @@ DECLARE_DYNAMIC_ENDPOINT(bridgedSwitchEndpoint, bridgedSwitchClusters);
int AddDeviceEndpoint(Device * dev, EmberAfEndpointType * ep, uint16_t deviceType)
{
uint8_t index = 0;
- while (index < DYNAMIC_ENDPOINT_COUNT)
+ while (index < CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT)
{
if (NULL == gDevices[index])
{
@@ -219,7 +219,7 @@ int AddDeviceEndpoint(Device * dev, EmberAfEndpointType * ep, uint16_t deviceTyp
int RemoveDeviceEndpoint(Device * dev)
{
uint8_t index = 0;
- while (index < DYNAMIC_ENDPOINT_COUNT)
+ while (index < CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT)
{
if (gDevices[index] == dev)
{
@@ -267,11 +267,11 @@ void HandleDeviceStatusChanged(Device * dev, Device::Changed_t itemChangedMask)
if (itemChangedMask & Device::kChanged_Name)
{
- uint8_t zclName[kUserLabelSize];
+ uint8_t zclName[kNodeLabelSize];
MutableByteSpan zclNameSpan(zclName);
MakeZclCharString(zclNameSpan, dev->GetName());
MatterReportingAttributeChangeCallback(dev->GetEndpointId(), ZCL_BRIDGED_DEVICE_BASIC_CLUSTER_ID,
- ZCL_USER_LABEL_ATTRIBUTE_ID, CLUSTER_MASK_SERVER, 0, ZCL_CHAR_STRING_ATTRIBUTE_TYPE,
+ ZCL_NODE_LABEL_ATTRIBUTE_ID, CLUSTER_MASK_SERVER, 0, ZCL_CHAR_STRING_ATTRIBUTE_TYPE,
zclNameSpan.data());
}
@@ -280,7 +280,7 @@ void HandleDeviceStatusChanged(Device * dev, Device::Changed_t itemChangedMask)
uint8_t buffer[kFixedLabelAttributeArraySize];
EmberAfAttributeMetadata am = { .attributeId = ZCL_LABEL_LIST_ATTRIBUTE_ID,
.size = kFixedLabelAttributeArraySize,
- .defaultValue = nullptr };
+ .defaultValue = static_cast(0) };
EncodeFixedLabel("room", dev->GetLocation(), buffer, sizeof(buffer), &am);
@@ -342,7 +342,7 @@ EmberAfStatus HandleReadBridgedDeviceBasicAttribute(Device * dev, chip::Attribut
{
*buffer = dev->IsReachable() ? 1 : 0;
}
- else if ((attributeId == ZCL_USER_LABEL_ATTRIBUTE_ID) && (maxReadLength == 32))
+ else if ((attributeId == ZCL_NODE_LABEL_ATTRIBUTE_ID) && (maxReadLength == 32))
{
uint8_t bufferMemory[254];
MutableByteSpan zclString(bufferMemory);
@@ -460,7 +460,7 @@ EmberAfStatus emberAfExternalAttributeReadCallback(EndpointId endpoint, ClusterI
EmberAfStatus ret = EMBER_ZCL_STATUS_FAILURE;
- if ((endpointIndex < DYNAMIC_ENDPOINT_COUNT) && (gDevices[endpointIndex] != NULL))
+ if ((endpointIndex < CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT) && (gDevices[endpointIndex] != NULL))
{
Device * dev = gDevices[endpointIndex];
@@ -496,7 +496,7 @@ EmberAfStatus emberAfExternalAttributeWriteCallback(EndpointId endpoint, Cluster
// ChipLogProgress(DeviceLayer, "emberAfExternalAttributeWriteCallback: ep=%d", endpoint);
- if (endpointIndex < DYNAMIC_ENDPOINT_COUNT)
+ if (endpointIndex < CHIP_DEVICE_CONFIG_DYNAMIC_ENDPOINT_COUNT)
{
Device * dev = gDevices[endpointIndex];
diff --git a/examples/build_overrides/k32w0_sdk.gni b/examples/build_overrides/k32w0_sdk.gni
index 51a2821b4ab1fc..e77b63d1e02fa9 100644
--- a/examples/build_overrides/k32w0_sdk.gni
+++ b/examples/build_overrides/k32w0_sdk.gni
@@ -15,5 +15,5 @@
declare_args() {
# Root directory for k32w SDK.
k32w0_sdk_build_root =
- "//third_party/connectedhomeip/third_party/k32w_sdk/nxp/k32w/k32w0"
+ "//third_party/connectedhomeip/third_party/nxp/k32w0_sdk"
}
diff --git a/examples/chip-tool-darwin/main.m b/examples/chip-tool-darwin/main.m
index 19b9ccb6f2807b..9cd1af24d17fe4 100644
--- a/examples/chip-tool-darwin/main.m
+++ b/examples/chip-tool-darwin/main.m
@@ -16,14 +16,7 @@
*
*/
-#import
-#import
-#import
-#import
-#import
-#import
-#import
-#import
+#import
#import
int main(int argc, const char * argv[]) { return EXIT_SUCCESS; }
diff --git a/examples/chip-tool-darwin/third_party/connectedhomeip b/examples/chip-tool-darwin/third_party/connectedhomeip
new file mode 120000
index 00000000000000..1b20c9fb816b63
--- /dev/null
+++ b/examples/chip-tool-darwin/third_party/connectedhomeip
@@ -0,0 +1 @@
+../../../
\ No newline at end of file
diff --git a/examples/chip-tool/BUILD.gn b/examples/chip-tool/BUILD.gn
index 7f5a419fe7dd25..c78ea55662db76 100644
--- a/examples/chip-tool/BUILD.gn
+++ b/examples/chip-tool/BUILD.gn
@@ -30,12 +30,17 @@ executable("chip-tool") {
"commands/common/CHIPCommand.cpp",
"commands/common/CHIPCommand.h",
"commands/common/Command.cpp",
+ "commands/common/CommandInvoker.h",
"commands/common/Commands.cpp",
"commands/discover/DiscoverCommand.cpp",
"commands/discover/DiscoverCommissionablesCommand.cpp",
"commands/discover/DiscoverCommissionersCommand.cpp",
- "commands/pairing/CommissionedListCommand.cpp",
- "commands/pairing/CommissionedListCommand.h",
+
+ # TODO - enable CommissionedListCommand once DNS Cache is implemented
+ # "commands/pairing/CommissionedListCommand.cpp",
+ # "commands/pairing/CommissionedListCommand.h",
+ "commands/pairing/OpenCommissioningWindowCommand.cpp",
+ "commands/pairing/OpenCommissioningWindowCommand.h",
"commands/pairing/PairingCommand.cpp",
"commands/payload/AdditionalDataParseCommand.cpp",
"commands/payload/SetupPayloadParseCommand.cpp",
@@ -48,6 +53,8 @@ executable("chip-tool") {
defines = [ "CONFIG_USE_SEPARATE_EVENTLOOP=${config_use_separate_eventloop}" ]
deps = [
+ "${chip_root}/src/app/server",
+ "${chip_root}/src/app/tests/suites/pics",
"${chip_root}/src/controller/data_model",
"${chip_root}/src/lib",
"${chip_root}/src/platform",
diff --git a/examples/chip-tool/README.md b/examples/chip-tool/README.md
index 871361d45fca96..61a23a6209a8af 100644
--- a/examples/chip-tool/README.md
+++ b/examples/chip-tool/README.md
@@ -42,13 +42,6 @@ configuration.
To initiate a client commissioning request to a device, run the built executable
and choose the pairing mode.
-##### Commission a device configured to bypass Rendezvous
-
-The command below commissions a device with the provided IP address and port of
-the server to talk to.
-
- $ chip-tool pairing bypass ${NODE_ID_TO_ASSIGN} 192.168.0.30 5540
-
#### Commission a device over BLE
Run the built executable and pass it the discriminator and pairing code of the
@@ -433,7 +426,6 @@ Usage:
| Commands: |
+-------------------------------------------------------------------------------------+
| * unpair |
- | * bypass |
| * ble |
| * softap |
+-------------------------------------------------------------------------------------+
diff --git a/examples/chip-tool/args.gni b/examples/chip-tool/args.gni
index 311ddab32d5fe5..a76f3e8996ce3c 100644
--- a/examples/chip-tool/args.gni
+++ b/examples/chip-tool/args.gni
@@ -15,3 +15,10 @@
import("//build_overrides/chip.gni")
import("${chip_root}/config/standalone/args.gni")
+
+chip_device_project_config_include = ""
+chip_project_config_include = ""
+chip_system_project_config_include = ""
+
+chip_project_config_include_dirs = [ "${chip_root}/examples/chip-tool/include" ]
+chip_project_config_include_dirs += [ "${chip_root}/config/standalone" ]
diff --git a/examples/chip-tool/commands/clusters/ModelCommand.cpp b/examples/chip-tool/commands/clusters/ModelCommand.cpp
index 25fdfa8ec7a697..01406250d7a360 100644
--- a/examples/chip-tool/commands/clusters/ModelCommand.cpp
+++ b/examples/chip-tool/commands/clusters/ModelCommand.cpp
@@ -26,28 +26,21 @@ using namespace ::chip;
CHIP_ERROR ModelCommand::RunCommand()
{
ChipLogProgress(chipTool, "Sending command to node 0x%" PRIx64, mNodeId);
-
- CHIP_ERROR err = mController.GetConnectedDevice(mNodeId, &mOnDeviceConnectedCallback, &mOnDeviceConnectionFailureCallback);
- VerifyOrExit(err == CHIP_NO_ERROR,
- ChipLogError(chipTool, "Failed in initiating connection to the device: %" PRIu64 ", error %" CHIP_ERROR_FORMAT,
- mNodeId, err.Format()));
-
-exit:
- return err;
+ return CurrentCommissioner().GetConnectedDevice(mNodeId, &mOnDeviceConnectedCallback, &mOnDeviceConnectionFailureCallback);
}
-void ModelCommand::OnDeviceConnectedFn(void * context, chip::Controller::Device * device)
+void ModelCommand::OnDeviceConnectedFn(void * context, ChipDevice * device)
{
ModelCommand * command = reinterpret_cast(context);
- VerifyOrReturn(command != nullptr,
- ChipLogError(chipTool, "Device connected, but cannot send the command, as the context is null"));
+ VerifyOrReturn(command != nullptr, ChipLogError(chipTool, "OnDeviceConnectedFn: context is null"));
command->SendCommand(device, command->mEndPointId);
}
-void ModelCommand::OnDeviceConnectionFailureFn(void * context, NodeId deviceId, CHIP_ERROR error)
+void ModelCommand::OnDeviceConnectionFailureFn(void * context, NodeId deviceId, CHIP_ERROR err)
{
+ LogErrorOnFailure(err);
+
ModelCommand * command = reinterpret_cast(context);
- ChipLogError(chipTool, "Failed in connecting to the device %" PRIu64 ". Error %" CHIP_ERROR_FORMAT, deviceId, error.Format());
- VerifyOrReturn(command != nullptr, ChipLogError(chipTool, "ModelCommand context is null"));
- command->SetCommandExitStatus(error);
+ VerifyOrReturn(command != nullptr, ChipLogError(chipTool, "OnDeviceConnectionFailureFn: context is null"));
+ command->SetCommandExitStatus(err);
}
diff --git a/examples/chip-tool/commands/clusters/ModelCommand.h b/examples/chip-tool/commands/clusters/ModelCommand.h
index c70d35477f80c4..b03361433e0996 100644
--- a/examples/chip-tool/commands/clusters/ModelCommand.h
+++ b/examples/chip-tool/commands/clusters/ModelCommand.h
@@ -21,17 +21,12 @@
#include "../../config/PersistentStorage.h"
#include "../common/CHIPCommand.h"
#include
-#include
#include
-// Limits on endpoint values.
-#define CHIP_ZCL_ENDPOINT_MIN 0x00
-#define CHIP_ZCL_ENDPOINT_MAX 0xF0
-
class ModelCommand : public CHIPCommand
{
public:
- using ChipDevice = ::chip::Controller::Device;
+ using ChipDevice = ::chip::OperationalDeviceProxy;
ModelCommand(const char * commandName) :
CHIPCommand(commandName), mOnDeviceConnectedCallback(OnDeviceConnectedFn, this),
@@ -42,6 +37,7 @@ class ModelCommand : public CHIPCommand
{
AddArgument("node-id", 0, UINT64_MAX, &mNodeId);
AddArgument("endpoint-id", CHIP_ZCL_ENDPOINT_MIN, CHIP_ZCL_ENDPOINT_MAX, &mEndPointId);
+ AddArgument("timedInteractionTimeoutMs", 0, UINT16_MAX, &mTimedInteractionTimeoutMs);
}
/////////// CHIPCommand Interface /////////
@@ -50,6 +46,9 @@ class ModelCommand : public CHIPCommand
virtual CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endPointId) = 0;
+protected:
+ chip::Optional mTimedInteractionTimeoutMs;
+
private:
chip::NodeId mNodeId;
uint8_t mEndPointId;
@@ -57,6 +56,6 @@ class ModelCommand : public CHIPCommand
static void OnDeviceConnectedFn(void * context, ChipDevice * device);
static void OnDeviceConnectionFailureFn(void * context, NodeId deviceId, CHIP_ERROR error);
- chip::Callback::Callback mOnDeviceConnectedCallback;
- chip::Callback::Callback mOnDeviceConnectionFailureCallback;
+ chip::Callback::Callback mOnDeviceConnectedCallback;
+ chip::Callback::Callback mOnDeviceConnectionFailureCallback;
};
diff --git a/examples/chip-tool/commands/common/CHIPCommand.cpp b/examples/chip-tool/commands/common/CHIPCommand.cpp
index 6d70fc68d8016e..b8568da129a48e 100644
--- a/examples/chip-tool/commands/common/CHIPCommand.cpp
+++ b/examples/chip-tool/commands/common/CHIPCommand.cpp
@@ -21,14 +21,18 @@
#include
#include
#include
+#include
#include
-#include
#include
#include
#include
using DeviceControllerFactory = chip::Controller::DeviceControllerFactory;
+constexpr chip::FabricId kIdentityAlphaFabricId = 1;
+constexpr chip::FabricId kIdentityBetaFabricId = 2;
+constexpr chip::FabricId kIdentityGammaFabricId = 3;
+
CHIP_ERROR CHIPCommand::Run()
{
#if CHIP_DEVICE_LAYER_TARGET_LINUX && CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
@@ -36,16 +40,102 @@ CHIP_ERROR CHIPCommand::Run()
ReturnLogErrorOnFailure(chip::DeviceLayer::Internal::BLEMgrImpl().ConfigureBle(0, true));
#endif
- ReturnLogErrorOnFailure(mStorage.Init());
- ReturnLogErrorOnFailure(mOpCredsIssuer.Initialize(mStorage));
- ReturnLogErrorOnFailure(mFabricStorage.Initialize(&mStorage));
+ ReturnLogErrorOnFailure(mDefaultStorage.Init());
+ ReturnLogErrorOnFailure(mFabricStorage.Initialize(&mDefaultStorage));
+
+ chip::Controller::FactoryInitParams factoryInitParams;
+ factoryInitParams.fabricStorage = &mFabricStorage;
+ factoryInitParams.listenPort = static_cast(mDefaultStorage.GetListenPort() + CurrentCommissionerIndex());
+ ReturnLogErrorOnFailure(DeviceControllerFactory::GetInstance().Init(factoryInitParams));
+
+ ReturnLogErrorOnFailure(InitializeCommissioner(GetIdentity(), CurrentCommissionerIndex()));
+
+ chip::DeviceLayer::PlatformMgr().ScheduleWork(RunQueuedCommand, reinterpret_cast(this));
+ ReturnLogErrorOnFailure(StartWaiting(GetWaitDuration()));
+
+ Shutdown();
+
+ //
+ // We can call DeviceController::Shutdown() safely without grabbing the stack lock
+ // since the CHIP thread and event queue have been stopped, preventing any thread
+ // races.
+ //
+ ReturnLogErrorOnFailure(ShutdownCommissioner(GetIdentity()));
+
+ return CHIP_NO_ERROR;
+}
+
+void CHIPCommand::SetIdentity(const char * identity)
+{
+ std::string name = std::string(identity);
+ if (name.compare(kIdentityAlpha) != 0 && name.compare(kIdentityBeta) != 0 && name.compare(kIdentityGamma) != 0)
+ {
+ ChipLogError(chipTool, "Unknown commissioner name: %s. Supported names are [%s, %s, %s]", name.c_str(), kIdentityAlpha,
+ kIdentityBeta, kIdentityGamma);
+ chipDie();
+ }
+
+ mCommissionerName.SetValue(const_cast(identity));
+}
+
+std::string CHIPCommand::GetIdentity()
+{
+ std::string name = mCommissionerName.HasValue() ? mCommissionerName.Value() : kIdentityAlpha;
+ if (name.compare(kIdentityAlpha) != 0 && name.compare(kIdentityBeta) != 0 && name.compare(kIdentityGamma) != 0)
+ {
+ ChipLogError(chipTool, "Unknown commissioner name: %s. Supported names are [%s, %s, %s]", name.c_str(), kIdentityAlpha,
+ kIdentityBeta, kIdentityGamma);
+ chipDie();
+ }
+
+ return name;
+}
+
+uint16_t CHIPCommand::CurrentCommissionerIndex()
+{
+ uint16_t index = 0;
+ std::string name = GetIdentity();
+ if (name.compare(kIdentityAlpha) == 0)
+ {
+ index = kIdentityAlphaFabricId;
+ }
+ else if (name.compare(kIdentityBeta) == 0)
+ {
+ index = kIdentityBetaFabricId;
+ }
+ else if (name.compare(kIdentityGamma) == 0)
+ {
+ index = kIdentityGammaFabricId;
+ }
+
+ VerifyOrDieWithMsg(index != 0, chipTool, "Unknown commissioner name: %s. Supported names are [%s, %s, %s]", name.c_str(),
+ kIdentityAlpha, kIdentityBeta, kIdentityGamma);
+ return index;
+}
+
+chip::Controller::DeviceCommissioner & CHIPCommand::CurrentCommissioner()
+{
+ auto item = mCommissioners.find(GetIdentity());
+ return *item->second.get();
+}
+
+CHIP_ERROR CHIPCommand::ShutdownCommissioner(std::string key)
+{
+ return mCommissioners[key].get()->Shutdown();
+}
+
+CHIP_ERROR CHIPCommand::InitializeCommissioner(std::string key, chip::FabricId fabricId)
+{
chip::Platform::ScopedMemoryBuffer noc;
chip::Platform::ScopedMemoryBuffer icac;
chip::Platform::ScopedMemoryBuffer rcac;
chip::Credentials::SetDeviceAttestationCredentialsProvider(chip::Credentials::Examples::GetExampleDACProvider());
- chip::Credentials::SetDeviceAttestationVerifier(chip::Credentials::Examples::GetExampleDACVerifier());
+
+ // TODO: Replace testingRootStore with a AttestationTrustStore that has the necessary official PAA roots available
+ const chip::Credentials::AttestationTrustStore * testingRootStore = chip::Credentials::GetTestAttestationTrustStore();
+ chip::Credentials::SetDeviceAttestationVerifier(chip::Credentials::GetDefaultDACVerifier(testingRootStore));
VerifyOrReturnError(noc.Alloc(chip::Controller::kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY);
VerifyOrReturnError(icac.Alloc(chip::Controller::kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY);
@@ -61,15 +151,14 @@ CHIP_ERROR CHIPCommand::Run()
// TODO - OpCreds should only be generated for pairing command
// store the credentials in persistent storage, and
// generate when not available in the storage.
- ReturnLogErrorOnFailure(mOpCredsIssuer.GenerateNOCChainAfterValidation(mStorage.GetLocalNodeId(), 0, ephemeralKey.Pubkey(),
- rcacSpan, icacSpan, nocSpan));
-
- chip::Controller::FactoryInitParams factoryInitParams;
- factoryInitParams.fabricStorage = &mFabricStorage;
- factoryInitParams.listenPort = mStorage.GetListenPort();
+ ReturnLogErrorOnFailure(mCommissionerStorage.Init(key.c_str()));
+ ReturnLogErrorOnFailure(mOpCredsIssuer.Initialize(mCommissionerStorage));
+ ReturnLogErrorOnFailure(mOpCredsIssuer.GenerateNOCChainAfterValidation(mCommissionerStorage.GetLocalNodeId(), fabricId,
+ ephemeralKey.Pubkey(), rcacSpan, icacSpan, nocSpan));
+ std::unique_ptr commissioner = std::make_unique();
chip::Controller::SetupParams commissionerParams;
- commissionerParams.storageDelegate = &mStorage;
+ commissionerParams.storageDelegate = &mCommissionerStorage;
commissionerParams.operationalCredentialsDelegate = &mOpCredsIssuer;
commissionerParams.ephemeralKeypair = &ephemeralKey;
commissionerParams.controllerRCAC = rcacSpan;
@@ -77,20 +166,8 @@ CHIP_ERROR CHIPCommand::Run()
commissionerParams.controllerNOC = nocSpan;
commissionerParams.controllerVendorId = chip::VendorId::TestVendor1;
- ReturnLogErrorOnFailure(DeviceControllerFactory::GetInstance().Init(factoryInitParams));
- ReturnLogErrorOnFailure(DeviceControllerFactory::GetInstance().SetupCommissioner(commissionerParams, mController));
-
- chip::DeviceLayer::PlatformMgr().ScheduleWork(RunQueuedCommand, reinterpret_cast(this));
- ReturnLogErrorOnFailure(StartWaiting(GetWaitDuration()));
-
- Shutdown();
-
- //
- // We can call DeviceController::Shutdown() safely without grabbing the stack lock
- // since the CHIP thread and event queue have been stopped, preventing any thread
- // races.
- //
- ReturnLogErrorOnFailure(mController.Shutdown());
+ ReturnLogErrorOnFailure(DeviceControllerFactory::GetInstance().SetupCommissioner(commissionerParams, *(commissioner.get())));
+ mCommissioners[key] = std::move(commissioner);
return CHIP_NO_ERROR;
}
diff --git a/examples/chip-tool/commands/common/CHIPCommand.h b/examples/chip-tool/commands/common/CHIPCommand.h
index 9bb5345e8f47fe..f1aeadbbffea81 100644
--- a/examples/chip-tool/commands/common/CHIPCommand.h
+++ b/examples/chip-tool/commands/common/CHIPCommand.h
@@ -18,6 +18,8 @@
#pragma once
+#include
+
#include "../../config/PersistentStorage.h"
#include "Command.h"
@@ -25,18 +27,21 @@
class PersistentStorage;
+constexpr const char kIdentityAlpha[] = "alpha";
+constexpr const char kIdentityBeta[] = "beta";
+constexpr const char kIdentityGamma[] = "gamma";
+
class CHIPCommand : public Command
{
public:
- using ChipDevice = ::chip::Controller::Device;
+ using ChipDevice = ::chip::DeviceProxy;
using ChipDeviceCommissioner = ::chip::Controller::DeviceCommissioner;
using ChipDeviceController = ::chip::Controller::DeviceController;
- using ChipSerializedDevice = ::chip::Controller::SerializedDevice;
using IPAddress = ::chip::Inet::IPAddress;
using NodeId = ::chip::NodeId;
using PeerAddress = ::chip::Transport::PeerAddress;
- CHIPCommand(const char * commandName) : Command(commandName) {}
+ CHIPCommand(const char * commandName) : Command(commandName) { AddArgument("commissioner-name", &mCommissionerName); }
/////////// Command Interface /////////
CHIP_ERROR Run() override;
@@ -63,15 +68,29 @@ class CHIPCommand : public Command
// loop has been stopped.
virtual void Shutdown() {}
- ChipDeviceCommissioner mController;
- PersistentStorage mStorage;
+ PersistentStorage mDefaultStorage;
+ PersistentStorage mCommissionerStorage;
chip::SimpleFabricStorage mFabricStorage;
+ chip::Controller::ExampleOperationalCredentialsIssuer mOpCredsIssuer;
+
+ std::string GetIdentity();
+ void SetIdentity(const char * name);
+
+ // This method returns the commissioner instance to be used for running the command.
+ // The default commissioner instance name is "alpha", but it can be overriden by passing
+ // --identity "instance name" when running a command.
+ ChipDeviceCommissioner & CurrentCommissioner();
private:
+ CHIP_ERROR InitializeCommissioner(std::string key, chip::FabricId fabricId);
+ CHIP_ERROR ShutdownCommissioner(std::string key);
+ uint16_t CurrentCommissionerIndex();
+ std::map> mCommissioners;
+ chip::Optional mCommissionerName;
+
static void RunQueuedCommand(intptr_t commandArg);
CHIP_ERROR mCommandExitStatus = CHIP_ERROR_INTERNAL;
- chip::Controller::ExampleOperationalCredentialsIssuer mOpCredsIssuer;
CHIP_ERROR StartWaiting(chip::System::Clock::Timeout seconds);
void StopWaiting();
diff --git a/examples/chip-tool/commands/common/Command.cpp b/examples/chip-tool/commands/common/Command.cpp
index e1c9ba153c1d82..01559c5376599f 100644
--- a/examples/chip-tool/commands/common/Command.cpp
+++ b/examples/chip-tool/commands/common/Command.cpp
@@ -32,22 +32,71 @@
#include
#include
+constexpr const char * kOptionalArgumentPrefix = "--";
+constexpr size_t kOptionalArgumentPrefixLength = 2;
+
bool Command::InitArguments(int argc, char ** argv)
{
bool isValidCommand = false;
- size_t argsCount = mArgs.size();
- VerifyOrExit(argsCount == (size_t)(argc),
- ChipLogError(chipTool, "InitArgs: Wrong arguments number: %d instead of %zu", argc, argsCount));
+ size_t argvExtraArgsCount = (size_t) argc;
+ size_t mandatoryArgsCount = 0;
+ size_t optionalArgsCount = 0;
+ for (size_t i = 0; i < mArgs.size(); i++)
+ {
+ if (mArgs[i].isOptional())
+ {
+ optionalArgsCount++;
+ }
+ else
+ {
+ mandatoryArgsCount++;
+ argvExtraArgsCount--;
+ }
+ }
- for (size_t i = 0; i < argsCount; i++)
+ VerifyOrExit((size_t)(argc) >= mandatoryArgsCount && (argvExtraArgsCount == 0 || (argvExtraArgsCount && optionalArgsCount)),
+ ChipLogError(chipTool, "InitArgs: Wrong arguments number: %d instead of %zu", argc, mandatoryArgsCount));
+
+ // Initialize mandatory arguments
+ for (size_t i = 0; i < mandatoryArgsCount; i++)
{
- if (!InitArgument(i, argv[i]))
+ char * arg = argv[i];
+ if (!InitArgument(i, arg))
{
ExitNow();
}
}
+ // Initialize optional arguments
+ // Optional arguments expect a name and a value, so i is increased by 2 on every step.
+ for (size_t i = mandatoryArgsCount; i < (size_t) argc; i += 2)
+ {
+ bool found = false;
+ for (size_t j = mandatoryArgsCount; j < mandatoryArgsCount + optionalArgsCount; j++)
+ {
+ // optional arguments starts with kOptionalArgumentPrefix
+ if (strlen(argv[i]) <= kOptionalArgumentPrefixLength &&
+ strncmp(argv[i], kOptionalArgumentPrefix, kOptionalArgumentPrefixLength) != 0)
+ {
+ continue;
+ }
+
+ if (strcmp(argv[i] + strlen(kOptionalArgumentPrefix), mArgs[j].name) == 0)
+ {
+ found = true;
+
+ VerifyOrExit((size_t) argc > (i + 1),
+ ChipLogError(chipTool, "InitArgs: Optional argument %s missing value.", argv[i]));
+ if (!InitArgument(j, argv[i + 1]))
+ {
+ ExitNow();
+ }
+ }
+ }
+ VerifyOrExit(found, ChipLogError(chipTool, "InitArgs: Optional argument %s does not exist.", argv[i]));
+ }
+
isValidCommand = true;
exit:
@@ -84,6 +133,40 @@ static bool ParseAddressWithInterface(const char * addressString, Command::Addre
return true;
}
+// The callback should return whether the argument is valid, for the non-null
+// case. It can't directly write to isValidArgument (by closing over it)
+// because in the nullable-and-null case we need to do that from this function,
+// via the return value.
+template
+bool HandleNullableOptional(Argument & arg, char * argValue, std::function callback)
+{
+ if (arg.isOptional())
+ {
+ if (arg.isNullable())
+ {
+ arg.value = &(reinterpret_cast> *>(arg.value)->Emplace());
+ }
+ else
+ {
+ arg.value = &(reinterpret_cast *>(arg.value)->Emplace());
+ }
+ }
+
+ if (arg.isNullable())
+ {
+ auto * nullable = reinterpret_cast *>(arg.value);
+ if (strcmp(argValue, "null") == 0)
+ {
+ nullable->SetNull();
+ return true;
+ }
+
+ arg.value = &(nullable->SetNonNull());
+ }
+
+ return callback(reinterpret_cast(arg.value));
+}
+
bool Command::InitArgument(size_t argIndex, char * argValue)
{
bool isValidArgument = false;
@@ -93,200 +176,234 @@ bool Command::InitArgument(size_t argIndex, char * argValue)
switch (arg.type)
{
case ArgumentType::Attribute: {
- char * value = reinterpret_cast(arg.value);
- isValidArgument = (strcmp(argValue, value) == 0);
+ if (arg.isOptional() || arg.isNullable())
+ {
+ isValidArgument = false;
+ }
+ else
+ {
+ char * value = reinterpret_cast(arg.value);
+ isValidArgument = (strcmp(argValue, value) == 0);
+ }
break;
}
case ArgumentType::String: {
- const char ** value = reinterpret_cast(arg.value);
- *value = argValue;
- isValidArgument = true;
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ *value = argValue;
+ return true;
+ });
break;
}
case ArgumentType::CharString: {
- auto * value = static_cast *>(arg.value);
- *value = chip::Span(argValue, strlen(argValue));
- isValidArgument = true;
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ *value = chip::Span(argValue, strlen(argValue));
+ return true;
+ });
break;
}
case ArgumentType::OctetString: {
- auto * value = static_cast(arg.value);
- // We support two ways to pass an octet string argument. If it happens
- // to be all-ASCII, you can just pass it in. Otherwise you can pass in
- // 0x followed by the hex-encoded bytes.
- size_t argLen = strlen(argValue);
- static constexpr char hexPrefix[] = "hex:";
- constexpr size_t prefixLen = ArraySize(hexPrefix) - 1; // Don't count the null
- if (strncmp(argValue, hexPrefix, prefixLen) == 0)
- {
- // Hex-encoded. Decode it into a temporary buffer first, so if we
- // run into errors we can do correct "argument is not valid" logging
- // that actually shows the value that was passed in. After we
- // determine it's valid, modify the passed-in value to hold the
- // right bytes, so we don't need to worry about allocating storage
- // for this somewhere else. This works because the hex
- // representation is always longer than the octet string it encodes,
- // so we have enough space in argValue for the decoded version.
- chip::Platform::ScopedMemoryBuffer buffer;
- if (!buffer.Calloc(argLen)) // Bigger than needed, but it's fine.
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ // We support two ways to pass an octet string argument. If it happens
+ // to be all-ASCII, you can just pass it in. Otherwise you can pass in
+ // 0x followed by the hex-encoded bytes.
+ size_t argLen = strlen(argValue);
+ static constexpr char hexPrefix[] = "hex:";
+ constexpr size_t prefixLen = ArraySize(hexPrefix) - 1; // Don't count the null
+ if (strncmp(argValue, hexPrefix, prefixLen) == 0)
{
- isValidArgument = false;
- break;
+ // Hex-encoded. Decode it into a temporary buffer first, so if we
+ // run into errors we can do correct "argument is not valid" logging
+ // that actually shows the value that was passed in. After we
+ // determine it's valid, modify the passed-in value to hold the
+ // right bytes, so we don't need to worry about allocating storage
+ // for this somewhere else. This works because the hex
+ // representation is always longer than the octet string it encodes,
+ // so we have enough space in argValue for the decoded version.
+ chip::Platform::ScopedMemoryBuffer buffer;
+ if (!buffer.Calloc(argLen)) // Bigger than needed, but it's fine.
+ {
+ return false;
+ }
+
+ size_t octetCount = chip::Encoding::HexToBytes(argValue + prefixLen, argLen - prefixLen, buffer.Get(), argLen);
+ if (octetCount == 0)
+ {
+ return false;
+ }
+
+ memcpy(argValue, buffer.Get(), octetCount);
+ *value = chip::ByteSpan(chip::Uint8::from_char(argValue), octetCount);
+ return true;
}
-
- size_t octetCount = chip::Encoding::HexToBytes(argValue + prefixLen, argLen - prefixLen, buffer.Get(), argLen);
- if (octetCount == 0)
+ else
{
- isValidArgument = false;
- break;
+ // Just ASCII. Check for the "str:" prefix.
+ static constexpr char strPrefix[] = "str:";
+ constexpr size_t strPrefixLen = ArraySize(strPrefix) - 1; // Don't count the null
+ if (strncmp(argValue, strPrefix, strPrefixLen) == 0)
+ {
+ // Skip the prefix
+ argValue += strPrefixLen;
+ argLen -= strPrefixLen;
+ }
+ *value = chip::ByteSpan(chip::Uint8::from_char(argValue), argLen);
+ return true;
}
-
- memcpy(argValue, buffer.Get(), octetCount);
- *value = chip::ByteSpan(chip::Uint8::from_char(argValue), octetCount);
- isValidArgument = true;
- }
- else
- {
- // Just ASCII. Check for the "str:" prefix.
- static constexpr char strPrefix[] = "str:";
- constexpr size_t strPrefixLen = ArraySize(strPrefix) - 1; // Don't count the null
- if (strncmp(argValue, strPrefix, strPrefixLen) == 0)
- {
- // Skip the prefix
- argValue += strPrefixLen;
- argLen -= strPrefixLen;
- }
- *value = chip::ByteSpan(chip::Uint8::from_char(argValue), argLen);
- isValidArgument = true;
- }
+ });
break;
}
case ArgumentType::Boolean:
case ArgumentType::Number_uint8: {
- uint8_t * value = reinterpret_cast(arg.value);
-
- // stringstream treats uint8_t as char, which is not what we want here.
- uint16_t tmpValue;
- std::stringstream ss;
- isHexNotation ? ss << std::hex << argValue : ss << argValue;
- ss >> tmpValue;
- if (chip::CanCastTo(tmpValue))
- {
- *value = static_cast(tmpValue);
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ // stringstream treats uint8_t as char, which is not what we want here.
+ uint16_t tmpValue;
+ std::stringstream ss;
+ isHexNotation ? ss << std::hex << argValue : ss << argValue;
+ ss >> tmpValue;
+ if (chip::CanCastTo(tmpValue))
+ {
+ *value = static_cast(tmpValue);
- uint64_t min = chip::CanCastTo(arg.min) ? static_cast(arg.min) : 0;
- uint64_t max = arg.max;
- isValidArgument = (!ss.fail() && ss.eof() && *value >= min && *value <= max);
- }
- else
- {
- isValidArgument = false;
- }
+ uint64_t min = chip::CanCastTo(arg.min) ? static_cast(arg.min) : 0;
+ uint64_t max = arg.max;
+ return (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ }
+ else
+ {
+ return false;
+ }
+ });
break;
}
case ArgumentType::Number_uint16: {
- uint16_t * value = reinterpret_cast(arg.value);
- std::stringstream ss;
- isHexNotation ? ss << std::hex << argValue : ss << argValue;
- ss >> *value;
-
- uint64_t min = chip::CanCastTo(arg.min) ? static_cast(arg.min) : 0;
- uint64_t max = arg.max;
- isValidArgument = (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ std::stringstream ss;
+ isHexNotation ? ss << std::hex << argValue : ss << argValue;
+ ss >> *value;
+
+ uint64_t min = chip::CanCastTo(arg.min) ? static_cast(arg.min) : 0;
+ uint64_t max = arg.max;
+ return (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ });
break;
}
case ArgumentType::Number_uint32: {
- uint32_t * value = reinterpret_cast(arg.value);
- std::stringstream ss;
- isHexNotation ? ss << std::hex << argValue : ss << argValue;
- ss >> *value;
-
- uint64_t min = chip::CanCastTo(arg.min) ? static_cast(arg.min) : 0;
- uint64_t max = arg.max;
- isValidArgument = (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ std::stringstream ss;
+ isHexNotation ? ss << std::hex << argValue : ss << argValue;
+ ss >> *value;
+
+ uint64_t min = chip::CanCastTo(arg.min) ? static_cast(arg.min) : 0;
+ uint64_t max = arg.max;
+ return (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ });
break;
}
case ArgumentType::Number_uint64: {
- uint64_t * value = reinterpret_cast(arg.value);
- std::stringstream ss;
- isHexNotation ? ss << std::hex << argValue : ss << argValue;
- ss >> *value;
-
- uint64_t min = chip::CanCastTo(arg.min) ? static_cast(arg.min) : 0;
- uint64_t max = arg.max;
- isValidArgument = (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ std::stringstream ss;
+ isHexNotation ? ss << std::hex << argValue : ss << argValue;
+ ss >> *value;
+
+ uint64_t min = chip::CanCastTo(arg.min) ? static_cast(arg.min) : 0;
+ uint64_t max = arg.max;
+ return (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ });
break;
}
case ArgumentType::Number_int8: {
- int8_t * value = reinterpret_cast(arg.value);
-
- // stringstream treats int8_t as char, which is not what we want here.
- int16_t tmpValue;
- std::stringstream ss;
- isHexNotation ? ss << std::hex << argValue : ss << argValue;
- ss >> tmpValue;
- if (chip::CanCastTo(tmpValue))
- {
- *value = static_cast(tmpValue);
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ // stringstream treats int8_t as char, which is not what we want here.
+ int16_t tmpValue;
+ std::stringstream ss;
+ isHexNotation ? ss << std::hex << argValue : ss << argValue;
+ ss >> tmpValue;
+ if (chip::CanCastTo(tmpValue))
+ {
+ *value = static_cast(tmpValue);
- int64_t min = arg.min;
- int64_t max = chip::CanCastTo(arg.max) ? static_cast(arg.max) : INT64_MAX;
- isValidArgument = (!ss.fail() && ss.eof() && *value >= min && *value <= max);
- }
- else
- {
- isValidArgument = false;
- }
+ int64_t min = arg.min;
+ int64_t max = chip::CanCastTo(arg.max) ? static_cast(arg.max) : INT64_MAX;
+ return (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ }
+ else
+ {
+ return false;
+ }
+ });
break;
}
case ArgumentType::Number_int16: {
- int16_t * value = reinterpret_cast(arg.value);
- std::stringstream ss;
- isHexNotation ? ss << std::hex << argValue : ss << argValue;
- ss >> *value;
-
- int64_t min = arg.min;
- int64_t max = chip::CanCastTo(arg.max) ? static_cast(arg.max) : INT64_MAX;
- isValidArgument = (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ std::stringstream ss;
+ isHexNotation ? ss << std::hex << argValue : ss << argValue;
+ ss >> *value;
+
+ int64_t min = arg.min;
+ int64_t max = chip::CanCastTo(arg.max) ? static_cast(arg.max) : INT64_MAX;
+ return (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ });
break;
}
case ArgumentType::Number_int32: {
- int32_t * value = reinterpret_cast(arg.value);
- std::stringstream ss;
- isHexNotation ? ss << std::hex << argValue : ss << argValue;
- ss >> *value;
-
- int64_t min = arg.min;
- int64_t max = chip::CanCastTo(arg.max) ? static_cast(arg.max) : INT64_MAX;
- isValidArgument = (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ std::stringstream ss;
+ isHexNotation ? ss << std::hex << argValue : ss << argValue;
+ ss >> *value;
+
+ int64_t min = arg.min;
+ int64_t max = chip::CanCastTo(arg.max) ? static_cast(arg.max) : INT64_MAX;
+ return (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ });
break;
}
case ArgumentType::Number_int64: {
- int64_t * value = reinterpret_cast(arg.value);
- std::stringstream ss;
- isHexNotation ? ss << std::hex << argValue : ss << argValue;
- ss >> *value;
-
- int64_t min = arg.min;
- int64_t max = chip::CanCastTo(arg.max) ? static_cast(arg.max) : INT64_MAX;
- isValidArgument = (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ std::stringstream ss;
+ isHexNotation ? ss << std::hex << argValue : ss << argValue;
+ ss >> *value;
+
+ int64_t min = arg.min;
+ int64_t max = chip::CanCastTo(arg.max) ? static_cast(arg.max) : INT64_MAX;
+ return (!ss.fail() && ss.eof() && *value >= min && *value <= max);
+ });
+ break;
+ }
+
+ case ArgumentType::Float: {
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ std::stringstream ss;
+ ss << argValue;
+ ss >> *value;
+ return (!ss.fail() && ss.eof());
+ });
+ break;
+ }
+
+ case ArgumentType::Double: {
+ isValidArgument = HandleNullableOptional(arg, argValue, [&](auto * value) {
+ std::stringstream ss;
+ ss << argValue;
+ ss >> *value;
+ return (!ss.fail() && ss.eof());
+ });
break;
}
case ArgumentType::Address: {
- AddressWithInterface * value = reinterpret_cast(arg.value);
- isValidArgument = ParseAddressWithInterface(argValue, value);
+ isValidArgument = HandleNullableOptional(
+ arg, argValue, [&](auto * value) { return ParseAddressWithInterface(argValue, value); });
break;
}
}
@@ -299,62 +416,86 @@ bool Command::InitArgument(size_t argIndex, char * argValue)
return isValidArgument;
}
-size_t Command::AddArgument(const char * name, const char * value)
+size_t Command::AddArgument(const char * name, const char * value, uint8_t flags)
{
Argument arg;
arg.type = ArgumentType::Attribute;
arg.name = name;
arg.value = const_cast(reinterpret_cast(value));
+ arg.flags = flags;
- mArgs.emplace_back(arg);
- return mArgs.size();
+ return AddArgumentToList(std::move(arg));
}
-size_t Command::AddArgument(const char * name, char ** value)
+size_t Command::AddArgument(const char * name, char ** value, uint8_t flags)
{
Argument arg;
- arg.type = ArgumentType::CharString;
+ arg.type = ArgumentType::String;
arg.name = name;
arg.value = reinterpret_cast(value);
+ arg.flags = flags;
- mArgs.emplace_back(arg);
- return mArgs.size();
+ return AddArgumentToList(std::move(arg));
}
-size_t Command::AddArgument(const char * name, chip::CharSpan * value)
+size_t Command::AddArgument(const char * name, chip::CharSpan * value, uint8_t flags)
{
Argument arg;
arg.type = ArgumentType::CharString;
arg.name = name;
arg.value = reinterpret_cast(value);
+ arg.flags = flags;
- mArgs.emplace_back(arg);
- return mArgs.size();
+ return AddArgumentToList(std::move(arg));
}
-size_t Command::AddArgument(const char * name, chip::ByteSpan * value)
+size_t Command::AddArgument(const char * name, chip::ByteSpan * value, uint8_t flags)
{
Argument arg;
arg.type = ArgumentType::OctetString;
arg.name = name;
arg.value = reinterpret_cast(value);
+ arg.flags = flags;
- mArgs.emplace_back(arg);
- return mArgs.size();
+ return AddArgumentToList(std::move(arg));
}
-size_t Command::AddArgument(const char * name, AddressWithInterface * out)
+size_t Command::AddArgument(const char * name, AddressWithInterface * out, uint8_t flags)
{
Argument arg;
arg.type = ArgumentType::Address;
arg.name = name;
arg.value = reinterpret_cast(out);
+ arg.flags = flags;
+
+ return AddArgumentToList(std::move(arg));
+}
+
+size_t Command::AddArgument(const char * name, float min, float max, float * out, uint8_t flags)
+{
+ Argument arg;
+ arg.type = ArgumentType::Float;
+ arg.name = name;
+ arg.value = reinterpret_cast(out);
+ arg.flags = flags;
+ // Ignore min/max for now; they're always +-Infinity anyway.
+
+ return AddArgumentToList(std::move(arg));
+}
+
+size_t Command::AddArgument(const char * name, double min, double max, double * out, uint8_t flags)
+{
+ Argument arg;
+ arg.type = ArgumentType::Double;
+ arg.name = name;
+ arg.value = reinterpret_cast(out);
+ arg.flags = flags;
+ // Ignore min/max for now; they're always +-Infinity anyway.
- mArgs.emplace_back(arg);
- return mArgs.size();
+ return AddArgumentToList(std::move(arg));
}
-size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void * out, ArgumentType type)
+size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void * out, ArgumentType type, uint8_t flags)
{
Argument arg;
arg.type = type;
@@ -362,12 +503,12 @@ size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void *
arg.value = out;
arg.min = min;
arg.max = max;
+ arg.flags = flags;
- mArgs.emplace_back(arg);
- return mArgs.size();
+ return AddArgumentToList(std::move(arg));
}
-size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void * out)
+size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void * out, uint8_t flags)
{
Argument arg;
arg.type = ArgumentType::Number_uint8;
@@ -375,9 +516,9 @@ size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void *
arg.value = out;
arg.min = min;
arg.max = max;
+ arg.flags = flags;
- mArgs.emplace_back(arg);
- return mArgs.size();
+ return AddArgumentToList(std::move(arg));
}
const char * Command::GetArgumentName(size_t index) const
@@ -404,3 +545,28 @@ const char * Command::GetAttribute(void) const
return nullptr;
}
+
+size_t Command::AddArgumentToList(Argument && argument)
+{
+ if (argument.isOptional() || mArgs.empty() || !mArgs.back().isOptional())
+ {
+ // Safe to just append.
+ mArgs.emplace_back(std::move(argument));
+ return mArgs.size();
+ }
+
+ // We're inserting a non-optional arg but we already have something optional
+ // in the list. Insert before the first optional arg.
+ for (auto cur = mArgs.cbegin(), end = mArgs.cend(); cur != end; ++cur)
+ {
+ if ((*cur).isOptional())
+ {
+ mArgs.emplace(cur, std::move(argument));
+ return mArgs.size();
+ }
+ }
+
+ // Never reached.
+ VerifyOrDie(false);
+ return 0;
+}
diff --git a/examples/chip-tool/commands/common/Command.h b/examples/chip-tool/commands/common/Command.h
index e3da77dd679108..d1f5955eeb7266 100644
--- a/examples/chip-tool/commands/common/Command.h
+++ b/examples/chip-tool/commands/common/Command.h
@@ -18,7 +18,6 @@
#pragma once
-#include "controller/ExampleOperationalCredentialsIssuer.h"
#include
#include
#include
@@ -34,6 +33,10 @@
class Command;
+// Limits on endpoint values.
+#define CHIP_ZCL_ENDPOINT_MIN 0x00
+#define CHIP_ZCL_ENDPOINT_MAX 0xF0
+
template
std::unique_ptr make_unique(Args &&... args)
{
@@ -59,6 +62,8 @@ enum ArgumentType
Number_int16,
Number_int32,
Number_int64,
+ Float,
+ Double,
Boolean,
String,
CharString,
@@ -74,6 +79,16 @@ struct Argument
int64_t min;
uint64_t max;
void * value;
+ uint8_t flags;
+
+ enum
+ {
+ kOptional = (1 << 0),
+ kNullable = (1 << 1),
+ };
+
+ bool isOptional() const { return flags & kOptional; }
+ bool isNullable() const { return flags & kNullable; }
};
class Command
@@ -91,10 +106,11 @@ class Command
const char * GetName(void) const { return mName; }
const char * GetAttribute(void) const;
const char * GetArgumentName(size_t index) const;
+ bool GetArgumentIsOptional(size_t index) const { return mArgs[index].isOptional(); }
size_t GetArgumentsCount(void) const { return mArgs.size(); }
bool InitArguments(int argc, char ** argv);
- size_t AddArgument(const char * name, const char * value);
+ size_t AddArgument(const char * name, const char * value, uint8_t flags = 0);
/**
* @brief
* Add a char string command argument
@@ -103,90 +119,106 @@ class Command
* @param value A pointer to a `char *` where the argv value will be stored
* @returns The number of arguments currently added to the command
*/
- size_t AddArgument(const char * name, char ** value);
+ size_t AddArgument(const char * name, char ** value, uint8_t flags = 0);
+
/**
* Add an octet string command argument
*/
- size_t AddArgument(const char * name, chip::ByteSpan * value);
- size_t AddArgument(const char * name, chip::Span * value);
- size_t AddArgument(const char * name, AddressWithInterface * out);
- size_t AddArgument(const char * name, int64_t min, uint64_t max, bool * out)
+ size_t AddArgument(const char * name, chip::ByteSpan * value, uint8_t flags = 0);
+ size_t AddArgument(const char * name, chip::Span * value, uint8_t flags = 0);
+ size_t AddArgument(const char * name, AddressWithInterface * out, uint8_t flags = 0);
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, bool * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast(out), Boolean);
+ return AddArgument(name, min, max, reinterpret_cast(out), Boolean, flags);
}
- size_t AddArgument(const char * name, int64_t min, uint64_t max, int8_t * out)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, int8_t * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast(out), Number_int8);
+ return AddArgument(name, min, max, reinterpret_cast(out), Number_int8, flags);
}
- size_t AddArgument(const char * name, int64_t min, uint64_t max, int16_t * out)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, int16_t * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast(out), Number_int16);
+ return AddArgument(name, min, max, reinterpret_cast(out), Number_int16, flags);
}
- size_t AddArgument(const char * name, int64_t min, uint64_t max, int32_t * out)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, int32_t * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast(out), Number_int32);
+ return AddArgument(name, min, max, reinterpret_cast(out), Number_int32, flags);
}
- size_t AddArgument(const char * name, int64_t min, uint64_t max, int64_t * out)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, int64_t * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast(out), Number_int64);
+ return AddArgument(name, min, max, reinterpret_cast(out), Number_int64, flags);
}
- size_t AddArgument(const char * name, int64_t min, uint64_t max, uint8_t * out)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, uint8_t * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast(out), Number_uint8);
+ return AddArgument(name, min, max, reinterpret_cast(out), Number_uint8, flags);
}
- size_t AddArgument(const char * name, int64_t min, uint64_t max, uint16_t * out)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, uint16_t * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast(out), Number_uint16);
+ return AddArgument(name, min, max, reinterpret_cast(out), Number_uint16, flags);
}
- size_t AddArgument(const char * name, int64_t min, uint64_t max, uint32_t * out)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, uint32_t * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast(out), Number_uint32);
+ return AddArgument(name, min, max, reinterpret_cast(out), Number_uint32, flags);
}
- size_t AddArgument(const char * name, int64_t min, uint64_t max, uint64_t * out)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, uint64_t * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast(out), Number_uint64);
+ return AddArgument(name, min, max, reinterpret_cast(out), Number_uint64, flags);
}
+ size_t AddArgument(const char * name, float min, float max, float * out, uint8_t flags = 0);
+ size_t AddArgument(const char * name, double min, double max, double * out, uint8_t flags = 0);
+
template ::value>>
- size_t AddArgument(const char * name, int64_t min, uint64_t max, T * out)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, T * out, uint8_t flags = 0)
{
- return AddArgument(name, min, max, reinterpret_cast *>(out));
+ return AddArgument(name, min, max, reinterpret_cast *>(out), flags);
}
template
size_t AddArgument(const char * name, chip::Optional * value)
{
- // We always require our args to be provided for the moment.
- return AddArgument(name, &value->Emplace());
+ return AddArgument(name, reinterpret_cast(value), Argument::kOptional);
}
template
size_t AddArgument(const char * name, int64_t min, uint64_t max, chip::Optional * value)
{
- // We always require our args to be provided for the moment.
- return AddArgument(name, min, max, &value->Emplace());
+ return AddArgument(name, min, max, reinterpret_cast(value), Argument::kOptional);
}
template
- size_t AddArgument(const char * name, chip::app::DataModel::Nullable * value)
+ size_t AddArgument(const char * name, chip::app::DataModel::Nullable * value, uint8_t flags = 0)
{
- // We always require our args to be provided for the moment.
- return AddArgument(name, &value->SetNonNull());
+ return AddArgument(name, reinterpret_cast(value), flags | Argument::kNullable);
}
template
- size_t AddArgument(const char * name, int64_t min, uint64_t max, chip::app::DataModel::Nullable * value)
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, chip::app::DataModel::Nullable * value, uint8_t flags = 0)
+ {
+ return AddArgument(name, min, max, reinterpret_cast(value), flags | Argument::kNullable);
+ }
+
+ size_t AddArgument(const char * name, float min, float max, chip::app::DataModel::Nullable * value, uint8_t flags = 0)
+ {
+ return AddArgument(name, min, max, reinterpret_cast(value), flags | Argument::kNullable);
+ }
+
+ size_t AddArgument(const char * name, double min, double max, chip::app::DataModel::Nullable * value, uint8_t flags = 0)
{
- // We always require our args to be provided for the moment.
- return AddArgument(name, min, max, &value->SetNonNull());
+ return AddArgument(name, min, max, reinterpret_cast(value), flags | Argument::kNullable);
}
virtual CHIP_ERROR Run() = 0;
private:
bool InitArgument(size_t argIndex, char * argValue);
- size_t AddArgument(const char * name, int64_t min, uint64_t max, void * out, ArgumentType type);
- size_t AddArgument(const char * name, int64_t min, uint64_t max, void * out);
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, void * out, ArgumentType type, uint8_t flags);
+ size_t AddArgument(const char * name, int64_t min, uint64_t max, void * out, uint8_t flags);
+
+ /**
+ * Add the Argument to our list. This preserves the property that all
+ * optional arguments come at the end of the list.
+ */
+ size_t AddArgumentToList(Argument && argument);
const char * mName = nullptr;
std::vector mArgs;
diff --git a/examples/chip-tool/commands/common/CommandInvoker.h b/examples/chip-tool/commands/common/CommandInvoker.h
new file mode 100644
index 00000000000000..6583cc9124280e
--- /dev/null
+++ b/examples/chip-tool/commands/common/CommandInvoker.h
@@ -0,0 +1,234 @@
+/*
+ * Copyright (c) 2021 Project CHIP Authors
+ * All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace chip {
+namespace Controller {
+namespace detail {
+template
+class ResponseReceiver : public app::CommandSender::Callback
+{
+public:
+ using SuccessCallback = void (*)(void * context, const ResponseType & data);
+ using FailureCallback = void (*)(void * context, EmberAfStatus status);
+
+ virtual ~ResponseReceiver() {}
+
+protected:
+ ResponseReceiver(void * aContext, SuccessCallback aOnSuccess, FailureCallback aOnError) :
+ mContext(aContext), mOnSuccess(aOnSuccess), mOnError(aOnError)
+ {}
+
+ inline void OnResponse(app::CommandSender * aCommandSender, const app::ConcreteCommandPath & aPath,
+ const app::StatusIB & aStatus, TLV::TLVReader * aData) override;
+
+ void OnError(const app::CommandSender * aCommandSender, const app::StatusIB & aStatus, CHIP_ERROR aError) override
+ {
+ mOnError(mContext, app::ToEmberAfStatus(aStatus.mStatus));
+ }
+
+ void OnDone(app::CommandSender * aCommandSender) override
+ {
+ Platform::Delete(aCommandSender);
+ Platform::Delete(this);
+ }
+
+private:
+ void * mContext;
+ SuccessCallback mOnSuccess;
+ FailureCallback mOnError;
+};
+
+template
+class CommandInvoker final : public ResponseReceiver
+{
+ using Super = ResponseReceiver;
+
+public:
+ CommandInvoker(void * aContext, typename Super::SuccessCallback aOnSuccess, typename Super::FailureCallback aOnError) :
+ Super(aContext, aOnSuccess, aOnError)
+ {}
+
+ /**
+ * Use of CommandInvoker looks as follows:
+ *
+ * auto invoker = CommandInvoker::Alloc(args);
+ * VerifyOrReturnError(invoker != nullptr, CHIP_ERROR_NO_MEMORY);
+ * ReturnErrorOnFailure(invoker->InvokeCommand(args));
+ * invoker.release(); // The invoker will deallocate itself now.
+ */
+ static auto Alloc(void * aContext, typename Super::SuccessCallback aOnSuccess, typename Super::FailureCallback aOnError)
+ {
+ return Platform::MakeUnique(aContext, aOnSuccess, aOnError);
+ }
+
+ CHIP_ERROR InvokeCommand(DeviceProxy * aDevice, EndpointId aEndpoint, const RequestType & aRequestData,
+ const Optional & aTimedInvokeTimeoutMs)
+ {
+ app::CommandPathParams commandPath = { aEndpoint, 0 /* groupId */, RequestType::GetClusterId(), RequestType::GetCommandId(),
+ (app::CommandPathFlags::kEndpointIdValid) };
+ auto commandSender =
+ Platform::MakeUnique(this, aDevice->GetExchangeManager(), aTimedInvokeTimeoutMs.HasValue());
+ VerifyOrReturnError(commandSender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ ReturnErrorOnFailure(commandSender->AddRequestDataNoTimedCheck(commandPath, aRequestData, aTimedInvokeTimeoutMs));
+ ReturnErrorOnFailure(commandSender->SendCommandRequest(aDevice->GetSecureSession().Value()));
+ commandSender.release();
+ return CHIP_NO_ERROR;
+ }
+
+ CHIP_ERROR InvokeGroupCommand(DeviceProxy * aDevice, GroupId groupId, const RequestType & aRequestData)
+ {
+ app::CommandPathParams commandPath = { 0 /* endpoint */, groupId, RequestType::GetClusterId(), RequestType::GetCommandId(),
+ (app::CommandPathFlags::kGroupIdValid) };
+
+ auto commandSender = Platform::MakeUnique(this, aDevice->GetExchangeManager());
+ VerifyOrReturnError(commandSender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+ ReturnErrorOnFailure(commandSender->AddRequestData(commandPath, aRequestData));
+
+ if (aDevice->GetSecureSession().HasValue())
+ {
+ SessionHandle session = aDevice->GetSecureSession().Value();
+ session.SetGroupId(groupId);
+
+ if (!session.IsGroupSession())
+ {
+ return CHIP_ERROR_INCORRECT_STATE;
+ }
+
+ ReturnErrorOnFailure(commandSender->SendCommandRequest(session));
+ }
+ else
+ {
+ // something fishy is going on
+ return CHIP_ERROR_INCORRECT_STATE;
+ }
+
+ commandSender.release();
+ return CHIP_NO_ERROR;
+ }
+};
+
+template
+void ResponseReceiver::OnResponse(app::CommandSender * aCommandSender, const app::ConcreteCommandPath & aPath,
+ const app::StatusIB & aStatus, TLV::TLVReader * aData)
+{
+ ResponseType response;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+
+ //
+ // We're expecting response data in this variant of OnResponse. Consequently, aReader should always be
+ // non-null. If it is, it means we received a success status code instead, which is not what was expected.
+ //
+ VerifyOrExit(aData != nullptr, err = CHIP_ERROR_SCHEMA_MISMATCH);
+
+ //
+ // Validate that the data response we received matches what we expect in terms of its cluster and command IDs.
+ //
+ VerifyOrExit(aPath.mClusterId == ResponseType::GetClusterId() && aPath.mCommandId == ResponseType::GetCommandId(),
+ err = CHIP_ERROR_SCHEMA_MISMATCH);
+
+ err = app::DataModel::Decode(*aData, response);
+ SuccessOrExit(err);
+
+ mOnSuccess(mContext, response);
+
+exit:
+ if (err != CHIP_NO_ERROR)
+ {
+ mOnError(mContext, app::ToEmberAfStatus(Protocols::InteractionModel::Status::Failure));
+ }
+}
+
+template <>
+inline void ResponseReceiver::OnResponse(app::CommandSender * aCommandSender,
+ const app::ConcreteCommandPath & aPath,
+ const app::StatusIB & aStatus, TLV::TLVReader * aData)
+{
+ //
+ // If we got a valid reader, it means we received response data that we were not expecting to receive.
+ //
+ if (aData != nullptr)
+ {
+ mOnError(mContext, app::ToEmberAfStatus(Protocols::InteractionModel::Status::Failure));
+ return;
+ }
+
+ app::DataModel::NullObjectType nullResp;
+ mOnSuccess(mContext, nullResp);
+}
+
+} // namespace detail
+
+template
+CHIP_ERROR InvokeCommand(DeviceProxy * aDevice, void * aContext,
+ typename detail::CommandInvoker::SuccessCallback aSuccessCallback,
+ typename detail::CommandInvoker::FailureCallback aFailureCallback, EndpointId aEndpoint,
+ const RequestType & aRequestData, const Optional & aTimedInvokeTimeoutMs)
+{
+ auto invoker = detail::CommandInvoker::Alloc(aContext, aSuccessCallback, aFailureCallback);
+ VerifyOrReturnError(invoker != nullptr, CHIP_ERROR_NO_MEMORY);
+ ReturnErrorOnFailure(invoker->InvokeCommand(aDevice, aEndpoint, aRequestData, aTimedInvokeTimeoutMs));
+ invoker.release();
+ return CHIP_NO_ERROR;
+}
+
+template
+CHIP_ERROR InvokeCommand(DeviceProxy * aDevice, void * aContext,
+ typename detail::CommandInvoker::SuccessCallback aSuccessCallback,
+ typename detail::CommandInvoker::FailureCallback aFailureCallback, EndpointId aEndpoint,
+ const RequestType & aRequestData, uint16_t aTimedInvokeTimeoutMs)
+{
+ return InvokeCommand(aDevice, aContext, aSuccessCallback, aFailureCallback, aEndpoint, aRequestData,
+ MakeOptional(aTimedInvokeTimeoutMs));
+}
+
+template = 0>
+CHIP_ERROR InvokeCommand(DeviceProxy * aDevice, void * aContext,
+ typename detail::CommandInvoker::SuccessCallback aSuccessCallback,
+ typename detail::CommandInvoker::FailureCallback aFailureCallback, EndpointId aEndpoint,
+ const RequestType & aRequestData)
+{
+ return InvokeCommand(aDevice, aContext, aSuccessCallback, aFailureCallback, aEndpoint, aRequestData, NullOptional);
+}
+
+// Group commands can't do timed invoke in a meaningful way.
+template